1、概览
表达关系的UML符号(UML notation for class relationships)
注:这里缺少了组合关系。
2、详解
2.1、泛化(Generalization),在Java里表现为继承(Inheritance)(“is-a”)
2.2、实现(Interface implementation)
2.3、依赖(Dependency)(“uses-a”)
概念:一种使用的关系,即一个类的实现需要另一个类的协助,Java中,如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。
这里是类A依赖于类B。
2.4 聚合(aggregation)(“has-a”)
概念:聚合关系意味着类A的对象包含类B的对象。
老师和学生是“has-a”的关系,这里是Teacher指向Student,但是连线的尾部是一个空心的菱形。
2.5、关联(Association)
概念:表示类与类之间的联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。Java中一个类的全局变量引用了另一个类,就表示关联了这个类。
解释:在Teacher类中引用Course这个类。
2.6、组合(Combination)
概念:组合也是关联关系的一种特例。组合是一种整体与部分的关系,即contains-a的关系,比聚合更强。部分与整体的生命周期一致,整体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。程序中组合和关联关系是一致的,只能从语义级别来区分。
表示方法:尾部为实心菱形的实现箭头(也可以没箭头),类A指向类B。
参考:1、https://www.cnblogs.com/ylq1990/p/8473041.html 2、《Java核心技术》(第10版)