uml类图和代码 python uml中的类图_uml类图和代码 python


关注BeTester,学习更多知识

让碎片成体系,让测试更专业


uml类图和代码 python uml中的类图_uml 类图_02


1、概述

类图(Class diagram)是显示模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。

2、类图概览

2.1 类的组成元素

一个类由3部分组成:类名、属性和方法:


uml类图和代码 python uml中的类图_uml类图实例作业_03


在面向对象的语言里,常使用protected/private/public等对类成员进行可访问性的修饰,对应到PlantUML中,其符号及图表关系如下:


uml类图和代码 python uml中的类图_uml 继承_04


2.2 定义类

使用 class 关键字进行类的定义,并在花括号内进行 属性 及 方法的设置。


class Tester {
-String private_field
#int protected_field
~char package_private_field
+char[] public_field
-void private_method()
#void protected_method()
~int package_private_method()
+BeTester public_method()
}


2.3 实例UML代码


@startuml

工程师  <|.. 软件工程师 : 实现

软件工程师 <|-- 测试工程师 : 继承(泛化)

软件工程师 <|-- 开发工程师 : 继承(泛化)

测试工程师 *-- 测试思维 : contains(组合)
测试工程师 *-- 测试技术 : contains(组合)

开发工程师 o-- 头发 : has(聚合)

开发工程师 <--> 身份证 : 关联

开发工程师 ..> IDE : 使用(依赖)

@enduml


2.4 UML图


uml类图和代码 python uml中的类图_uml类图工具_05


3、类图解析

3.1 泛化(继承)

泛化实际上是继承关系,是对某一细分领域的划分。譬如 测试工程师 和 开发工程师 都是软件工程师的子类。PlantUML中语法为:

父类 <|-- 子类


uml类图和代码 python uml中的类图_uml类图实例作业_06


3.2 实现

实现是对抽象概念的具体化说明,抽象的类或接口并不会对其内部方法进行编码实现,而是通过具体的类来对对该抽象类或接口进行编码。譬如 工程师 是一个抽象,软件工程师就是对工程师的具体化说明。PlantUML中语法为:

接口/抽象类 <|.. 类


uml类图和代码 python uml中的类图_uml类图工具_07


3.3 依赖(使用)

依赖表示对象在运行期间会使用到另一个对象。譬如 开发工程师 在编码时会使用到 IDE工具。PlantUML中的语法为:

类 ..> 工具


uml类图和代码 python uml中的类图_uml 继承_08


3.4 关联(拥有,成员变量)

关联关系是一种拥有的关系,它使一个类知道另一个类的属性和方法。譬如 开发工程师拥有一头乌黑的秀发。PlantUML中的语法为:

类 <--> 类


uml类图和代码 python uml中的类图_uml 继承_09


3.5 聚合(整体的一部分)

聚合关系表示整体与部分的弱依赖关系,若整体不存在了,部分依然可以存在。譬如 软件工程师 与 公司的关系,公司不存在了,软件工程师依然存在。PlantUML中的语法为:

类 *-- 类


uml类图和代码 python uml中的类图_uml类图和代码 python_10


3.6 组合(由..组成)

组合关系表示整体与部分的强依赖关系,弱整体不存在了,部分也不存在。譬如 测试部门 与 公司的关系,公司不存在了,测试部门也就消失了。在比如 测试思维与测试工程师,当工程师不存在了,那么测试思维也就不在了。PlantUML中的语法为:

类 o-- 类


uml类图和代码 python uml中的类图_uml类图和代码 python_11


  1. 实线比虚线关系强
  2. 实心比空心关系强
  3. 三角最稳(泛化/实现) > 四边形(聚合/组合) > 箭头(关联/依赖)

4、其他操作

4.1 添加注释


class Tester
note left: 这是在左侧的注释信息

class Tester
note right: 这是在右侧的注释信息

class Tester
note top: 这是在右侧的注释信息

class Tester
note bottom: 这是在右侧的注释信息


uml类图和代码 python uml中的类图_uml类图工具_12


4.2 定义接口和抽象类


abstract class 工程师
interface 工具箱


uml类图和代码 python uml中的类图_uml类图实例作业_13


4.3 改变箭头方向


A -left-> B
C -right-> D
E -up-> F
G -down-> H


uml类图和代码 python uml中的类图_uml 继承_14


除了 → 以外, ..> 、 <|— 、 *— 、 o— 等含方向的线段都可以使用方位关键字。

5、小结

类图广泛应用在项目开发中,甚至由写IDE工具能够提供扫描代码自动生成UML类图的功能。但是,也许这是一种本末倒置的方法,在开发过程中更应该提倡使用正向设计的思想,通过UML来指导我们的设计开发工作,进而开发相应工具自动生成代码框架。