用UML表示类之间的6种关系
Posted 海林的平凡之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用UML表示类之间的6种关系相关的知识,希望对你有一定的参考价值。
学习设计模式之美也有一段时间了,总是会忘记或者搞混类与类之间的关系,今天整理一下,以免后面的复习,类和类的关系用UML 表示分为
1.Dependency(依赖)、Relization(实现)、Generalization(泛化)
2.Association(关联)、Aggregation(聚合)、Composition(组合),这三种是一类的关联关系
1.依赖(Dependency)
依赖关系表示,特定事物的改变会影响另一个事物,体现在某个类中的方法中使用另一个类的对象作为参数或者局部变量
2.实现(implement,Relization)
实现一般是针对接口而言,实现类实现接口,使用关键字Implement
UML图中实现使用一条带有空心三角箭头的虚线指向接口
3.泛化 Generalization
表示类与类之间的继承关系、接口与接口之间的继承关系。 通常是is- a 的关系
UML图中实现使用一条带有空心三角箭头的实线指向基类
4.关联Association
表现为变量(has a),类与类之间的联接,它使一个类知道另一个类的属性和方法。例如如果A依赖于B,则B体现为A的全局变量,如person类和company类。
关联关系有双向关联和单向关联:
1、双向关联:两个类都知道另一个类的公共属性和操作。
2、单向关联:只有一个类知道另外一个类的公共属性和操作。
大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。
UML图中实现使用一条实线(有的地方用带箭头的实线)连接相同或不同类
5.聚合 has - a 的关系
他是关联关系的一种,比较弱的关联关系,两个事物进行关联,A->B A关联B,B 可以单独存在,比如公司与员工之间的关系,聚会的时候,餐桌与人之间的关系,
UML图中实现使用一条带有虚心菱形的线来表示
6.组合 contains-a 的关系
是关联关系的一种,是比聚合关系强的关联关系。部分对于整体联系比较密切,不可分割,桌子与桌腿之间,人和大脑,部分销毁之后,整体也就不存在了。
UML图中实现使用一条带有实心菱形的线来表示
关联和聚合的区别:
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。
聚合关系是“has-a”关系,组合关系是“contains-a”
以上是关于用UML表示类之间的6种关系的主要内容,如果未能解决你的问题,请参考以下文章