UML-类图
本文最后更新于 2025年8月29日 上午
类图
UML类图是用于描述系统静态结构的一种模型,它展示了系统中的类、类的内部结构(属性和方法)以及类与类之间的关系。
类图的构成
类图由两部分构成:类和关系
类
UML类由三个部分组成
- 类名:每个类都必须有一个名字,字符串格式。
- 属性:类的成员变量,可以有很多个,也可以一个都没有。
- 可见性:公有(public)、私有(private)、受保护(protected)。UML对应符号:+、-、`#
- 名称:属性名:字符串格式。
- 类型:属性的数据类型。可以是基本类型,也可以自定义。
- 默认值:可选,属性初始值。
- 操作:实例对象行为,类的成员方法。
- 可见性:公有(public)、私有(private)、受保护(protected)。UML对应符号:+、-、`#
- 名称:属性名:字符串格式。
- 参数列表:
- 返回类型:
关系
依赖(Dependency)
是一种使用关系,一个类的变化可能影响另一个类。临时性的、最弱的关系。
简单记忆:A uses B
例如:驾驶员开车。
classDiagram
direction LR
class Dirver{
+Drive(Car car) void
}
class Car{
+Move() void
}
Dirver ..> Car:Dependency
关联(Association)
一种结构性的拥有关系,比依赖更强、更持久。可以是双向的也可以是单向的。
简单记忆:A has a B
例如:
- 公司跟员工是一个双向关联关系。
classDiagram
direction LR
class Company{
-employee:Employee[]
}
class Employee{
-company:Company
}
Company -- Employee:Association
- 客户和地址是一个单向关联关系
classDiagram
direction LR
class Customer{
-address:Address[]
}
class Address{
}
Customer --> Address:Association
- 关联对象为类本身的为自关联关系
classDiagram
direction LR
class Node{
-subNode:Node
}
Node --> Node:Association
聚合(Aggregation)
一种特殊的关联,表示整体与部分的关系,部分可以脱离整体而存在。是“has-a”关系。
简单记忆:A contains B (B可独立)
例如:
- 汽车发动机是汽车的组成部分。发动机脱离了汽车也可以。
classDiagram
direction LR
class Car{
-engine:Engine
+Car(Engine engine)
+SetEngine(Engine engine) void
}
class Engine{
}
Car o-- Engine:Aggregation
组合(Composition)
一种更强的聚合,表示严格的整体与部分关系,部分不能脱离整体而存在。生命周期一致。是“contains-a”关系。
简单记忆:A owns B (B不能独立)
例如:
- 人和大脑的关系
classDiagram
direction LR
class People{
-brain:Brain
}
class Brain{
}
People *-- Brain:Composition
泛化(Generalization)
泛化也就是继承关系,表示is-a的关系。
简单记忆:A is a B
例如:
classDiagram
direction LR
class People{
#name:string
#age:int
+walk() void
+talk() void
}
class Student{
-studentNo:string
+study() void
}
class Teacher{
-teacherNo:string
+teach() void
}
Student --|> People:Generalization
Teacher --|> People:Generalization
实现(Realization)
接口实现关系。
例如:
classDiagram
direction LR
class IWalk{
<<interface>>
+walk() void
}
class People{
}
class Monkey{
}
People ..|> IWalk:Realization
Monkey ..|> IWalk:Realization
UML-类图
http://example.com/2025/08/25/设计模式/UML-类图/