UML 类图

原文出处 : https://www.jianshu.com/p/57620b762160

主要是用于 去公司面试 学习一些提到的一些知识。

类图基础属性

img

- 表示private  
# 表示protected 
~ 表示default,也就是包权限  
_ 下划线表示static  
斜体 表示抽象  

名词解释

  • 继承、实现 :类 A 继承 类 B,那么 A 就有了 B 的属性和方法。类 A 实现 B 接口,B 接口本身只是规则和方法的定义,类 A 具体实现。
  • 依赖、关联 :类 A 当中某个方法需要类 B 作为参数传入,这种关系叫做依赖。但是只要当类 A 调用这个方法才需要类 B,就像人和高铁,人和轮船,具有临时性。类 B(或者类 B 的全局变量) 作为一个成员变量出现在类 A 的属性中,A、B俱生,荣辱与共,牵一发而动全身。这种强依赖关系叫做关联。这种关系是平等的,长期性的。
  • 聚合、组合 聚合与组合都是关联的特例。都是本体类 A 与另外一个类 B,休戚与共。聚合就如同武士和他的刀,组合就如同武士和他的手臂。武士和手臂是完全不可分离的,武士和刀可以分离。而如果一个类 A 初始化前需要初始化类 B,并且类 B 随着类 A 的销毁而销毁,这称为组合 。

几种关系的强弱顺序表现为如下 :

泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

类与类之间关系

在 UML 类图中,常见的有以下几种关系 :泛化(Generalization)、实现(Realization)、关联(Association)、聚合(Aggregation)、组合(Composition)、依赖(Dependency)

img

泛化

介绍

继承表示一个类(子类、子接口)继承另外一个类(父类、父接口)的功能,并可以增加它自己的新功能的能力。吸收已有类的数据属性和行为,并能扩展新的能力。

表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。比如:老虎是动物的一种,既有老虎的特性也有动物的共性。

表示方法

继承使用 空心三角线 + 实线 表示 。箭头指向父类

示例

鸟类继承抽象类动物 (鸟也属于动物类别)

img

实现

介绍

实现表示一个 class 类实现 interface 接口(可以是多个)的功能。

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

表示方法

使用 空心三角线 + 虚线 表示,箭头指向接口 。

示例

大雁需要飞行,就需要实现 飞 的接口

还有一种用 实线 表示,这里不做叙述 。

依赖

介绍

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系

是一种使用的关系。即一个类的实现需要另一个类的协助,但注意尽量不要使用双向的互相依赖 。人与高铁、人与船的关系 。

表现在代码层面 :类 A 作为参数被 类 B 在某个方法中使用 。

表示方法

依赖关系用 虚线箭头 表示 。指向被使用者

示例

动物依赖氧气和水,调用新陈代谢方法需要氧气和水的实例作为参数 。

关联

介绍

对于两个相对独立的对象,当一个对象的实例与另一个对象的某一特定实例存在固定的对应关系时,这两个对象之间为关联关系。

是一种 "拥有" 的关系,它使一个类知道另一个类的属性和方法。比如 :老师与学生,

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

表示方法

关联关系用 实线箭头 表示 。指向被拥有者。

示例

企鹅需要 "感知到" 气候的变化,当一个类 "知道 "另一个类时,可以用关联。

img

上图中,老师与学生使双向关联,老师有多名学生,学生也会有多名老师。但学生与某课程的关系为单向关联,一名学生要上多门课程,但课程使抽象的它不拥有学生 。

聚合

介绍

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

聚合关系是整体与部分的关系,且部分可以离开整体而单独存在。比如车和轮胎使整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系。关联和聚合在语法上无法区分,需要考察具体的逻辑关系 。

表示方法

聚合关系用 空心的菱形 + 实线箭头 表示 。菱形指向整体

示例

每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁 。当大雁死去后大雁群并不会消失,两个对象生命周期不同 。

img

组合

介绍

组合是一种强的 "拥有" 关系,是一种 contains-a 的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样 。

表示方法

组合关系用 实心菱形 + 实线箭头 表示 ,还可以使用连线两端的数字表示某一端有几个示例 。菱形指向整体

示例

鸟 和 翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的 。

img

posted @ 2021-06-16 16:31  san只松鼠  阅读(67)  评论(0)    收藏  举报