1. 是什么

统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。

UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。

2. 类图概述

类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。

3. 类图的作用

  • 在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解;
  • 类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。

4. 类的表示方式

在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和address这3个属性,以及work()方法。

属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:

  • +:表示public
  • -:表示private
  • :表示protected

属性的完整表示方式是: 可见性 名称 :类型 [ = 缺省值]

方法的完整表示方式是: 可见性 名称(参数列表) [ : 返回类型]

注意:

1,中括号中的内容表示是可选的

2,也有将类型放在变量名前面,返回值类型放在方法名前面

举个栗子:

上图Demo类定义了三个方法:

  • method()方法:修饰符为public,没有参数,没有返回值。
  • method1()方法:修饰符为private,没有参数,返回值类型为String。
  • method2()方法:修饰符为protected,接收两个参数,第一个参数类型为int,第二个参数类型为String,返回值类型是int。

5. 类与类之间关系

https://www.open-open.com/lib/view/open1328059700311.html

5.1. 泛化(Generalization)

image-20200320111648269

5.2. 实现(Realization)

image-20200320111719491

5.3. 关联(Association)

代码体现:成员变量

是一种拥有关系,它使一个类知道另一个类的属性和方法;双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

image-20200320111105079

5.4. 聚合(Aggregation)

代码体现:成员变量

与关联不同的是,聚合和组合有整体和部分关系的含义。与关联相同的是,也有拥有的关系。

与组合不同的是,整体拥有部分,部分可以离开整体而独立存在且有意义,比如汽车和轮胎的关系

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

image-20200320110441358

5.5. 组合(Composition)

代码体现:成员变量

has-a的关系,整体包含部分,部分不能离开整体单独存在而有意义,比如公司和部门的关系

组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

https://tva1.sinaimg.cn/large/00831rSTly1gd07t4z33vj312q0m8q4o.jpg

5.6. 依赖(Dependency)

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

image-20200320111814018
%%
1626-🏡⭐️◼️迪米特法则要求:依赖关系中的局部变量不要引入其他类,否则会导致引入耦合关系。解决办法就是将非直接朋友封装到直接朋友中,比如方法参数引用的类中◼️⭐️-point-202301231626%%

5.7. 总结

各种关系的强弱顺序:

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

https://tva1.sinaimg.cn/large/00831rSTly1gd0867je2ej30m20hx74m.jpg

6. IDEA plantUML 使用

7. 其他工具

visual paradigm

8. 参考与感谢

设计模式-2、设计模式及设计原则