UML之关系

一、UML之关系

在UML中,关系是非常重要的语义,它抽象出对象之间的关系,让对象构成某个特定的结构。

1.1 泛化关系(generalization)

泛化关系是一条带空心箭头的直线表示:

这里写图片描述

泛化关系可用于建模过程中的任意一个阶段。 泛化是说明两个对象之间的继承关系,即一个类对另一个类继承。泛化关系是从后代类到其祖先类的关系


例子

这里写图片描述

注:java中类可以继承类,接口也是可以继承接口的。


1.2 实现关系(realize)

实现关系是用一条带空心箭头的虚线表示
这里写图片描述

实现所代表的含义是,基本用例描述了一个业务目标,但是该业务目标有多种可能实现的途径,每一种实现途径可以用用例实现来表示,而用例实现与基本用例之间就构成了实现关系。


例子

这里写图片描述


1.3 关联关系(association)

关联关系用一条直线表示
这里写图片描述

它描述不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起,关联关系是一种静态关系,通常与运行状态无关,关联关系是一种强关联的关系。


关联关系用来定义对象之间的静态的、天然的结构,这与依赖关系是不同的,依赖关系表达的是对象之间临时性的、动态性的关系。在最终的代码里,关联的对象通常是以实例变量(成员变量)的形式实现的。与依赖相比,关联的两个对象之间通常不会互相直接使用。,尽管他们相互“知道”对方的存在,但一般都是由外部对象来访问,如一个外部访问者可以通过员工对象获得公司对象。


1.3.1 关联关系的多重性

常见为一对一关联、一对多关联、多对多关联等。 关联关系一般不强调方向。 当 A—B时,默认为A和B相互“知道”对方的存在

这里写图片描述


1.4依赖关系

依赖关系是用一条带箭头的虚线表示

这里写图片描述

它描述一个对象在运行期会使用到另外一个对象的关系。与关联关系不同的是,依赖关系是一种临时性的关系,它通常都是在运行期产生,并且便随着运行场景的不同,依赖关系也可能发生变化。


一般而言,依赖关系在最终的代码里体现为类构造方法、类方法等的传入参数。与关联关系相比,依赖关系除了临时“知道”对方外、还会“使用”对方的属性或方法。从这个角度讲,被依赖的对象改变会导致依赖对象的修改。

例如:

A对象保存了B对象的实例,但A对象对B对象没有操作,这时A仅仅是“知道”B对象,应当用关联关系,并且B修改了方法以后,A并不会变化。

如果A对象在某个场景当中使用了B对象的属性或方法,则B的修改会导致A的修改,这时A依赖于B.
这里写图片描述


1.5 聚合关系(aggregation)

聚合关系是用一条带空心菱形的直线表示

这里写图片描述


聚合关系用于类图,特别用于表示实体对象之间的关系,表单整体由部分构成的语义

例如一个部分由许多人员构成。与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在。例如部分撤销以后,人员不会因此而消失,他们依然存在。
这里写图片描述


1.6 组合关系(composition)

组合关系是用一条带实心菱形箭头的直线表示。

这里写图片描述
组合关系用于类图,特别用于表示实体对象关系,表达整体拥有部分的语义。例如母公司拥有许多子公司。

组合关系是一种强依赖的特殊聚合关系。如果整体不存在了,则部分也将消亡。 例如母公司解体了,子公司也将不再存在。
这里写图片描述


参考

  1. 《大象–Thinking in UML》
  2. java_UML:继承/泛化、实现、依赖、关联、聚合、组合的联系与区别 (2016-07-12)

猜你喜欢

转载自blog.csdn.net/qq_31156277/article/details/80659527
今日推荐