MyEclipse6Java开发中文教程 第十七章 MyEclipse UML建模 第十七章 MyEclipse UML建模 171介绍 17.1.1UML概念及常见建模工具 1712 MyEclipse的UML工具 17.2系统需求 17.3创建UML模型仓库 174创建及修改UML图 174.1创建UML图形 244556 1742类图和常见修改功能 1743正向工程-UML类图生成Java代码 12 1744反向工程-Java代码生成UML类图 13 1745绘图工具 1746用例图( Use Case Diagram)…… 1747活动图( Activity Diagram) 1748序列图( Sequence Diagram)… 17.5常见问题 17.6小结 177参考资料 171介绍 1711UML概念及常见建模工具 UML是什么?在回答这个问题之前,请您思考这样一种现象。路边有一棵很大很粗的 银杏树,好了,现在让几个从事不同职业的人,或者是操不同方言的人,来给别人介绍这棵 银杏树,你猜会出现什么样的情况?考古者会说:哦,这是一棵古树,很有科研价值,对于 研究这带的地志迁移很有帮助,假设用无缝取样法看看年轮,甚至能了解几百年来的气候 变迁。农民朋友会说:这是一棵长势喜人的银杏树,不过银杏是雌雄异株,嫁接上对应性别 的枝条后,能够收成很多银杏。生物学家会说:银杏( Ginkgo Biloba L.),植物界,裸 子植物门,银杏纲,银杏目,银杳科,银杏属,银杏种,俗称白果,公孙树。 当然,如 果是外国人来介绍银杏,则另是一番情况。最后,请各位把见到的银杏树画出来,那估计又 是各有千秋,甚至如果碰到印象派画家,画出来的图让你都认不出这还是棵银杏。因为,人 们表达自己的形式是千奇百怪的,在软件行业,也是如此。在UML之前,各式各样的图表 被用来描述软件系统,这带来了知识交流过程中的阻碍。UML的提出,就是为了部分的解 决软件系统的描述问题。好了,现在我们就用专业点的属于来介绍UML:统一建模语言 ( Unified Modeling Language,UML),是一种直观化、明确化、构建和文档化软件系统产 物的通用可视化建模语言。它捕捉了被构建系统的有关决策和理解,用来理解、设计、浏览 配置、维护以及控制系统的信息,可以与所有的开发方法、生命阶段、应用领域和媒介一同 刘长炯著
MyEclipse 6 Java 开发中文教程 1 刘长炯著 第十七章 MyEclipse UML 建模 第十七章 MyEclipse UML 建模 ........................................................................................ 1 17.1 介绍................................................................................................................... 1 17.1.1 UML概念及常见建模工具......................................................................... 1 17.1.2 MyEclipse的UML工具 .............................................................................. 2 17.2 系统需求............................................................................................................ 4 17.3 创建UML模型仓库............................................................................................. 4 17.4 创建及修改UML 图 ........................................................................................... 5 17.4.1 创建UML 图形 ........................................................................................ 5 17.4.2 类图和常见修改功能................................................................................ 6 17.4.3 正向工程 - UML 类图生成Java代码 ..................................................... 12 17.4.4 反向工程 - Java 代码生成UML 类图.................................................... 13 17.4.5 绘图工具................................................................................................ 17 17.4.6 用例图(Use Case Diagram)................................................................... 18 17.4.7 活动图(Activity Diagram) .................................................................. 18 17.4.8 序列图(Sequence Diagram) ............................................................. 20 17.5 常见问题.......................................................................................................... 21 17.6 小结................................................................................................................. 22 17.7 参考资料.......................................................................................................... 22 17.1 介绍 17.1.1 UML 概念及常见建模工具 UML 是什么?在回答这个问题之前,请您思考这样一种现象。路边有一棵很大很粗的 银杏树,好了,现在让几个从事不同职业的人,或者是操不同方言的人,来给别人介绍这棵 银杏树,你猜会出现什么样的情况?考古者会说:哦,这是一棵古树,很有科研价值,对于 研究这一带的地志迁移很有帮助,假设用无缝取样法看看年轮,甚至能了解几百年来的气候 变迁。农民朋友会说:这是一棵长势喜人的银杏树,不过银杏是雌雄异株,嫁接上对应性别 的枝条后,能够收成很多银杏。生物学家会说:银杏(Ginkgo Liloba L.),植物界,裸 子植物门,银杏纲,银杏目,银杏科,银杏属,银杏种,俗称白果,公孙树。……当然,如 果是外国人来介绍银杏,则另是一番情况。最后,请各位把见到的银杏树画出来,那估计又 是各有千秋,甚至如果碰到印象派画家,画出来的图让你都认不出这还是棵银杏。因为,人 们表达自己的形式是千奇百怪的,在软件行业,也是如此。在 UML 之前,各式各样的图表 被用来描述软件系统,这带来了知识交流过程中的阻碍。UML 的提出,就是为了部分的解 决软件系统的描述问题。好了,现在我们就用专业点的属于来介绍 UML:统一建模语言 (Unified Modeling Language,UML),是一种直观化、明确化、构建和文档化软件系统产 物的通用可视化建模语言。它捕捉了被构建系统的有关决策和理解,用来理解、设计、浏览、 配置、维护以及控制系统的信息,可以与所有的开发方法、生命阶段、应用领域和媒介一同
MyEclipse6Jaa开发中文教程 使用。简言之,就是一组标准化的可扩展的可视化建模语言,结果表现为图形,注意它不是 门编程语言,只用来描述系统,不能用来开发和实现系统功能。1997年,OMG组织( Object Management Group对象管理组织)发布了统一建模语言。∪ML的目标之一就是为开发团 队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套T专业人员期待多 年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划 就像建筑工人多年来所使用的建筑设计图一样。截至到目前为止,UML已经推出了20版 本,在企业中获得了广泛的应用。当然,它也有一些缺陷,例如一些新的软件结构,如SOA 等,就无法用UML描述。另外,还有个很重要的地方就是UML并没有规定图的颜色,但 是也没规定UML图不能带彩色,因此,UML的图主要在于形状,颜色本质上是黑白的 常见的UML建模工具比较多。用的最多的当属 Rational rose(现在被BM收购),它 的特点主要是老牌,出来的图看着比较正规,不过和工具的整合不够紧密,是商业的收费软 件。另外还有 Borland Together,它的最强大的功能当属动态的代码和图形同步玏能,即从 代码生成图,并且代码改动或者图改动后,都会同步到对应的地方,这个几乎是无人能及, 在生成顺序图等功能上也是很强大的,它是用Java语言开发的,有 Borland Together for Eclipse这样的版本,便于在 Eclipse下使用。还有一款就是 Sybase出品的 Power Designer, 它的主要特色就是数据库建模和UML建模合二为一,可以从数据库生成模型,也可以从模 型生成数据库代码,是公司数据库管理员必备软件,可惜也是商业收费的。微软Ome的 sio也能进行UML建模,只可惜,出来的图不甚标准,也无法从图生成原型代码。开源的 UML建模工具中,用的比较广泛的当属 ArgoUML,实际上 MyEclipse的也是基于它二次开 发了一下而已。另外, Netbeans6也提供了UML建模功能。 Eclipse也有对应的UML插件, 然而多数都是收费软件(这当属 Eclipse社区被大公司控制的必然结局),读者可以自行搜 索,或者使用参考资料中介绍的一款 EclipseUML,以及一款国产的UML建模软件。当然 还有很多的免费UML建模工具可以使用,通过 Google搜索即可。 色5自已<日 进重 图17.1典型UML建模工具界面 1712 My Eclipse的UML工具 MyEclipse的UML建模工具实际上是基于 ArgoUML开发的,并加入了反向工程和正 向工程的能力,可以从代码生成UML图或者从图生成代码。 MyEclipse UML为开发人员提 供了下面的UML功能: 2 刘长炯著
MyEclipse 6 Java 开发中文教程 2 刘长炯著 使用。简言之,就是一组标准化的可扩展的可视化建模语言,结果表现为图形,注意它不是 一门编程语言,只用来描述系统,不能用来开发和实现系统功能。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 for Eclipse 这样的版本,便于在 Eclipse 下使用。还有一款就是 Sybase 出品的 Power Designer, 它的主要特色就是数据库建模和 UML 建模合二为一,可以从数据库生成模型,也可以从模 型生成数据库代码,是公司数据库管理员必备软件,可惜也是商业收费的。微软 Office 的 Visio 也能进行 UML 建模,只可惜,出来的图不甚标准,也无法从图生成原型代码。开源的 UML 建模工具中,用的比较广泛的当属 ArgoUML,实际上 MyEclipse 的也是基于它二次开 发了一下而已。另外,Netbeans 6 也提供了 UML 建模功能。Eclipse 也有对应的 UML 插件, 然而多数都是收费软件(这当属 Eclipse 社区被大公司控制的必然结局),读者可以自行搜 索,或者使用参考资料中介绍的一款 EclipseUML,以及一款国产的 UML 建模软件。当然 还有很多的免费 UML 建模工具可以使用,通过 Google 搜索即可。 图 17.1 典型 UML 建模工具界面 17.1.2 MyEclipse 的 UML 工具 MyEclipse 的 UML 建模工具实际上是基于 ArgoUML 开发的,并加入了反向工程和正 向工程的能力,可以从代码生成 UML 图或者从图生成代码。MyEclipse UML 为开发人员提 供了下面的 UML 功能:
MyEclipse6Java开发中文教程 UML图:用例图,类图,序列图,协作图,状态图,活动图,部属图 集成的图片编辑器,大纲视图和属性视图 UML透视图 不限位置的绘制工具 通过热区直接编辑接点和连接内容 图片保存在 UML Model Repository(UML模型仓库)文件中(例如 carded.umr) 包含UML模型文件的项目类型以及文件存储位置不受限制 从模型生成Java代码 导出图形为图片文件,支持多种格式:GF、PNG、PS、EPS和SVG 从任何 MyEclipse J2EE或者 Eclipse Java项目生成类图 批量反向工程处理任何项目或者源代码目录,Java包或者单独类的组合 o从 Eclipse的 Package Explorer透视图拖拽任何Java类或者接口添加进 UML类图上 自定义反向工程设置 ·从 Outline视图将任何UML元素拖放到任何兼容的UML图中 对类图进行自动布局 另外, MyEclipse还提供了专门的UML透视图,来便于进行UML的设计工作。 MyEclipse UML透视图提供了精心调整过的的界面组织来方便进行建模活动。默认视图包括UML Diagram Editor(UML图形编辑器), Outline(大纲)视图,已经自定义的 Properties(属 性)视图。工具栏上的操作按钮进行了调整和增加,这样依赖使创建新图的过程快速和方便 的多。图172列出了对各部分进行了标示的UML透视图。 ULIL Hlb I-TEC workbench区 File Edit Navi gate Search Project MyEclipse UL Run Window Help 門·i·◎d· 萝·0·q·虑田⑧·:·的中中 日aBN 圓4已目-个日f↑目早 +-B Referenced Librarie 创建新图形下拉=种出 图形编辑器 dao, umr saNDIEst u模型仓库 》 口 JBossJNDIWeb D Properties x R Problems Tasks B Consoles A Properties A Documentation PResentation Constraints 028大纲视图国于口日目。日属性视图 Di agram-centric 目B IFaeeEibernateDh0 E HibernateSessionFactor 目 StudentDAD studentDAD-> Baseliberna Namespace 白da 日国 eHibernateDAO 图172 MyEclipse UML透视图 刘长炯著
MyEclipse 6 Java 开发中文教程 3 刘长炯著 • UML 图: 用例图,类图,序列图,协作图,状态图,活动图,部属图 • 集成的图片编辑器,大纲视图和属性视图 • UML 透视图 • 不限位置的绘制工具 • 通过热区直接编辑接点和连接内容 • 图片保存在 UML Model Repository(UML 模型仓库)文件中 (例如 cardemo.umr) • 包含 UML 模型文件的项目类型以及文件存储位置不受限制 • 从模型生成 Java 代码 • 导出图形为图片文件,支持多种格式:GIF、PNG、PS、EPS 和 SVG • 从任何 MyEclipse J2EE 或者 Eclipse Java 项目生成类图 o 批量反向工程处理任何项目或者源代码目录,Java 包或者单独类的组合 o 从 Eclipse 的 Package Explorer 透视图拖拽任何 Java 类或者接口添加进 UML 类图上 o 自定义反向工程设置 • 从 Outline 视图将任何 UML 元素拖放到任何兼容的 UML 图中 • 对类图进行自动布局 另外,MyEclipse 还提供了专门的 UML 透视图,来便于进行 UML 的设计工作。MyEclipse UML 透视图提供了精心调整过的的界面组织来方便进行建模活动。默认视图包括 UML Diagram Editor(UML 图形编辑器),Outline(大纲)视图,已经自定义的 Properties (属 性)视图。工具栏上的操作按钮进行了调整和增加,这样依赖使创建新图的过程快速和方便 的多。图 17.2 列出了对各部分进行了标示的 UML 透视图。 图 17.2 MyEclipse UML 透视图
MyEclipse6Java开发中文教程 172系统需求 由于 My Eclipse集成 ArgoUML实现UML的开发功能,而 ArgoUML当前版本则需要 JDKJRE15或者更高版本,因此必须安装这些版本的 JDKJRE之后运行 My Eclipse才可 使用。当然 MyEclipse All IN One版本本身已经自带了JRE15,无需额外配置。对操作系 统的支持上,则致辞 Windows vista,XP,2003和2000以及 Linux,而苹果的Mac系统 则不支持,这是因为SWT本身的一个向SWT中插入Swng组件的Bug所导致的。本书中 的例子和截图均在 Windows xe中文版SP2下运行和测试。 173创建UML模型仓库 MyEclipse UML使用一种特殊的文件格式来保存所有的UML图形以及模型元素到单 文件中,即 UML Model Repository(UMR). UMR文件的后缀是”umr、并且在 Package Explorer视图中以图标■的方式进行区分显示。在 Eclipse项目中可以创建任意多个UMR 文件。其实UMR文件的真实存储格式是ZP,可以使用7zjp,WnzP, WinRAR等软件 打开,就跟JAR文件的存储格式差不多。 使用 MyEclipse UML创建图形的第一步工作,就是用新建∪ML向导来创建一个UM 模型仓库文件(UMR)。为了方便起见,我们事先已经创建了一个名为 UMLTest的Java项 目。具体步骤如下: 启动新建UMR向导。可以通过使用菜单Fie>New> UML Model Repository, 或者点击工具栏上的按钮「,也可以来启动创建UML模型文件的向导。 2.在 Enter or select the parent folder(输入或者选择父目录)一栏中选中要保存文 件的项目,在 UML Model Repository(UML模型仓库)一栏中,输入文件名,在UML Root model name(UML根模型名称)一栏中,输入想要的名字。此过程可以参考图 173进行相关的设置。 Outl UML Modeling Create new UML model repository file Di agram-centric 日- default Enter or select the parent folder 目c1 回es UNL Nodel Repository: unites UNL Root Model Nane: default 匚2nt[cas4 图173新建UMR向导及空模型文件 3.选择 Finish按钮,关闭向导对话框,并在刚指定的位置下创建UML文件,稍后 MyEclipse会启动 UML Diagram Editor(UML图形编辑器)。默认情况下新建的 刘长炯著
MyEclipse 6 Java 开发中文教程 4 刘长炯著 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 模型仓库 MyEclipse UML 使用一种特殊的文件格式来保存所有的 UML 图形以及模型元素到单 一文件中,即 UML Model Repository (UMR)。UMR 文件的后缀是" .umr" ,并且在 Package Explorer 视图中以图标 的方式进行区分显示。在 Eclipse 项目中可以创建任意多个 UMR 文件。其实 UMR 文件的真实存储格式是 ZIP,可以使用 7Zip,WinZIP,WinRAR 等软件 打开,就跟 JAR 文件的存储格式差不多。 使用 MyEclipse UML 创建图形的第一步工作,就是用新建 UML 向导来创建一个 UML 模型仓库文件(UMR)。为了方便起见,我们事先已经创建了一个名为 UMLTest 的 Java 项 目。 具体步骤如下: 1. 启动新建 UMR 向导。可以通过使用菜单 File > New > UML Model Repository, 或者点击工具栏上的按钮 ,也可以来启动创建 UML 模型文件的向导。 2. 在 Enter or select the parent folder(输入或者选择父目录)一栏中选中要保存文 件的项目,在 UML Model Repository(UML 模型仓库)一栏中,输入文件名,在 UML Root Model Name(UML 根模型名称)一栏中,输入想要的名字。此过程可以参考图 17.3 进行相关的设置。 图 17.3 新建 UMR 向导及空模型文件 3. 选择 Finish 按钮,关闭向导对话框,并在刚指定的位置下创建 UML 文件,稍后 MyEclipse 会启动 UML Diagram Editor(UML 图形编辑器)。默认情况下新建的
MyEclipse6Java开发中文教程 UMR文件只有一个空的类图,参考图173右侧大纲视图 4.切换MyEc|ipse透视图为 My Eclipse UML,这样便于修改和创建∪ML图。 174创建及修改UML图 本节我们会简单介绍常见的几种UML图形的概念以及创建方式。由于本书重点在于 MyEclipse的工具使用上,所以UML的概念我们并没有打算做100%的详细介绍,图的种 类也选择了常用的几种,其它的读者可以自行查找资料进行学习。这样省出的篇幅,用于加 入后续章节的其它内容,给读者提供更多方面的参考资料。 1741创建UML图形 单个UML模型文件可以包含任意数目的和任何类型的UML图形。向文件中添加图形 需要在编辑器中打开UML文件,然后从编辑器工具栏上左数第一个按钮,从下拉列表中选 择要建的图的类型即可,参考图174。另外还可以从 Outline(大纲)枧图下点击视图中的 类似按钮,也可以创建图形,参考图17.2。支持的UML图形列表列表则参考表171。由于 这一特征,如果你想和别人分享做好的UML模型,把这个文件发给对方即可(当然前提是 他安装有MyEc|ipse或者 Argo UML来查看它)。 D UMLModels. umr 5 自 New Class Diagram 因 New Use Case Diagram is New Sequence Diagram a New Statechart Diagram EY New Activity Diagram 6 New Deployment Diagram E New Collaboration Diagram 图174使用编辑器器工具栏来创建图形 用例图 类图 序列图 协作图 状态图 活动图 部署图 表17.1可以创建的UML图类型列表 当一个模型文件中加入了多个图之后,如何进行切换到想编辑的图呢?有两个地方可以 进行图之间的切换:第一个地方是在大纲视图,双击需要修改的图的名字即可;另一个地方 就是在打开的图的编辑器的工具栏上,有一个下拉的列表可以切换图。此过程请参考图 刘长炯著
MyEclipse 6 Java 开发中文教程 5 刘长炯著 UMR 文件只有一个空的类图,参考图 17.3 右侧大纲视图。 4. 切换 MyEclipse 透视图为 MyEclipse UML,这样便于修改和创建 UML 图。 17.4 创建及修改 UML 图 本节我们会简单介绍常见的几种 UML 图形的概念以及创建方式。由于本书重点在于 MyEclipse 的工具使用上,所以 UML 的概念我们并没有打算做 100%的详细介绍,图的种 类也选择了常用的几种,其它的读者可以自行查找资料进行学习。这样省出的篇幅,用于加 入后续章节的其它内容,给读者提供更多方面的参考资料。 17.4.1 创建 UML 图形 单个 UML 模型文件可以包含任意数目的和任何类型的 UML 图形。向文件中添加图形, 需要在编辑器中打开 UML 文件,然后从编辑器工具栏上左数第一个按钮,从下拉列表中选 择要建的图的类型即可,参考图 17.4。另外还可以从 Outline(大纲)视图下点击视图中的 类似按钮,也可以创建图形,参考图 17.2。支持的 UML 图形列表列表则参考表 17.1。由于 这一特征,如果你想和别人分享做好的 UML 模型,把这个文件发给对方即可(当然前提是 他安装有 MyEclipse 或者 Argo UML 来查看它)。 图 17.4 使用编辑器器工具栏来创建图形 用例图 类图 序列图 协作图 状态图 活动图 部署图 表 17.1 可以创建的 UML 图类型列表 当一个模型文件中加入了多个图之后,如何进行切换到想编辑的图呢?有两个地方可以 进行图之间的切换:第一个地方是在大纲视图,双击需要修改的图的名字即可;另一个地方 就是在打开的图的编辑器的工具栏上,有一个下拉的列表可以切换图。此过程请参考图
MyEclipse6Java开发中文教程 175 DE- Outline 2 Di agram-centric 日 default 天 Use Case Di agram1 lass Diagram 1 图175在大纲和编辑器中切换多个图 向编辑器的图中加入UML元素可以通过单击编辑器工具栏上的按钮来完成,另外双击 工具栏上的组件按钮可进入 Mass add(批量添加)模式,此时每点击一次画布就加入一个 元素,要退出此模式可以点击编辑器工具栏上的光标状 Select(选择)按钮即可。另外, 带有下拉列表选择的功能,例如矩形绘制,也可以进入批量添加模式。在后面几节的的内容 中,笔者将会对各种类图的概念,图形特点和创建方式逐一进行介绍。 如果要将绘制的图形导出为图片文件,也比较容易,在编辑器的画布空白处右键点击, 然后选择菜单 Export as image,接着在弹出的对话框中输入要保存的图片文件名以及存储 路径即可,支持这些导出格式:PNG,GlF, PostScript, Encapsulated PostScript(封装 过的 PostScript)和SVG( Scalable Vector Graphics,可伸缩矢量图形)格式。这样导出 的图片可以用作图软件来处理,或者插入到文档或者网页中进行显示。 1742类图和常见修改功能 实际建模时候,大概类图是最经常用到的一种图形了。类图表示不同的实体(人、事物 和数据)如何彼此相关;换句话说,它显示了系统的静态结构。类图可用于表示逻辑类,逻 辑类通常就是业务人员所谈及的事物种类一一订单,商品,顾客,经理,管理员,账户等等。 类图也可以表现面向对象中提到的接口。在Java语言中,几乎所有的类,都可以用类图来 表示,之所以用了几乎这个不确定词,是因为UML本身有其局限性,例如下面的例子就无 法准确的用UML表示出来(模拟人和眼睛的关系): public class Person t class Eye() 这样的结构在Java中随处可见,是内部类,但是却无法用UML很好的表示出来。类似 的其它内容还有web服务,JSP等严格说也可以作为类描述的Java模块,但是这些都无 法很好的用UML表示,不过,按照UML的规定,开发工具可以自行扩充模型后来对这些 内容进行建模。 类图上使用包含三个部分的矩形来描述,如图176所示。最上面的部分显示类的名称, 中间部分包含类的属性(成员变量)列表,最下面的部分包含类的操作(或者说"方法"、函 数)列表。当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是 可选择的(当图描述仅仅用于显示系统的高层架构时,下面的两个区域是不必要的)。 位于类图最顶部的,是类名。类名上可以显示图标,也可以不显示,这是可选的功能, 同理所有的UML图都可以拥有定制的图标,这是可以扩展到内容。 类的属性栏(中部区域)在分隔线上列出类的属性列表。属性节是可选择的。每个属性 的定义使用如下格式: 刘长炯著
MyEclipse 6 Java 开发中文教程 6 刘长炯著 17.5。 图 17.5 在大纲和编辑器中切换多个图 向编辑器的图中加入 UML 元素可以通过单击编辑器工具栏上的按钮来完成,另外双击 工具栏上的组件按钮可进入 Mass Add(批量添加)模式,此时每点击一次画布就加入一个 元素,要退出此模式可以点击编辑器工具栏上的光标状 Select(选择)按钮 即可。另外, 带有下拉列表选择的功能,例如矩形绘制,也可以进入批量添加模式。在后面几节的的内容 中,笔者将会对各种类图的概念,图形特点和创建方式逐一进行介绍。 如果要将绘制的图形导出为图片文件,也比较容易,在编辑器的画布空白处右键点击, 然后选择菜单 Export as image,接着在弹出的对话框中输入要保存的图片文件名以及存储 路径即可,支持这些导出格式:PNG,GIF,PostScript,Encapsulated PostScript(封装 过的 PostScript)和 SVG(Scalable Vector Graphics,可伸缩矢量图形)格式。这样导出 的图片可以用作图软件来处理,或者插入到文档或者网页中进行显示。 17.4.2 类图和常见修改功能 实际建模时候,大概类图是最经常用到的一种图形了。类图表示不同的实体(人、事物 和数据)如何彼此相关;换句话说,它显示了系统的静态结构。类图可用于表示逻辑类,逻 辑类通常就是业务人员所谈及的事物种类――订单,商品,顾客,经理,管理员,账户等等。 类图也可以表现面向对象中提到的接口。在 Java 语言中,几乎所有的类,都可以用类图来 表示,之所以用了几乎这个不确定词,是因为 UML 本身有其局限性,例如下面的例子就无 法准确的用 UML 表示出来(模拟人和眼睛的关系): public class Person { class Eye {} } ,这样的结构在 Java 中随处可见,是内部类,但是却无法用 UML 很好的表示出来。类似 的其它内容还有 Web 服务,JSP 等严格说也可以作为类描述的 Java 模块,但是这些都无 法很好的用 UML 表示,不过,按照 UML 的规定,开发工具可以自行扩充模型后来对这些 内容进行建模。 类图上使用包含三个部分的矩形来描述,如图 17.6 所示。最上面的部分显示类的名称, 中间部分包含类的属性(成员变量)列表,最下面的部分包含类的操作(或者说"方法"、函 数)列表。 当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是 可选择的(当图描述仅仅用于显示系统的高层架构时,下面的两个区域是不必要的)。 位于类图最顶部的,是类名。类名上可以显示图标,也可以不显示,这是可选的功能, 同理所有的 UML 图都可以拥有定制的图标,这是可以扩展到内容。 类的属性栏(中部区域)在分隔线上列出类的属性列表。属性节是可选择的。每个属性 的定义使用如下格式:
MyEclipse6Java开发中文教程 name: attribute type 即名称:属性类型。例如图中的变量定义 username: String,是类型在后,属性名在前, 等价于 String username这样的Java代码。如果此模型和实际的编程语言无关,作为业务 Student a username String a age Integer o setUsername(in useRname String 图17.6单个类图 系统的描述图,是可以出现中文类型的描述,例如:单价美元这样的变量定义;如果要用 此图生成代码,则只能使用标准的变量定义和类型。个别的建模工具,例如 Together,,支 持给属性名加入别名方便阅读和理解。 类操作列表位于类图长方形的第三个(最底部)区域中,它也是可选的。和属性一样 类的操作以列表显示。操作使用下列格式定义 name(parameter list): type of value returned 即:操作名(参数列表):返回值类型。构造器也包含在操作列表中。如图176中所示的, > Studento表明这是一个构造器(构造器没有返回值);而 getUsername(: String 则定义了一个返回值为Stng类型的方法 getUsernameo;另外 setUsername( n username String)定义了一个设置用户名的方法,输入参数是 String类型的,参数名为 username,in 这个标记用来指示参数是输入值(当然不是必须的,不写i也可以)。 除了类之外,常见的类图还包括接口。接口如图177中左上的 Moveable所示,定义 了一个行走和停止的行为。实际上接口中也可以规定属性,但是 My Eclipse UML在这里不 支持这样的格式。如果一个类需要实现一个接口,则可以通过带有闭合的单向箭头的虚线进 行连接,即表示实现定义。例如图中的 Animal实现了 IMoveable接口,用Java到代码来 表示就是: class Animal implements /Moveable o walko: void o walkO: void ● stop:void ● stop:void House o miaoyu: void 图177接口和类继承,实现,关联 类之间可以有继承关系,通过带有闭合单向箭头的实线进行连接。例如图177中,类 Cat继承自 Animal。另外,类和类之间还可以有关联关系等,例如一个家庭对应多只猫 双向关联关系已实现的方式连接,并在线上显示关联类型。例如图中的 House关联着多只 Cat。表17.2列出了双向关联中的可能只所表示的含义的描述信息。如果是单向关联,则用 刘长炯著
MyEclipse 6 Java 开发中文教程 7 刘长炯著 name : attribute type 即 名称 : 属性 类型。例如图中的变量定义 username:String,是类型在后,属性名在前, 等价于 String username 这样的 Java 代码。如果此模型和实际的编程语言无关,作为业务 图 17.6 单个类图 系统的描述图,是可以出现中文类型的描述,例如:单价:美元这样的变量定义;如果要用 此图生成代码,则只能使用标准的变量定义和类型。个别的建模工具,例如 Together,支 持给属性名加入别名方便阅读和理解。 类操作列表位于类图长方形的第三个(最底部)区域中,它也是可选的。和属性一样, 类的操作以列表显示。操作使用下列格式定义: name(parameter list) : type of value returned 即:操作名 (参数列表) : 返回值类型。构造器也包含在操作列表中。如图 17.6 中所示的, >Student()表明这是一个构造器(构造器没有返回值);而 getUsername():String 则定义了一个返回值为String类型的方法getUsername();另外setUsername(in username : String)定义了一个设置用户名的方法,输入参数是 String 类型的,参数名为 uername,in 这个标记用来指示参数是输入值(当然不是必须的,不写 in 也可以)。 除了类之外,常见的类图还包括接口。接口如图 17.7 中左上的 IMoveable 所示,定义 了一个行走和停止的行为。实际上接口中也可以规定属性,但是 MyEclipse UML 在这里不 支持这样的格式。如果一个类需要实现一个接口,则可以通过带有闭合的单向箭头的虚线进 行连接,即表示实现定义。例如图中的 Animal 实现了 IMoveable 接口,用 Java 到代码来 表示就是:class Animal implements IMoveable。 图 17.7 接口和类继承,实现,关联 类之间可以有继承关系,通过带有闭合单向箭头的实线进行连接。例如图 17.7 中,类 Cat 继承自 Animal。另外,类和类之间还可以有关联关系等,例如一个家庭对应多只猫。 双向关联关系已实现的方式连接,并在线上显示关联类型。例如图中的 House 关联着多只 Cat。表 17.2 列出了双向关联中的可能只所表示的含义的描述信息。如果是单向关联,则用
MyEclipse6Java开发中文教程 不封闭的单向箭头来表示:→,从一个类连接到另一个类。此外还可以有聚合等关系,我们 就不多做介绍了,有兴趣的读者可以阅读参考资料中的IBM网站中的文章获得更多信息 表示 含义 0个或1个 只能1个 0 0个或多个 0个或多个 个或我个 只能3个 0.5 0到5个 5.15 5到15个 表17.2双向关联中可能的多重值描述 另外一个很重要的概念就是可见性。在面向对象的设计中,存在属性及操作可见性的记 号。UML识别四种类型的可见性: public, protected, private及 package(和Java中的 内容对应的非常好)。UML规范并不要求属性及操作可见性必须显示在类图上(其实 MyEclipse生成的图使用不同的和 Eclipse中一致的图标来表示可见性了,但是别的工具 般是按照UML的规范来使用记号来标识的),但是它要求为每个属性及操作定义可见性。 为了在类图上的显示可见性,放置可见性标志于属性或操作的名字之前。虽然UML指定 四种可见性类型,但是实际的编程语言可能增加额外的可见性,或者不支持UML定义的 可见性。表17.3显示了UML支持的可见性类型的不同标志。可见性的例子如: + username: String这样的属性定义。 标 可见性类型 Public Protected Private Package 表17.3可见性列表 在Java的开发中,经常会遇到包( Package)这个概念。UML中也支持类似的概念 软件包,用来将多个相关的类或者接口组织在一块。软件包使建模者能够组织模型分类器到 名字空间中,这有些象文件系统中的文件夹。把一个系统分为多个软件包使系统变成容易理 解,尤其是在每个软件包都表现系统的一个特定部分时。软件包在UML中以文件夹的方式 进行显杀,并在文件夹头部显示包名,文件夹中包含类或者接口。图178中列出了一个包 含两个类的软件包lang C Integer C String 这是个包 图17.8软件包及注释 另外,和常见的编程语言支持注释一样,UML也支持注释( Comment),如图17.8右 侧即是一个注释元素以及注释关联线。注释可以加到任何对象上。 刘长炯著
MyEclipse 6 Java 开发中文教程 8 刘长炯著 不封闭的单向箭头来表示:→,从一个类连接到另一个类。此外还可以有聚合等关系,我们 就不多做介绍了,有兴趣的读者可以阅读参考资料中的 IBM 网站中的文章获得更多信息。 表示 含义 0..1 0 个或 1 个 1 只能 1 个 0..* 0 个或多个 * 0 个或多个 1..* 1 个或我个 3 只能 3 个 0..5 0 到 5 个 5..15 5 到 15 个 表 17.2 双向关联中可能的多重值描述 另外一个很重要的概念就是可见性。在面向对象的设计中,存在属性及操作可见性的记 号。UML 识别四种类型的可见性:public,protected,private 及 package(和 Java 中的 内容对应的非常好)。UML 规范并不要求属性及操作可见性必须显示在类图上(其实 MyEclipse 生成的图使用不同的和 Eclipse 中一致的图标来表示可见性了,但是别的工具一 般是按照 UML 的规范来使用记号来标识的),但是它要求为每个属性及操作定义可见性。 为了在类图上的显示可见性,放置可见性标志于属性或操作的名字之前。虽然 UML 指定 四种可见性类型,但是实际的编程语言可能增加额外的可见性,或者不支持 UML 定义的 可见性。表 17.3 显示了 UML 支持的可见性类型的不同标志。可见性的例子如: +username:String 这样的属性定义。 标志 可见性类型 + Public # Protected - Private ~ Package 表 17.3 可见性列表 在 Java 的开发中,经常会遇到包(Package)这个概念。UML 中也支持类似的概念: 软件包,用来将多个相关的类或者接口组织在一块。软件包使建模者能够组织模型分类器到 名字空间中,这有些象文件系统中的文件夹。把一个系统分为多个软件包使系统变成容易理 解,尤其是在每个软件包都表现系统的一个特定部分时。软件包在 UML 中以文件夹的方式 进行显示,并在文件夹头部显示包名,文件夹中包含类或者接口。图 17.8 中列出了一个包 含两个类的软件包 lang。 图 17.8 软件包及注释 另外,和常见的编程语言支持注释一样,UML 也支持注释(Comment),如图 17.8 右 侧即是一个注释元素以及注释关联线。注释可以加到任何对象上
MyEclipse6Java开发中文教程 现在关于UML的概念已经做了这么多的介绍,接下来就来看看在 MyEclipse中如何绘 制类图。首先自然是打开新建的 Class图,然后可以看到UML编辑器的工具栏按钮列表 图标 英文提示 说明 恢复为准备选中状态 Broon 扫帚(点击后向各个方向拖动 可以使图形对齐) New Package 新建包 目 新建类 New Association 新建关联等关系(下拉选择) New Generalization新建泛化类(继承) New Interface 新建接口 New Realization 新建实现类 New Dependency 新建依赖类(下拉选择) New Attribute 新建属性 New Operation 新建操作 New Association class 新建关联类 新建注释 New Comment Link 新建注释连接 New Rectangle 新建方形(下拉选择) Zoom In 放大 Zoom Out 缩小 表174类图编辑器工具栏 在这些工具栏中,最常用的当属类图编辑功能了。点击UML编辑器工具栏上的目按钮 即可创建一个新的类。双击类图的三个方框的空白处:类名,属性列表和操作列表处,即可 快速修改类名或者加入新的属性和操作定义。如果双击已经存在的属性或者操作定义,则可 以变为文本输入框,进入修改模式来修改。基本上所有的UML元素都支持此种修改方式 MyEclipse的术语叫 Text hot-zone(文字热区)。文字热区是节点或者连接点的中间的可编 辑区域,例如关联类的连线中间,通过双击可以激活。激活后,热区内显示方形的可编辑输 入框。输入框内可以直接输入文本,也支持删除、复制、粘贴、剪切带操作。要提交文字热 区内地修改使之生效,可以点击文字热区之外的任何地方即可,随后编辑区消失并代之以显 示原来被编辑的UML内容。关于类图编辑和热区,可以参考图179 米 处的按钮可以快速加 联的类或者子 双击三个方框空白处可快 速添加或修改内容 类名 属性 操作 刘长炯著
MyEclipse 6 Java 开发中文教程 9 刘长炯著 现在关于 UML 的概念已经做了这么多的介绍,接下来就来看看在 MyEclipse 中如何绘 制类图。首先自然是打开新建的 Class 图,然后可以看到 UML 编辑器的工具栏按钮列表: 图标 英文提示 说明 Select 恢复为准备选中状态 Broom 扫帚(点击后向各个方向拖动 可以使图形对齐) New Package 新建包 New Class 新建类 New Association 新建关联等关系(下拉选择) New Generalization 新建泛化类(继承) New Interface 新建接口 New Realization 新建实现类 New Dependency 新建依赖类(下拉选择) New Attribute 新建属性 New Operation 新建操作 New Association Class 新建关联类 New Comment 新建注释 New Comment Link 新建注释连接 New Rectangle 新建方形(下拉选择) Zoom In 放大 Zoom Out 缩小 表 17.4 类图编辑器工具栏 在这些工具栏中,最常用的当属类图编辑功能了。点击 UML 编辑器工具栏上的 按钮 即可创建一个新的类。双击类图的三个方框的空白处:类名,属性列表和操作列表处,即可 快速修改类名或者加入新的属性和操作定义。如果双击已经存在的属性或者操作定义,则可 以变为文本输入框,进入修改模式来修改。基本上所有的 UML 元素都支持此种修改方式, MyEclipse 的术语叫 Text hot-zone(文字热区)。文字热区是节点或者连接点的中间的可编 辑区域,例如关联类的连线中间,通过双击可以激活。激活后,热区内显示方形的可编辑输 入框。输入框内可以直接输入文本,也支持删除、复制、粘贴、剪切带操作。要提交文字热 区内地修改使之生效,可以点击文字热区之外的任何地方即可,随后编辑区消失并代之以显 示原来被编辑的 UML 内容。 关于类图编辑和热区,可以参考图 17.9
MyEclipse6Java开发中文教程 Enter Car 图179快速编辑类,连接区和编辑区和 Text hot-zone 另外一种热区, Connection hot-zone,即连接热区,它位于哪里呢?它位于类图的 四周,鼠标移过时可以看到多出的几个按钮,一般提供连接到节点的一些关联类,自关联 子类,依赖等等,可以点击按钮到另一个节点来完成连接,也可以只单击按钮自动生成一个 对应的关联类 要修改图形的大小,需要把鼠标放到图形的四个角上的某一个,出现黑色的小方块后 拖动即可调节其大小(不过图有个最小值,不能调节的比最小值还小)。要移动元素,可以 用鼠标画框的方式选中需要移动的元素,然后再其中的任意一个元素上点击并拖放即可移动 图形的位置。 最后一个和编辑有关的就是 Properties(属性)视图,当选中不同的元素时,会显示 对应的可以修改的属性值,如图1710所示。例如选中类A中的属性后,此时 Properties 视图如图17.10所示。 Properties视图中也可以编辑对应的值,并且以多页标签的方式来显 示所有可以修改,添加或者删除的内容(相对比下,在编辑器的画布上能改的属性则非常有 限)。 Properties标签下的工具栏,可以处理一些操作例如转到上级(GoUp),新建属性(New Attribute),新建数据类型( New Datatype),新建版型( New Stereotype),以及删除模型 ( Delete from model)等等。在Name输入框中可以修改属性名,Type可以选择数据类型, Initial value中可以输入初始值,su!y中可以选择可见度,包括 Protected(受保护的) Public(公开的)和 Private(私有的)。 Changeability中则可以选择是否为可以修改的值 Modifiers中则可以修改修饰符。实际上每种元素都有它自己特定的属性,但大部分都是用 不到的属性,所以我们就不打算在这里做完整的介绍了 +□目 个日个·目目凸…日·CsDM onewcperaton I vo ● newoperalicrd;wid AProperties 4 Docwneatatioa Presentation A Constraints a Taged values 目A目。a官 Initial Talne- ⊙ pablic changeability 目 ods fter 图1710 UML Properties视图 Properties视图中另外一个相对固定的标签页就是 Documentation(文档),可以用来 刘长炯著
MyEclipse 6 Java 开发中文教程 10 刘长炯著 图 17.9 快速编辑类,连接区和编辑区和 Text hot-zone 另外一种热区, Connection hot-zone,即连接热区,它位于哪里呢?它位于类图的 四周,鼠标移过时可以看到多出的几个按钮,一般提供连接到节点的一些关联类,自关联, 子类,依赖等等,可以点击按钮到另一个节点来完成连接,也可以只单击按钮自动生成一个 对应的关联类。 要修改图形的大小,需要把鼠标放到图形的四个角上的某一个,出现黑色的小方块后, 拖动即可调节其大小(不过图有个最小值,不能调节的比最小值还小)。要移动元素,可以 用鼠标画框的方式选中需要移动的元素,然后再其中的任意一个元素上点击并拖放即可移动 图形的位置。 最后一个和编辑有关的就是 Properties(属性)视图,当选中不同的元素时,会显示 对应的可以修改的属性值,如图 17.10 所示。例如选中类 A 中的属性后,此时 Properties 视图如图 17.10 所示。Properties 视图中也可以编辑对应的值,并且以多页标签的方式来显 示所有可以修改,添加或者删除的内容(相对比下,在编辑器的画布上能改的属性则非常有 限)。Properties 标签下的工具栏,可以处理一些操作例如转到上级(Go Up),新建属性(New Attribute),新建数据类型(New Datatype),新建版型(New Stereotype),以及删除模型 (Delete from Model)等等。在 Name 输入框中可以修改属性名,Type 可以选择数据类型, Initial Value 中可以输入初始值,Visibility 中可以选择可见度,包括 Protected(受保护的), Public(公开的)和 Private(私有的)。Changeability 中则可以选择是否为可以修改的值。 Modifiers 中则可以修改修饰符。实际上每种元素都有它自己特定的属性,但大部分都是用 不到的属性,所以我们就不打算在这里做完整的介绍了。 图 17.10 UML Properties 视图 Properties 视图中另外一个相对固定的标签页就是 Ducumentation(文档),可以用来