编辑: ddzhikoi | 2019-07-03 |
如果说用例 图是系统的 面子 , 那么类图就是系统的 里子 .类图不仅包含了系统定义的各种类, 还包 含了各种关系, 如关联、 泛化和依赖等.类图大部分涉及对系统的词汇建模、 对协作建模或 对模式建模.作为面向对象系统的建模中最常见的图, 类图是组件图与部署图的基础, 它不 仅对结构模型的可视化、 详述和文档化很重要, 而且对通过正向与逆向工程构造可执行的系 统也很重要. 5.
1 什么是类图 类图( c l a s sd i a g r a m) 是显示一组类、 接口、 协作以及它们之间关系的图.一个类图主要 通过系统中的类以及各个类之间的关系来描述系统的静态结构. 类图与数据模型有许多相似之处, 区别就在于类不仅描述了系统内部信息的结构, 也包 含了系统的内部行为, 系统通过自身行为与外部事物进行交互. 类图主要包含七种元素:类、 接口、 协作、 依赖关系、 泛化关系、 实现关系和关联关系. 类图中还可以含有包或子系统, 用来把模型元素聚集成更大的组块.与其他 UML 图类似, 类图同样可以创建约束和注释等.图5 1显示了一个类图, 读者可以在学习完本章全部内 容之后再来尝试阅读这个类图所描述的情境.
5 5 图5
1 类图 5.
2 类图的组成元素 本节将重点介绍类图的组成元素:类、 接口以及类图中的四种关系. 5. 2.
1 类类( c l a s s ) 是一组拥有相同的属性、 操作、 方法、 关系和行为的对象描述符.一个类代表 了被建模系统中的一个概念.根据模型种类的不同, 此概念可能是现实世界中的( 对于分析 模型) , 也可能是包括算法和计算机实现的概念( 对于设计模型) .类是面向对象系统组织结 构的核心. 类定义了一组有着状态与行为的对象.类的状态由属性和关联来描述, 个体行为由操 作来描述, 对象的生命周期则由附加给类的状态机来描述. 在UML中, 类表达成一个有三个分隔区的矩形.其中顶端显示类名( n a m e ) , 中间显 示类的属性( a t t r i b u t e ) , 尾端显示类的操作( o p e r a t i o n ) , 如图5 2所示.其中, 可选择显示属 性和操作的可见性、 属性类型、 属性初始值、 操作的参数列表和操作的返回值等信息.此外, 也可以选择隐藏类的属性或操作部分, 隐藏了这两部分的类简化为一个只显示类名的矩形, 如图5 3所示.
5 6 图5
2 类图5
3 隐藏属性和操作的类 1.类名 每个类都必须有一个区别于其他类的名称.类名是一个文本串, 在实际应用中, 类名应 该来自系统的问题域, 选择从系统的词汇表中提取出来的名词或名词短语, 明确而无歧义, 便于理解交流. 类名有两种 表示方法:使用单独的名称叫作简单名(simplen a m e) , 如图52中的Person;
在类名前边加上包的名称, 如j a v a : : a w t : : R e c t a n g l e , 叫作路径名( p a t hn a m e ) , 表示Rectangle类属于a w t包, 而a w t包又属于j a v a包. 按照一般约定, 类名一般采用 U p p e r C a m e l C a s e格式, 即以大写字母开头, 大小写混合, 每个单词首字母大写, 避免使用特殊符号. 注意:关于类的路径名, 请参考第7章有关包的内容. 2.属性 属性是已被命名的类的特性, 它描述了该特性的实例可以取值的范围.类可以有任意数 量的属性, 也可以没有任何属性.属性描述了类的所有对象所共有的一些特性.例如, 每一面 墙都有高度、 宽度和厚度三个属性.因此, 一个属性是对类的一个对象可能包含的一种数据或 状态的抽象.在一个给定的时刻, 类的一个对象将对该类属性的每一个属性具有特定值. 在UML中, 描述一个属性的语法格式为: 可见性o p t属性名:类型 o p t多重性o p t=初始值 o p t{ 特性} o p t 注意:下标o p t在这里表示 可选 , 即可以省略下标前的项.括号 表示括号内部 的短语是一个整体.本书在下文中说明语法格式时同样会用到这些符号, 请读者注意. 属性名是属性的标识符.在描述属性时, 属性名是必需的, 其他部分可选.按照一般约 定, 属性名采用l o w e r C a m e l C a s e格式, 即以小写字母开头, 非首单词的首字母大写.用下画 线标识的属性名, 说明该属性是静态( s t a t i c ) 属性, 即该类的所有对象之间共享该属性. 可见性描述了该属性在哪些范围内可以被使用.属性的可见性有公有、 私有和保护三 种, 如表5 1所示.例如, a t t r就表示一个私有属性a t t r . 表5