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-类图/
作者
Charles
发布于
2025年8月25日
许可协议