UML 之 UML中的关系

时间:2021-04-10 11:35:06

关系(Relationships):表示基本图示符号之间的关系。


UML定义的关系主要有6种:依赖,泛化,实现,关联,聚合和组合。下面就依次向大家讲解一下这些关系:





关联(Association)
    元素间的结构化关系,是一种弱关系,被关联的原始间通常可以被独立的考虑。
    关联表示的是一种结构关系。它描述了一个事物与另外一个事物的对象之间的拥有关系。例如Library类和Book类之间具有一个一对多的关联关系,它表明一个Library可以有多个Book,但是一个Book仅仅只能被一个Library所拥有。在图形上,关联使用细的实线来表示。一般地,用细实线连接起来的两个类是双向导航的,也就是说可以从一个类导航到另一个类。举例来说,Person类和Company类就是双向导航的。但是,有时也可以将导航限制为单项的,例如User类和Password类——我们可以从User类导航到Password类,但是不能从Password类导航到User类。这种单向的导航关系,在图形上用带有箭头的实线来表示,箭头的方向表示导航的方向。
                                         UML 之 UML中的关系

聚合(Aggregation)
    关联关系的一种特列,表示部分和整体的关系。UML中通常用带空心菱形头的实线表示,菱形头指向整体。
    聚合表示一种“has-a”的关系,暗示着较大的对象拥有着较小的对象,然后这种拥有关系不是那种一损俱损的强拥有关系,也就是说,“大对象”的生命期结束的时候,“小对象”的生命期并不受影响。举例来说,机场和飞机就是这种聚合关系。
                                       UML 之 UML中的关系

组合(Composition)
    组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。UML中用带实心菱形头的实线表示,菱形头指向整体。
    组合关系是对聚合关系的加强,它说明大对象不仅仅拥有小对象,而且它们是一个整体,具有共同的生命期,一损俱损。例如链表和节点就是这种关系。
                                          UML 之 UML中的关系

依赖(Dependency)
    元素A的变化会影响B,但反之不成立,那么B和A是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。UML中用带箭头的虚线表示,箭头指向被依赖元素。
    依赖是一种使用关系。它表示了一个事物的变化会影响到所有使用它的事物的行为。针对面向对象的“类”来说,如果一个类A使用另外一个类B作为其函数的参数,或者作为本地变量,那么就说A依赖于B。
                                             UML 之 UML中的关系

泛化(Generalization)
    通常所说的继承关系。UML中用带空心箭头的实线表示,箭头指向一般个体。
    泛化是一种“is-a”的关系,它表示一般事物(父类)和该事物的更具体更特殊的类(子类)之间的一种关系。
                                                UML 之 UML中的关系

实现(Realize)
    元素A定义一个约定,元素B实现这个约定,则B和A的关系是实现,B realize A。这个关系最常用于接口。UML中用空心箭头和虚线表示,箭头指向定义约定的元素。
    在类的实现关系中,一个类描述了另外一个类必须实现的契约,即接口。实现是一种和泛化、依赖都不痛的另外一种关系,但不可否认的是,实现和泛化、依赖有着千丝万缕的联系,它是泛化和依赖在语义上的接口:从某种程度上说,可以认为实现是一种泛化,也可以认为实现是一种依赖。

                                                                                        UML 之 UML中的关系