🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”
文章目录
- UML
- 含义
- 类图概述
- 类图表示方法
- 类图之间的关系
- 关联关系
- 聚合关系(整体没了部分还存在)
- 组合关系(整体没了部分也没了)
- 依赖关系(在一个类的方法里面调用另一个类的对象)
- 继承关系
- 实现关系
UML
含义
- UML(Unified Modeling Language , UML)统一建模语言:是用来设计软件可视化的建模语言。
- 特点:简单、统一、图形化、能表达软件设计中的动态与静态信息。
- UML图包括以下9种类型图,如果有时间,我会把它们单独出来撰写相关类型图的画法,在设计模式中,最主要的是类图,所以,本篇文章主要是与类图有关。
类图概述
- 类图(Class Diagram)显示模型的静态结构(静态成员变量、成员方法等),特别是模型中存在的类、类的内部结构以及它们与其它类的关系等。类图不显示暂时性信息。类图是面向对象建模的主要组成部分。
类图表示方法
-
+
:表示public -
-
:表示private -
#
:表示protected -
属性的完整表示方式: 可见性 名称 : 类型
-
方法的完整表示方式: 可见性 名称(参数列表)
类图之间的关系
关联关系
- 1.单向关联:
-
- 在UML图中单向关联,用一个带箭头的实线表示。上图表示每个顾客都有一个地址,通过让Customer类持有一个类型为Address的成员变量实现。
-
2.双向关联:
-
- 双向关联就是对方各自持有对方类型的成员变量。
-
- 双向关联用一个不带箭头的直线表示。上图中在Customer类中维护一个
List<Product>
,表示一个顾客可以购买多个商品;在Product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客购买。
- 双向关联用一个不带箭头的直线表示。上图中在Customer类中维护一个
-
3.自关联
-
- 自关联用一个带箭头且指向自身的线表示。
-
- 上图的意思是Node类包含类型为Node的成员变量,也就是“自己包含自己”。
聚合关系(整体没了部分还存在)
聚合关系
:是关联关系的一种,是强关联关系,是整体与部分之间的关系。- 聚合关系是通过成员对象实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。
- 例如:上图中的学校与老师之间的关系,学校包含老师,但是如果学校停办了,老师依然存在。
- 在UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。
组合关系(整体没了部分也没了)
组合关系
:组合表示类之间整体和部分的关系,是更强烈的一种聚合关系。- 在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。
-
- 组合关系用带实心菱形的实线来表示,菱形指向整体。上面所示是头和嘴的关系图。
依赖关系(在一个类的方法里面调用另一个类的对象)
依赖关系
:是一种使用关系,他是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。
-
- 如上图,Driver依赖于Car,依赖关系使用带箭头的虚线表示,箭头从使用类指向被依赖的类。
继承关系
继承关系
:是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系。
-
- 继承关系(泛化关系)用带空心三角箭头的实线来表示,箭头从子类指向父类。在代码实现时,使用面向对象的继承机制来实现泛化关系。上图中,Student 和 Teacher类都是Person的子类。
实现关系
实现关系
:是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有抽象操作。
-
- 实现关系使用带空心三角箭头虚线表示,箭头从实现类指向接口。如上图中,汽车和船实现了交通工具。