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中所示的, << create>> 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 中所示的, <<create>>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 右 侧即是一个注释元素以及注释关联线。注释可以加到任何对象上