类之间的关系 UML把类之间的关系分为以下5种. ● 关联:类A与类B的实例之间存在特定的对应关系 ● 依赖:类A访问类B提供的服务 ● 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成 ● 泛化:类A继承类B ● 实现:类A实现了B接口 关联(Association) 关联指的是类之间的特定对应关系,在UML中用带实线的箭头表示。按照类之间的数量对比,关联 可以分为以下三种: ● 一对一关联 ● 一对多关联 ● 多对多关联 注意:关联还要以分为单向关联和双向关联 依赖(Dependency) 依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或者方法, 或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B类型的属性。 聚集(Aggregation) 聚集指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。 聚集关系还可以分为两种类型: ● 被聚集的子系统允许被拆卸和替换,这是普通聚集关系。 ● 被聚集的子系统不允许被拆卸和替换,这种聚集称为强聚集关系,或者组成关系。 注:强聚集(组成)可用带实线的实心菱形箭头表示。 泛化(Generalization) 泛化指的是类之间的继承关系,在UML中用带实线的三角形箭头表示。 实现(Realization) 实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示。 以下是GOF设计模式中的描述: 箭头和三角表示子类关系。 虚箭头线表示一个类实例化另一个类的对象,箭头指向被实例化的对象的类。 普通的箭头线表示相识(acquaintance也叫关联或者引用),意味着一个对象仅仅知道另一个对象。相识的对象可能请求彼此的操作,但他们不为对方负责,它只标示了对象间较松散的耦合关系。 尾部带有菱形的箭头线表示聚合(aggregation),意味着一个对象拥有另一个对象或者对另一个对象负责。一般我们称一个对象包含另一个对象,或者是另一个对象的一部分。聚合意味着聚合对象和其所有者具有相同的生命周期。
![]()
图一: ![]()
![]()
![]()
![]()
![]()
![]() |