依赖、泛化和关联是UML的3种最重要的关联构造块。除了前几部分描述的内容外,这些关系还有一些其他特性。也可以对多继承、导航、组合、精化和其他特性建模。使用第4种关系(实现)可以对接口与类或者接口与构件之间的联系建模,也可以对用况和协作之间的联系建模。在UML中,可按任何形式化程度对关系的语义建模。
- 入门
如果正在建造一所房屋,决定各房间的布局是一项关键的任务。通过对这些基本关系和用况的构思,可以形成一个相当完整的房屋楼层布置图。如果不考虑复杂的关系。最终会由于设计中的一些实际缺陷而失败。例如,不考虑把房间安排得把上下水管道装在公共的墙内,就要增加房屋建设的造价。当对软件密集型系统建模时,依赖、泛化和关联是要遇到的最常用的关系。然而为了捕获系统中的一些细节,就需要这些关系中的一些高级特性。比如下图,
2. 术语和概念
关系是事物之间的联系。在面向对象的建模中,4种最重要的关系是依赖、泛化、关联和实现。在图形上,把关系画成线段,用不同种类的线段区分不同的关系。
- 依赖
依赖是一种使用关系,它描述了一个事物的规约变化可能会影响到使用它的另一个事物,但反之不然。在图形上,依赖画成一条指向被依赖事物的虚线。
依赖关系的衍型有:
1)绑定
2)导出
3)允许
4)实例之一
5)实例化
6)幂类型
7)精化
8)使用
包与包之间的依赖关系:
1)引入
2)访问
用况之间的依赖关系:
1)延伸
2)包含
- 泛化
- 关联
导航关联
关联可见性
限定
组合
关联类
- 实现
3.常见建模技术
对关系网建模,遵循如下策略:
- 开始不要孤立地看问题。利用用况和脚本来驱使去发现一组抽象之间的关系。
- 一般要从呈现的结构关系建模。这些关系反应了系统的静态视图
- 识别使用一般、特殊关系的机会;少用多继承;
- 寻找依赖
- 只有在表达意图绝对必要时,才应用高级特性;
- 不应该也不必要在一张图或视图内对一组抽象之间所有的关系建模。通过不同的视图来建立系统的关系。
4. 提示和技巧
对关系建模时应该具备如下特点:
- 仅显示客户使用关系所需要的那些特征,隐藏所有的其他特征;
- 关系的意图和语义要清晰
- 不要过分的进行详述
- 不要过分的简化
在UML绘制关系是,要遵循如下策略:
- 在一个语境中,仅显示对理解抽象来说重要的关系特性;
- 选择为关系的含义提供最佳可视化提示的衍型化的版本。