开始学习UML类图中的类与类之间的关系中的时候,其中依赖,组合和聚合关系比较容易混淆,下面我以代码和类图的形式将这些关系呈现出来。希望能够对困惑者有所帮助。
我使用的建模工具为powerdesigner。
关联是一种结构化的关系,指一种对象和另一种对象有联系。给定有关联的两个类,其中一个类的对象包含另一个类的对象,关联有单向关联和双向关联。
多重性关联关系
多重性关联关系又称为重数性关联关系,表示一个类的对象与另一个类的对象连接的个数。在UML中多重关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数
聚合关系指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类(容器类)和成员类之间就形成了聚合关系。在聚合关系中,类A是类B的一部分,但是类A可以独立存在,在UML中,聚合关系用带空心菱形的直线表示。
组合关系也表示类之间整体和部分的关系,但是组合关系中部分和整体具有相同的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之间具有共生死的关系。在组合关系中,类A包含类B,而且可以控制类B的生命周期。类A控制类B的生命周期意味着类B的存在依赖于类A。在UML中,组合关系用带实心菱形的直线表示。
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,反之不成立,在需要表示一个事物使用另一个事物时使用依赖关系。通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数。在UML中也可以在其他的事物之间使用依赖关系,如节点之间的关系。依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
(一)
(1)
public class A {
/** @pdRoleInfo migr=no name=B assc=association1 mult=1..1 type=Aggregation */
public B b;
}
/** @pdOid 8f2cf0c8-d0d0-4b51-86f6-e2f63840b77f */
public class B {
}
(2)
/** @pdOid fe9426ca-b27b-4398-855c-e925f7d97e4a */
public class C {
/** @pdRoleInfo migr=no name=D assc=association2 coll=java.util.Collection impl=java.util.HashSet mult=0..* type=Aggregation */
public java.util.Collection<D> d;
/** @pdGenerated default getter */
public java.util.Collection<D> getD() {
if (d == null)