类之间的关系有继承关系,实现关系,依赖关系,关联关系,聚合关系,组合关系。
1.继承关系
继承关系使用如下箭头:
由子类指向父类。
泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示,如下图:
2.实现关系
实现关系使用如下箭头:
有实现类指向接口
在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示
3.依赖关系
依赖关系使用如下箭头:
依赖关系是类与类之间最弱的关系,是指一个类(依赖类)使用或知道另外一个类(目标类)。它是一个典型的瞬时关系,依赖类和目标类进行简单的交互,但是依赖类并不维护目标类的对象,仅仅是零时使用而已。例如对于窗体类window,当它关闭时会发送一个类windowclosingevent对象,这里也就可以说窗体类window使用了类windowclosingevent,他们之间的依赖关系如下图示:
由使用者指向被使用者。
如果A指向B,则说明A中使用了B,使用方式包括A类中有B类实例化对象的局部变量。A类中有方法把B类实例化对象当做了参数,A类中有方法调用了B类中的静态方法。
4.关联关系
关联关系使用如下箭头:
由拥有者指向被拥有者。
如果A指向B,则说明A类中有B类的成员变量。
关联关系是一种比依赖关系更强的关系,是指一个类“拥有”另一个类,表示类之间的一种持续一段时间的合作关系,包括有单向关联和双向关联关系。
单向关联:类A与类B是单向关联关系,是指类A包含类B对象的引用,但是类B并不包含类A对象的引用,例如银行用户类(client)包含账户类(Bankacount)的引用,但是反过来却不是。在类图中,通过从类A画一条带箭头的单向实线到类B来表示他们之间的单项关联关系,箭头方向指向B。如下图:
5.聚合关系
聚合关系使用如下箭头:
由整体指向部分。
如果A指向B,则说明A类中有B类的成员变量,但是与关联关系不同,A类和B类有逻辑关系。A类是整体,B类是部分。A类由B类构成,同时B类即便不在A类中也可以单独存在。
聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。例如:汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系,如下图所示:
6.组合关系
组合关系使用如下箭头:
由整体指向部分。
如果A指向B,则说明A类中有B类的成员变量,但是与关联关系不同,A类和B类有逻辑关系。A类是整体,B类是部分。A类由B类构成。但与聚合关系不同,如果B类不在A类中就无法单独存在。
组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在UML中,组合关系用带实心菱形的直线表示。例如:人的头(Head)与嘴巴(Mouth),嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,因此头和嘴巴是组合关系,如下图所示: