泛化关系(继承关系) → 实线空心三角
实现关系 → 虚线空心三角
关联关系 → 实线
聚合关系 → 实线空心菱形
复合关系 → 实线实心菱形
依赖关系 → 虚线箭头
复合 > 聚合 > 关联 > 依赖
泛化关系(Generalization):继承关系
A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)。
泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系。
泛化关系有三个要求:
①子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
②子类中除了与父类一致的信息以外,还包括额外的信息;
③可以使用父类的实例的地方,也可以使用子类的实例;(里氏转换)
依赖关系(Dependence):(中介者模式)
依赖关系(Dependence):假设A类的变化引起了B类的变化,则说明B类依赖于A类。
依赖关系(Dependency) 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
依赖关系有如下三种情况:
1、A类是B类中的(某中方法的)局部变量;
2、A类是B类方法当中的一个参数;
3、A类向B类发送消息,从而影响B类发生变化;(装饰模式)
关联关系(Association):
关联关系(Association):类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联。
关联关系(Association) 是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。
在UML类图中,用实线连接有关联的对象所对应的类,在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。
在使用类图表示关联关系时可以在关联线上标注角色名。
关联关系细化:
①单向关联:A类持有B类对象。(依赖关系)
②双向关联:A类持有B类对象,B类持有A类对象(不满足“迪米特原则”)
③自关联:A类持有A类对象。(单例模式)
④多重性关联关系(Multiplicity):即A持有N个B类对象。
聚合关系(Aggregation)
聚合关系(Aggregation):表示的是整体和部分的关系,整体与部分可以分开。
通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合关系。
在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。
复合关系(Composition):
复合关系(Composition)也表示类之间整体和部分的关系,但是复合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之间具有同生共死的关系。
在复合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。在UML中,复合关系用带实心菱形的直线表示。
eg. 人和心脏的关系 对象的创建和销毁在人类中。
实现关系(Implementation):
1、是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务.
2、接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。