一文读懂UML类图

325 阅读6分钟

一文读懂UML类图

初级目标(沟通与交流):更清晰、更有效地进行沟通和交流。以通过 UML 图理解系统的设计和架构。 终极目标(设计与规划):项目开始阶段对系统进行设计和规划,一种直观的方式来展示系统的结构

一、概念

UML(Unified Modeling Language)类图是一种用于描述系统中类与类之间关系的图形化表示方法。它是面向对象软件开发的一种标准建模语言,被广泛应用于软件工程领域。

UML类图用于显示类、接口、关联、依赖、继承、实现等元素之间的关系,以及它们的属性和方法。它是软件设计阶段中的一种重要工具,可以帮助开发者更清晰地理解和交流系统的结构与设计。

元素关系
类(Class)用矩形表示,包括类名、属性和方法。类名位于顶部,属性和方法分别列在中间和底部。
接口(Interface)用矩形表示,类似于类,但没有实现的方法。
关联(Association用一条连接两个类的直线表示,表示两个类之间的关系。
依赖(Dependency)用带箭头的虚线表示,表示一个类依赖于另一个类,但不拥有对方。
继承(Inheritance用带空心三角形的实线表示,表示一个类继承了另一个类的属性和方法。
实现(Realization)用带空心三角形的虚线表示,表示一个类实现了一个接口。
聚合(Aggregation)用带空心菱形的实线表示,表示一个类包含了另一个类的实例,但两者之间的关系不是强依赖的。
组合(Composition)用带实心菱形的实线表示,表示一个类包含了另一个类的实例,两者之间的关系是强依赖的。
泛化关系(Generalization继承关系的一种特殊形式,用带空心箭头的实线表示。
关联类(Association Class)表示关联关系中的类,通常用一个小矩形连接在关联线上。

二、类图中具体类、抽象、接口和包的表示法

1、类

解释:

  1. 类名: 类名通常位于矩形的顶部。这是表示类的标识符,用于唯一标识该类。
  2. 属性: 属性是类的特征或状态信息,通常位于矩形的中部。它们以属性名:类型的形式表示,如 name : String 表示具有名为name的属性,类型为String
  3. 方法: 方法是类的行为或操作,通常位于矩形的底部。它们以方法名(参数列表):返回类型的形式表示,如 getName() : String 表示具有名为getName的方法,无参数,返回类型为String
  4. 可见性标识符: 在类的属性和方法前可以添加可见性标识符,用于指定属性或方法的访问权限。常用的可见性标识符包括 +(public)、-(private)、#(protected) 等。

2、抽象类

解释:

UML类图中的抽象类可以通过斜体字、斜杠和 <<abstract>> 标记来表示,以区分它们与普通类。

3、在UML类图中表示接口

解释:

UML类图中的接口可以通过带有<<interface>>标记的小矩形来表示,以区分它们与普通类和抽象类。

4、在UML类图中表示包

解释:

示例也表示了一个名为 MyPackage 的包,里面包含了两个类 Class1Class2

三、在类图中表示关系

在UML类图中,表示类之间关系的线条称为关联线,它们描述了不同类之间的连接和交互方式。以下是一些常见的类之间关系及其表示方式:

1、关联关系(Association)

关联关系(Association)是UML类图中用于表示类之间的连接关系的一种基本关系类型。它描述了一个类对象与另一个类对象之间的关联,通常用于描述不同类之间的交互方式。关联关系可以是单向的或双向的,可以表示为实线或箭头。如果是双向关联,通常会在两侧都画箭头。

2、依赖关系(Dependency)

表示一个类依赖于另一个类。通常用虚线箭头表示。

如图:

  • Order 类中包含了一个名为 customer 的属性,它的类型是 Customer 类。
  • Order 类中的方法 createOrdersendConfirmationEmail 可能会使用到 Customer 类的一些功能,因此存在依赖关系。
  • 这里的依赖关系是单向的,从 OrderCustomer

3、聚合关系(Aggregation)

表示一个类是另一个类的一部分。通常用带空心菱形的实线表示。

如图:

  • Department 类拥有一个名为 employees 的属性,它的类型是一个 List,其中存放了多个 Employee 类的对象。
  • 这表示了 Department 类包含了多个 Employee 类的对象,但这些 Employee 类的对象可以独立存在。
  • Department 类提供了方法 addEmployeeremoveEmployee 来管理其包含的 Employee 对象。

4、组合关系(Composition)

表示一个类包含了另一个类的实例,且两者的生命周期紧密相关。通常用带实心菱形的实线表示。

如图:

  • Car 类拥有一个名为 engine 的属性,它的类型是 Engine 类。
  • 这表示了 Car 类由 Engine 类的对象构成,Car 类的生命周期与 Engine 类的生命周期紧密相连。
  • 由于是组合关系,Car 类在创建时通常会同时创建一个 Engine 类的对象,并在销毁时一并销毁。

5、继承关系(Inheritance)

表示一个类继承了另一个类的属性和方法。通常用带空心三角形的实线表示。

如图:

  • Dog 类继承了 Animal 类,因此可以拥有 Animal 类的方法 eatsleep
  • 除了继承了 Animal 类的方法外,Dog 类还添加了自己的方法 bark
  • 继承关系是单向的,从 DogAnimal
  • Dog 类是 Animal 类的特殊化,也可以说 Animal 类是 Dog 类的一般化。

6、实现关系(Realization)

表示一个类实现了一个接口。通常用带空心三角形的虚线表示。

如图:

  • Circle 类实现了 Shape 接口,因此必须实现接口中定义的方法 calculateArea()
  • 实现关系是单向的,从 CircleShape
  • 通过实现接口,Circle 类可以保证拥有 calculateArea() 方法的实现,同时也可以保持代码的灵活性。

关注公众号回复“设计模式源码”即可获取源码,请君笑纳 image.png