0%

UML类图详解

转载

最后的轻语_dd43 https://www.jianshu.com/p/57620b762160

技术小工 https://www.cnblogs.com/qianpangzi/p/10842672.html

类的属性与方法

  • +:public
  • -:private
  • #:protected/friendly
  • ~:default(包权限)
  • _:static
  • 斜体:抽象

类与类之间的关系

常见关系:

  1. 泛化/继承(Generalization)
  2. 实现(Realization)
  3. 关联(Association)
  4. 聚合(Aggregation)
  5. 组合(Composition)
  6. 依赖(Dependency)

泛化/继承(Generalization)

泛化/继承表示类与类之间的继承关系,接口与接口之间的继承关系

表示方法:空心三角形+实线

实现(Realization)

实现是一种类与接口的关系,表示类是接口所有特征和行为的实现

表示方法:

  1. 矩形表示法
    空心三角形+虚线

  2. 棒棒糖表示法
    实线

关联(Association)

关联是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子等.

关联可以是双向的,也可以是单向的.双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头.

表示方法:实线箭头,指向被拥有者

代码体现:成员变量

老师与学生是双向关联,老师有多名学生,学生也可能有多名老师.但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生.

上图为自关联

聚合(Aggregation)

聚合表示一种弱的拥有关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分.两个对象具有各自的生命周期.

表示方法:空心的菱形+实线箭头,菱形指向A,箭头指向被拥有者.还可以使用连线两端的数字表示某一端有几个实例.

代码体现:成员变量

组合(Composition)

组合表示一种强的拥有关系,即contains-a的关系.部分和整体的生命周期一样.

表示方法::实心的菱形+实线箭头,菱形指向A,箭头指向被拥有者.还可以使用连线两端的数字表示某一端有几个实例

代码体现:成员变量

依赖(Dependency)

依赖是一种使用的关系,一个对象依赖另一个对象的服务或者负责构造另一个对象的实例(工厂),这两个对象之间即为依赖关系.一般的,这种依赖关系都是单向的,尽量不要使用双向的互相依赖.

表示方法:虚线箭头,指向被使用者

代码体现:局部变量,方法的参数,或对静态方法的调用

关系的比较

强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

下面这张UML图,比较形象地展示了各种类图关系:

您的支持是对我最大的动力 (●'◡'●)