UML学习笔记(4)
当建造抽象时,很少会发现类单独存在,相反大多数据类以几种方式相互协作,因此当对系统建模时,不仅要识别形成系统词汇的事物,而且还要对这些事物之间的联系建模
在面向对象建模中,有三种关系特别重要,依赖(dependency)它表示事物之间的使用关系,泛化(generalization)它表示特殊到一般,关联(association)它表示对象之间结构关系
构建关系网与创建类之间职责有几分相似,过分细致的设置导致关系复杂,不可理解,过分简单又会失去一些有用信息
1. 术语和概念
l 依赖(dependency)他说明一个事物规格说明的变化可能影响到使用它的另一个事物,但反之未必,当要指明一个事物使用另一个事物时,就使用依赖.
在大多数情况下,在类的语境中用依赖指明一个类把另一个类作为它的操作的特征标记中的参数,在UML中,也可以在很多其他的事物之间创建依赖,特别是注解和包
l 泛化(generalization)
l 关联(association)它指明一个事物 对象与另一个事物的对象间的联系,给定一个连接两个类的关联,可以从一个类的对象导航到另一个类的对象
Ø 名称,关联可以有一个名称可提供一个指引读名称方向的三角形
Ø 角色,当一个类处于关联的某一端时,该类就在这个关系中扮演了一个特定的角色,角色是关联中靠近它的一端的类呈现另外一端的职责
Ø 多重性
l 聚合,两个类之间的简单关联表示两个同等地位类之间的结构关系,类是同级,一个类不比另一个类重要
2. 普通建模技术
Ø 对简单依赖建模,is a kind of
Ø 对单继承建模
Ø 对结构关系建模
当用依赖或泛化关系建模时,是对表示了不同重要级别或不同抽像级别的类建.给定两个类间的一个依赖,则一个类依赖另一个类,但后者没有前者的任何信息.给定两个类间的一个泛化关系,则了类从它父类继承,但父类没有任何子类所特有的信息,简而言之,依赖和泛化关系都是单向的
当用关联建模时,两个类是互相依赖的,是从两边都可以导航
为了对结构关系建模,要做如下的工作:
² 对于每一对类,如果从一个类的对象到另一个类的对象导航,就要在这两个类之间说明一个关联,这是关联的数据驱动观点.
² 对于每一对类,如果一个类的对象要与另一个类中不作为其操作的参数的对象相互交互,就要在这两类间说明一个关联,这是关联的行为驱动观点
² 对于这样的每一个关联,要说明其多重性和角色名
² 如果关联中的一个类与另一端的类相比,前者较有整体的性或组织性,后者看起来像它的部分,则在靠近整体的一端对该关联进行修饰,把它标记为聚合
3. 提示和技巧
在UML中对关系建模时,要遵循如策略:
仅当被建模的关系不是结构关系时,才使用依赖
仅当关系是"is a kind of"关系时,才使用泛化,往往可以用聚合来代替多继承
小心不要引入循环的泛化关系
保持泛化的平衡,不要做太多层
在对象有结构关系的地方,要以关联为主
Sum-up:Relation 在UML建模中是非常重要的,主要用于描述事物之间的内在联系方式,本章主要简述几种常用的关系,以及怎么更好的使用这些关系!
浙公网安备 33010602011771号