MyEclipse_UML_建模
4 5 5 6 2 317.517.617.717.4.517.4.617.4.717.4.8常见问题小结......参考资料绘图工具 用例图(Use Case Diagram) 活动图(Activity Diagram ) 序列图(Sequenee Diagram ) niiiM 17181820212222第十七章 MyEclipse UML建模第十七章 MyEclipse UML 建模 117.1介绍 117.1.1 UML概念及常见建模工具 117.1.2 MyEclipse 的 UML 工具 217.2系统需求 417.3创建UML模型仓库 17.4 创建及修改UML 图 1741 创建UML图形 1742类图和常见修改功能 1743正向工程-UML类图生成Java代码1744反向工程-Java代码生成UML类图17.1介绍UML 是什么?在回 银杏树,好了,现在让几 银杏树,你猜会出现什么■MHWWW饋 wwwt 撮耀 & Hfc17.1.1 UML概念及常见建模工具:::!-'::::::::-:««»答这个问题之前,请您思考这样一种现象路边有一棵很大很粗的 个从事不同职业的人,或者是操不同方言的人,来给别人介绍这棵 样的情况?考古者会说:哦,这是一棵古树,很有科研价值,对于研究这一带的地志迁移很有帮助, 假设用无缝取样法看看年轮, 甚至能了解几百年来的气候变迁。
农民朋友会说:这是一棵长势喜人的银杏树,不过银杏是雌雄异株,嫁接上对应性别 的枝条后,能够收成很多银杏生物学家会说:银杏( Gin kgo Liloba L.),植物界,裸子植物门,银杏纲,银杏目,银杏科,银杏属,银杏种,俗称白果,公孙树……当然,如 果是外国人来介绍银杏,则另是一番情况最后,请各位把见到的银杏树画出来,那估计又 是各有千秋,甚至如果碰到印象派画家,画出来的图让你都认不出这还是棵银杏因为,人们表达自己的形式是千奇百怪的,在软件行业,也是如此在 UML之前,各式各样的图表被用来描述软件系统,这带来了知识交流过程中的阻碍 UML的提出,就是为了部分的解决软件系统的描述问题好了,现在我们就用专业点的属于来介绍 UML :统一建模语言(Unified Modeling Language , UML ),是一种直观化、明确化、构建和文档化软件系统产物的通用可视化建模语言它捕捉了被构建系统的有关决策和理解, 用来理解、设计、浏览、配置、维护以及控制系统的信息,可以与所有的开发方法、生命阶段、应用领域和媒介一同1 刘长炯著使用简言之,就是一组标准化的可扩展的可视化建模语言,结果表现为图形,注意它不是 一门编程语言,只用来描述系统,不能用来开发和实现系统功能。
1997年,OMG组织(Object Management Group 对象管理组织)发布了统一建模语言 UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用 UML提出了一套IT专业人员期待多年的统一的标准建模符号通过使用 UML,这些人员能够阅读和交流系统架构和设计规划--就像建筑工人多年来所使用的建筑设计图一样 截至到目前为止,UML已经推出了 2.0版本,在企业中获得了广泛的应用 当然,它也有一些缺陷,例如一些新的软件结构,如SOA等,就无法用 UML描述另外,还有个很重要的地方就是 UML并没有规定图的颜色,但是也没规定UML图不能带彩色,因此, UML的图主要在于形状,颜色本质上是黑白的常见的UML建模工具比较多用的最多的当属 Rational Rose (现在被IBM收购),它的特点主要是老牌,出来的图看着比较正规, 不过和工具的整合不够紧密, 是商业的收费软曙廊殛■换删更聲件另外还有Borland Together,它的最强大的功能当属动态的代码和图形同步功能,即从 代码生成图,并且代码改动或者图改动后,都会同步到对应的地方,这个几乎是无人能及, 在生成顺序图等功能上也是很强大的,它是用 Java语言开发的,有 Borland Together forEclipse这样的版本,便于在Eclipse下使用。
还有一款就是 Sybase囲出品的Power Designer , 它的主要特色就是数据库建模和 UML建模合二为一,可以从数据库生成模型,也可以从模型生成数据库代码,是公司数据库管理员必备软件,可惜也是商业收费的微软 Office的Visio也能进行UML建模,只可惜,出来的图不甚标准,也无法从图生成原型代码开源的 UML建模工具中,用的比较广泛的当属 ArgoUML,实际上MyEclipse的也是基于它二次开 发了一下而已另外,Netbeans 6也提供了 也有对应的UML插件,然而多数都是收费软件(这当属 Eclipse社区被大公司控制的必然结局),读者可以自行搜索,或者使用参考资料中介绍的一款 EclipseUML,以及一款国产的 UML建模软件当然还有很多的免费 UML建模工具可以使用,通过 Google搜索即可m ■■ - -rjm-« mt :*我■a hu-tl Qi* iJife i图17.1 典型UML建模工具界面17.1.2 MyEclipse 的 UML 工具MyEclipse 的UML建模工具实际上是基于 ArgoUML开发的,并加入了反向工程和正 向工程的能力,可以从代码生成 UML图或者从图生成代码。
MyEclipse UML 为开发人员提 供了下面的UML功能:4 刘长炯著? UML图:用例图,类图,序列图,协作图,状态图,活动图,部属图? 集成的图片编辑器,大纲视图和属性视图? UML透视图? 不限位置的绘制工具? 通过热区直接编辑接点和连接内容? 图片保存在 UML Model Repository ( UML模型仓库)文件中 (例如cardemo.umr)? 包含UML模型文件的项目类型以及文件存储位置不受限制? 从模型生成Java代码? 导出图形为图片文件,支持多种格式:GIF、PNG、PS、EPS 和 SVGMyEclipse J2EE 或者Eclipse Java 项目生成类图批量反向工程处理任何项目或者源代码目录, Java包或者单独类的组合从Eclipse的Package Explorer 透视图拖拽任何 Java类或者接口添加进UML类图上 冷用站自定义反向工程设置 卓秦薔? 从任何? 从Outline视图将任何UML元素拖放到任何兼容的 UML图中::;::::::: ::::::::::::?对类图进行自动布局另外,MyEclipse还提供了专门的UML透视图,来便于进行牌UML的设计工作。
MyEclipseUML透视图提供了精心调整过的的界面组织来方便进行建模活动Diagram Editor ( UML 图形编辑器),Outline (大纲)视性)视图工具栏上的操作按钮进行了调整和增加,妣址这样依赖使创建新图的过程快速和方便、、的多图17.2列出了对各部分进行了标示的 UML透视图从 '视图包括 UML BW HI _圏,已经自定义的 Properties (属图 17.2 MyEclipse UML 透视图6 刘长炯著5::.錢MyEclipse UML 使用一种特殊的文件格式来保存所有的 UML丨一文件中,即 UML Model Repository (UMR) °UMR 文件的后缀是".u Explorer视图中以图标 一的方式进行区分显示在 Eclipse项目中可I 文件其实UMR文件的真实存储格式是 打开,就跟JAR文件的存储格式差不多使用MyEclipse UML 创建图形的第一步工作,就是用新建 UML向导来创建一个 UML模型仓库文件(UMR )为了方便起见,我们事先已经创建了一个名为 UMLTest的Java项具体步骤如下:启动新建UMR向导可以通过使用菜单彳以及模型元素到单■ "Ms-',并且在PackageU建任意多个 UMRZIP,可以使用7Zip,WinZP,WinRAR等软件:™1 庄 Hoot HHook Hoi I:目。
1.! > New > UML Model Repository或者点击工具栏上的按钮■,也可UML模型文件的向导17.2系统需求由于MyEclipse集成ArgoUML实现UML的开发功能,而 ArgoUML当前版本则需要 JDK/JRE1.5或者更高版本,因此必须安装这些版本的 JDK/JRE之后运行MyEclipse才可使用当然 MyEclipse All IN One 版本本身已经自带了 JRE 1.5,无需额外配置对操作系 统的支持上,则致辞 Windows Vista ,XP,2003和2000以及Linux,而苹果的 Mac系统 则不支持,这是因为SWT本身的一个向SWT中插入Swing组件的Bug所导致的本书中 的例子和截图均在 Windows XP 中文版SP2下运行和测试17.3创建UML模型仓库7(UML模型仓库)一栏中,输入文件名,在UML 良模型名称)一栏中,输入想要的名字此过程可以参考图D1agram_centric-F defaultClass Di agr am 1Outline 盘 囿"2.在Enter or select the pare nt folder (输入或者选择父目录)一栏中选中要保存文件的项目,在 UML Model Repository Root Model Name (17.3 进行相关的设置。
£:::::::*::::[##图17.3新建UMR向导及空模型文件3.选择Finish按钮,关闭向导对话框,并在刚指定的位置下创建 UML文件,稍后MyEclipse 会启动UML Diagram Editor ( UML图形编辑器)默认情况下新建的刘长炯著#UMR文件只有一个空的类图,参考图 17.3右侧大纲视图4.切换MyEclipse透视图为 MyEclipse UML ,这样便于修改和创建 UML图17.4创建及修改UML图100%的详细介绍,图的种 这样省出的篇幅,用于加本节我们会简单介绍常见的几种 UML图形的概念以及创建方式由于本书重点在于MyEclipse的工具使用上,所以 UML的概念我们并没有打算做 类也选择了常用的几种, 其它的读者可以自行查找资料进行学习事 SSSS9入后续章节的其它内容,给读者提供更多方面的参考资料17.4.1创建UML图形单个UML模型文件可以包含任意数目的和任何类型的 UML图形需要在编辑器中打开 UML文件,然后从编辑器工具栏上左数第一个按钮,从 择要建的图的类型即可,参考图 类似按钮,也可以创建图形,参考图 这一特征,如果你想和别人分享做好的 他安装有 MyEclipse 或者Argo UML17.4。
另外还可以从OutlineI織勰濺鶴 忝加图形, 表中选(大纲)视图下点击视图中的Mart 81881 SB*i 17.1由于UML模型,把这个文件发给对方即可(当然前提是wyytwyyysHtwyyysiy来查看它) 应17.2支持的UML图形列表列表则参考表\ H D S - f E[X| New Use Case Diagram .购 New Sequence Diagram 直]New Stafcechart Diagram 囹 New Activity Diagram 面 New Deployment Di日gram 團 New 匚ollaboation Diagram图17.4使用编辑器器工具栏来创建图形E用例图类图序列图也— 协作图ffi状态图ffi活动图部署图表17.1 可以创建的UML图类型列表当一个模型文件中加入了多个图之后, 如何进行切换到想编辑的图呢?有两个地方可以进行图之间的切换: 第一个地方是在大纲视图, 双击需要修改的图的名字即可; 另一个地方就是在打开的图的编辑器的工具栏上,有一个下拉的列表可以切换图此过程请参考图□* Outline £3 'EHD i agr am~ c entr i cVagr am 1Case Si agram 1下 defaultClass Di3Usft17.5 。
图17.5在大纲和编辑器中切换多个图向编辑器的图中加入工具栏上的组件按钮可进入元素,要退出此模式可以点击编辑器工具栏上的光标状带有下拉列表选择的功能,]可另外, 「的的内容中,笔者将会对各种类图的概念,图形特点和创建方式逐一进行介绍 茂弱如果要将绘制的图形导出为图片文件,也比较容易,在编辑器的画布 然后选择菜单Export as image ,接着在弹出的对话框中输入要保 路径即可,支持这些导出格式: PNG,GIF,过的 PostScript )和 SVG ( Scalable Vector Graphics ,的图片可以用作图软件来处理,或者插入到文档或者网页中进行显示—瀾鑽融i白处右键点击, 片文件名以及存储(封装H缩矢量图形)格式这样导出 示PostScript总,Encapsulated PostScript17.4.2类图和常见修改功能UML元素可以通过单击编辑器工具栏上的按钮来完成,另外双击 Mass Add (批量添加)模式,此时每点击一次画布就’' Select (选择)按钮 * 例如矩形绘制,也可以进入批量添加模式在后面几9 刘长炯著# 刘长炯著实际建模时候,大概类图是最经常用到的一种图形了。
类图表示不同的实体(人、事物mTiTiiiTiTmrrmTir订单, 商品,顾客,经理,管理员,账户等等團的接口在 Java语言中,几乎所有的类,都可以用类图来 :确定词,是因为 UML本身有其局限性,例如下面的例子就无 (模拟人和眼睛的关系):和数据)如何彼此相关;换句话说,它显示了系统的静态结构类图可用于表示逻辑类,逻 辑类通常就是业务人员所谈及的事物种类 类图也可以表现面向对象中提; 表示,之所以用了几乎这个不确 法准确的用UML表示出来(public class Person {class Eye {}样的结构在 Java中随处可见,是内部类,但是却无法用 UML很好的表示出来类似的其法很好的用UML表示,不过,按照 UML的规定,开发工具可以自行扩充模型后来对这些艺内容还有 Web服务,JSP等严格说也可以作为类描述的 Java模块,但是这些都无内容进行建模类图上使用包含三个部分的矩形来描述, 如图17.6所示最上面的部分显示类的名称,中间部分包含类的属性(成员变量)列表,最下面的部分包含类的操作(或者说 "方法"、函数)列表 当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示系统的高层架构时,下面的两个区域是不必要的) 。
位于类图最顶部的,是类名类名上可以显示图标,也可以不显示,这是可选的功能, 同理所有的UML图都可以拥有定制的图标,这是可以扩展到内容类的属性栏(中部区域)在分隔线上列出类的属性列表属性节是可选择的每个属性 的定义使用如下格式:10 刘长炯著n ame : attribute type即 名称:属性 类型例如图中的变量定义 username:String,是类型在后,属性名在前, 等价于String username 这样的Java代码如果此模型和实际的编程语言无关,作为业务Student□ username : 5ti ing□旳杞:I ri电孕 <
类操作列表位于类图长方形的第三个(最底部)区域中,类的操作以列表显示操作使用下列格式定义:n ame(parameter list) : type of value retur ned即:操作名(参数列表):返回值类型构造器也包含在操 <
例如图 17.7中,类Cat继承自Animal另外,类和类之间还可以有关联关系等,例如一个家庭对应多只猫 双向关联关系已实现的方式连接,并在线上显示关联类型例如图中的 House关联着多只Cat表17.2列出了双向关联中的可能只所表示的含义的描述信息 如果是单向关联,贝U用12 刘长炯著不封闭的单向箭头来表示:-从一个类连接到另一个类此外还可以有聚合等关系,我们IBM网站中的文章获得更多信息MyEclipse生成的图使用不同的和 Eclipse中一致的图标来表 般是按照UML的规范来使用记号来标识的),但是它要求为 为了在类图上的显示可见性,放置可见性标志于属性或操作的名字. 四种可见性类型,但是实际的编程语言可能增加额外的可见性,或: 可见性表+username:Stri ng 这样的属性定义名字空间中,这有些象文件系统中的文件夹ssflss flsss个软件包都表现系统的一个特定部分时软件包在 文件夹头部显示包名,文件夹中包含类或者接口图解,尤其是在彳进行显示,并彳 含两个类的软件包lang由lang表示含义0..10个或1个1只能1个0..*0个或多个*0个或多个1..*1个或我个3只能3个0..50到5个5..155至U 15个JEr A" J ■ .U-W就不多做介绍了,有兴趣的读者可以阅读参考资料中的表17.2双向关联中可能的多重值描述另外一个很重要的概念就是 可见性。
在面向对象的设计中,存在属性及操作可见性的记号UML识别四种类型的可见性: public, protected , private及package (和Java中的内容对应的非常好)UML规范并不要求属性及操作可见性必须显示在类图上(其实 ::零鑿癡示可见性了,但是别的工具一:t:t y?:y:令》:-:«« ««■>:««■:「每个属性及操作定义可见性虽然 UML指定:者不支持 UML 定义的17.3显示了 UML 支持的可见性类型的不同标志可见性的例子如:标志HBWliBF可见性类型+ Public. UJ RRR.I. UMMMIM# Protected 髒礬劉• ••••「'" -Private :::卷絲緞觀 riivdiu ::::::邀轍〜Package鏤轆錢『acKag晶.灘糠越表17.3可见性列表簽豫簽蜜蜜魏麟鑿遨餐{在Java的开发中,经常会遇到包(Package )这个概念UML中也支持类似的概念: 软件包,用来将多个相关的类或者接口组织在一块 软件包使建模者能够组织模型分类器到把一个系统分为多个软件包使系统变成容易理UML中以文件夹的方式 17.8中列出了一个包图17.8软件包及注释另外,和常见的编程语言支持注释一样, UML也支持注释(Comment),如图17.8右侧即是一个注释元素以及注释关联线。
注释可以加到任何对象上图标英文提示说明Select恢复为准备选中状态-TVBroom扫帚(点击后向各个方向拖动 可以使图形对齐)New Package新建包目New Class新建类—▼New Associati on新建关联等关系(卜拉选择)TNew Gen eralizati on新建泛化类(继承)■冷 M-;曰New In terface新建接口New Realizati on新建实现类 H£!!!g|New Depe ndency新建依赖类(下拉选择)测BNew Attribute新建属性目New Operati on亠厂7丄口 /圧::::::::::::::::::::: 新建操作^—ANew Associatio n Class•新建关联类 新建关联类1~■uNew Comme nt ||||||||新建注释■ta ■・New Comme nt Li nky新建注释连接F »1 1New Recta ngle■ ■ ■撕建方形(下拉选择)'IZoom In放大- I IZoom Out缩小!工具栏现在关于UML的概念已经做了这么多的介绍,接下来就来看看在 MyEclipse中如何绘制类图。
首先自然是打开新建的 Class图,然后可以看到 UML编辑器的工具栏按钮列表:» wOC '-i;'* OOM o®CpC wM C表17.4类图编辑器□□□c HBcii" KKqc Kik qc BOBc 1"1"i_i.iV QQQc L'l".QqqC LL 毀豫簽邂鹫爨g ■3353 ESS Sltt 劇■BSH w 辻j丈辻竝耀枇战ft Bl卑18坎在这些工具栏中,最常用的当属类图编辑功能了点击UML编辑器工具栏上的三按钮14 刘长炯著MyEclipse的术语叫- 辑区域,例如关联类的连 入框输入框内可以直 区内地修改使之生效, 示原来被编辑的UML内容 关于类图编辑和热区,可以参考图需 SKSS SKSSff SSKS SR―ttlW ■OOv- ■ 接输入可以点击文字热区之外的任何地方即可,.a. 1&A二|Cls5ElA - >f|即可创建一个新的类双击类图的三个方框的空白处:类名,属性列表和操作列表处,即可 快速修改类名或者加入新的属性和操作定义 如果双击已经存在的属性或者操作定义, 则可以变为文本输入框,进入修改模式来修改基本上所有的 UML元素都支持此种修改方式,ot-zone (文字热区)。
文字热区是节点或者连接点的中间的可编 叮间,通过双击可以激活激活后,热区内显示方形的可编辑输 、文本,也支持删除、复制、粘贴、剪切带操作要提交文字热 随后编辑区消失并代之以显17.9边界处的技钮可以協速加 入奚联的芙或者子笑等双击三个方框空白处可快 塗添加歳俭灰内容 类名属性操作图17.9 快速编辑类,连接区和编辑区和 Text hot-zo ne另外一种热区, Conn ection hot-zo ne ,即连接热区,它位于哪里呢?它位于类图的四周,鼠标移过时可以看到多出的几个按钮,一般提供连接到节点的一些关联类,自关联, 子类,依赖等等,可以点击按钮到另一个节点来完成连接, 也可以只单击按钮自动生成一个:::对应的关联类要修改图形的大小,需要把鼠标放到图形的四个角上的某一个,出现黑色的小方块后,Il| 拖动即可调节其大小(不过图有个最小值,不能调节的比最小值还小) 用鼠标画框的方式选中需要移动的元素, 然后再其中的任意一个元素上点击图形的位置最后一个和编辑有关的就是 对应的可以修改的属性值,如图要移动兀即可移动Properties (属性)视图,当选中不同的■-■-■-■-■rt ■-■-■-■-■-■-■-■rt "-■-■-■J "I 17.10所示。
例如选中类強A中的属性后:J元素时,会显示,此时 Properties15 刘长炯著示所有可以修改,限)Properties标签下的工具栏,可以处理一些操作例如转到上级 Attribute),新建数据类型 (New Datatype),新建版(Delete from Model )等等在Name输入框中可以 In itial Value 中可以输入初始值, VisibilityPublic (公开的)和 Private (私有的) Modifiers中则可以修改修饰符实际上每:-二或•亠士 -it兀素都€ T Asks CoEkEolAHodhfi *tr e:I | S talijE:□ ftrop-ikrtLdx. S3 1 Pro'Ll m-l视图如图17.10所示Properties视图中也可以编辑对应的值, 并且以多页标签的方式来显添加或者删除的内容(相对比下,在编辑器的画布上能改的属性则非常有(Go Up),新建属性(New ||(New Stereotype),以及删除模型攵属性名,Type可以选择数据类型, 屛可见度,包括 Protected(受保护的),han geability中则可以选择是否为可以修改的值。
它自己特定的属性,但大部分都是用 不到的属性,所以我们就不打算在这里做完整的介绍了K H曰目一■亍曰竿图 17.10 UML Properties 视图Properties 视图中另外一个相对固定的标签页就是 Ducume ntation (文档),可以用来给每个UML的元素撰写一些说明文档(实际上这些内容是和 JavaDoc中的标记所对应的,因为MyEclipse或者ArgoUML毕竟是Java语言开发的嘛)在这一页,Author框输入作 者信息,Version框输入版本,Since框输入什么时候开始有, Deprecated则指示是否为废錢側鶴聖■蠻發駅F弃的类或者属性等信息, See则输入参考信息,Documentation则输入详细的注释信息图 17.11 Ducume ntation 标签tion 标签旨定是否显示属当选中图形的最外层时,例如直接选中类图本身,此时就可以修改 下和图形显示有关的属性了 Display (显示)右侧的两个复选框分别可以指■ ,,, JBDWJ XMWO ;ix,y,width,height,即:横坐标,纵坐标,宽度,高度需要说明下在计算Body Fill Color 指定了图形 中位于最上侧,即类名显17.12所示。
性(Attributes )和操作(Operations)列表Bounds (边界)则指定图形的坐标和大小,坐 标的格式是: 机绘图中,坐标的起点一般都是左上角,也即( 0, 0)这个点的主体填充色彩Header Fill Color则指定了头部填充色彩(类 示处)Line则指定了线条(一般是边框等)的显示颜色如图 ;壬曲A Prcperti ex A Document at i oil { A Fr«sentaticiii ▲匚 oh i ii ■■ i ii ii in n 3i nil it ii hi ■■ n i i !Bi splay:[^1 Attributes 0 Operiti onsBounds^12D, 168# 142, BOBody Fill Color :Header Fill Col:Line:图 17.12 Prese ntatio n 标签OOOOw OKK OOOOw OotmS™"最后两个标 删除和修改一些I□Her COZ'Z COZO'ozoz co WMWW WM WO是 Constrains 和 Tagged Values Constrains 主要可以给元素添加,I,一般情况下使用不到。
Tagged Values则列出了做了标记的值列表,例如当按照图17.11中设置了文档后,类的 Tagged Values显示的内容列表如图 17.13所示在这个标签的工具栏上可以删除一些标签,还可以双击 Tag (标记)和Value (取值)进行相关值的编辑A Prcp^rti &s A Documentati cii A Fr«s&fttatioTi A Constraints A Tagged ValuesTarget: Class (A) 3Taga-nthorversion1.0fiiuceZ008/0S/0EMtBtus乃 f i ” ble n* t述是卒浪故类图 17.13 Tagged Values 标签好了,关于类图的介绍基本上到此为止现在需要大家做的是练习,开发出如图 17.14所示的UML类图,这个图包括了类,接口以及包和关联关系等可以参考配套视频,然后 自己做一下练习Studentc uMrn-bm* i Slriogc ag i■ SluderJlQ0 Qetlhfirnjfne() i Siring«. «<□:电rnGmeOn uKrrnrrw ; String):• “旳貞〕:【nt«g*FQ鼻卅询訂 粋 ;Integer); 所幸的是,MyEclipse的UML,或者说 ArgoUML「器,都提供正向工程 一从UML类图生成特定语言,例IIIIIHssse SSK yyyt mut tt wsss s在实际的项目开发中,如果设计出来的图不能变成hti rii'i tmlri fi fm ti能大打折扣,说点题外话就是这当中做的最好的当属 Borla nd Together 相生成功能,有时候会出现错误,导致无法完整的产生代码支持直接从孵UML类图中的类定义生成 Java代码操作步骤如下:点点的把对应的代码写出来,第的 以及大多数的专业一点的 UML 如Java,C++等的源代码,比较来说,MyEclipse的这个MyEclipse號茫……1. 打开包含类图的 UML仓库文件(UMR),这些类必须按照 Java的规范进行设计才可生成、Java代码; 一2. 选择菜单 UML > Gen erate Java... ,来启动正向工程(Forward-E ngi neeri ng )向导,如图17.15所示随后,将会弹出如图 可参照图中的箭头提示)图 17.15 选择菜单 Gen erate Java...17.16所示的正向工程向导对话框。 按照下列步骤进行操作即可(也1. 点击对话框中的 Java Output Folder (Java输出目录)右侧的 Browse按钮,在弹出的对话框中选择任何 Java或者J2EE项目的源代码目录(一般名为src),然后点击0K按钮关闭对话框被选中的目录将存放从类图所最终生成的 Java代码2. 在 Gen erate Java source for selected UML Java en tities (生成选中的 UML Java实体的Java源代码)下面的类来列表中,选中一个或者多个需要翻译为 Java代码的类3. 点击Finish按钮来关闭对话框,然后进行代码生成处理过程图亿代UML正向工程向导讒團驟||在稍后可能会出现一些警告和提示的对话框 一般包括:无返回类型的操作定义没有写入 void 类型,例如:setAge(in age:lnteger) 应该加入 void 修改为:setAge(in age:lnteger):void ; 一些非法的关联选项 (虽然画图的时候可以随便来画, 但是生成的时候,务必确保这些关联有实际的意义)这种情况下,对应的 Java代码就不能生成,只有修正了这些问题才能如期产生代码。 还有的时候是 MyEclipse本身的Bug,导致生成的类文件 是空白的总之此功能不是很完备在生成过程结束后,就可以在指定的源代码目录中看到生成的类文件的 Java源码了17.4.4反向工程-Java代码生成UML类图在实际的项目开发中, 就笔者所接触过的情况来说, 经常会出现在项目的末期, 需要交文档的时候,大家纷纷把自己本来没做的 UML设计(本来按照规则是应该在初期进行的)补上来,这时候,从代码生成 UML类图的功能就有用了当然,也有一种情况是,虽然早期进行了 UML设计,然而毕竟计划不如变化,到了项目后期,大多数类的代码早就和设计 的时候有了出入,这时候,都可以用到从代码生成 UML类图的功能MyEclipse 的Java代码到UML反向工程的过程有两种不同的方式可以实现, 包括批量处理模式和拖放模式,下面我们对这两种模式一一进行介绍批量处理模式:该模式下可以把任意 Java项目中源代码目录中的任何选中的类、接口等定义转换成UML的类图(注意不支持从 JSP,HTML之类的文件生成 UML定义)让我们按照下列步骤进行操作:1. 打开原来的测试项目 HibernateDemo,然后在项目 UMLTest中新建一个 UML模型文件HibernateDemo.umr ,并双击并打开这个 UMR文件。 当然也可以选择以前创建的任 何Java或者J2EE项目,只要项目中包含源代码即可来启动MyEclipse UML 反向2. 选择菜单 UML > Reverse Engineer UML from Java...工程向导随后即弹出 UML反向工程向导对话框,如图 17.17所示•叵区IGenerate UML Diagrams from Java CodeChoos#: g comfeinati on *£ pr oj eets# packages; or 匚1鱼筈畫电雪 yon wish to reverse engineerHib*rnateDADTest. j ava-r~|3 Mi'bsrnatel)B src- 叵]田 (default pack也誹)-daoHi b &rna t eS e e s 1 onF ac t ory. j avaStudentBAJO j ava工B as eHi lb emat eDAO. j avaV< Back3.图17・17 UML反向工程向导第一页在向导对话框中选中需要反向工程处理的. …,,选中需一页,如图17.18所示Java包或者类,然后点击 Next按钮进入下Cancel21 刘长炯著' UML Reverse-EngineeringJava Fr^cessingEdiagramsI I Hi de cl ass / interface::::Generate UML Diagrams from Java CodeKovars t-Enjine trin^ cptiJava WIL GenerationModel Java attributes y:④ VWL ittributes '■ 1JML »scci ati onsJiva urrays as: (S1 UML diatatype L_.-' UML multipli city L」n22 刘长炯著# 刘长炯著< EaekFinishCancel# 刘长炯著:::::::繊淋怦嗨4. 在图17.18中进行反向工程的选项设置, 一般情况下保持默认设置即可。 Java Process ( Java 处理)下的选项: Create class diagram /in terface details (隐藏类和接口的 …Gen eratio n (Java UML 生成): attributes ( UML 属性)或者 UML asso Java数组建模为)UML datatyp 一对多)5. 点击 Fi nish稍等片刻后,向过程的执行结果汇总对话框, 并让我们可以选中生成的一个或者多个类图,如图 17.19所示检查 Outline视图中的UML图列表,可以看到反向工程是基本上每个包都生成了一个类图, 而不是像大家想象的那样都把类放到了一张图上 例如_classes和dao_classes这样,双击这两个类文件就基本上还没碰到过什么大问题稍后将 UML导出为在这个例子中就生成了两个新类图: 可以看到生成的类文件了,非常方便 图片,就可以在项目文档中自由的引用了郴靭淋8瑕BB* \ 6 classes were ^dded to th- VML repssi tory. Following class di a詳呦2 were丄 J cr—m—w—WoOC OqOqS WoOOwW图17.18 UML反向工程类图生成设置> 这些设置包括 is (生成类图);Hide class。 以及另一个选项栏目 Java UMLra attribute as (将 Java 属性建模为) UML )ns ( UML 关联);Model Java arrays as (将 Jpe ( UML 数据类型)或者 UML multiplicity 1...n ( UML按钮来开始反向过程处理过程即可看到反sssssssssasssB_dass&5 dao_classesAdditional i can be to a di agram Vy dragging tkem from Outl 1 nevieff to the dieditor. Clthat are not in the Catline view can be added to 电 diby dragging the J^va source file from the Fackage Ek pl or er vi e* and dropping it onto the Bi 也 gr 卯 eii ter,0 总空]$.!;_]亠5.]鱼宣宣色邑..d 1理窓.我血OK图17.19反向工程汇总对话框接下来要介绍的,是反向工程的另一个模式: 拖放模式。 这个模式适合于快速小批量的从Java代码中所定义的类和接口生成对应的 UML类图,可以无缝的将任何 Java类和接口添加到任一个 UML模型的类图中操作步骤如下:1. 从Package Explorer 视图中,选中一个或者多个类或者接口(需要提示大家的是,除了源代码包里面的类可以选中, Library里面的类也可以被选中);2. 鼠标单击并拖动选中的类和接口(不放开鼠标左键移动光标) 放到当前打开的 UML此时将会弹出如图17.18所示的UML反向工程类图生成设置信息, 可,或者按照图17.18后所附带的说明进行定制;点击Finish按钮即可启动生成类图向导3.般取默认值即图形编辑器中的类图,如图 17.20所示;4.当向导结束后,即可看到在类图上生成了对应的类定义,以及其相互关系如图墨It*'-. I. A所小 :::::::::: ::::::::::::蛊 P&ck&ge Explorer 塚U □牛 p Lqi3 %计+ 王 (default package)A也出da.o■ *HiberBia.teDeimo- wnr 揺E|T] KibernateSessi onF actor;01ij】 Student, j a.va+.+IJ] S tudsntBAO. j^va 家j Student- hbm_ 皐ml hibernate, cfg. xml+ 三 JRE System Library [MyEclips ffi = Hibernate 3. 1 Cere Libr^ries & Referenced Libraries- mysql-connec tor"j 犷3. 1 /!-壬 com. mysql. jdbc1+ oio As.ssi~tionFail&dE^c^j ! ® rauraaiRBf&rifiSb w _1LV 1Blob, classJl/tPackageEiplorer J图上層| EaseHibernateDAO. java n I£ ^iseMi ber nateBAD j avBlob, class图17.20拖放类和接口24 刘长炯著® -斤彳 El 目一〒 f B f ? - B S 5 D -- □■处 Q |c0 .tot.q hriA^CMj 2.< MyEclipse UML 包含了一组画图工具,可以用来画一些简单的形状或者是加入文字,这些内容可以放入任意类型的 UML图中绘图工具位于UML编辑器的工具栏上,并且可以通过下拉的方式选择需要绘制的形状,如图17.22左侧图所示当选中了一种图形后, 工具栏上的按。




