UML 类图

DATE CHANGELOG
2023年4月30日 init

在 UML 中,类图是静态的。通过展示类、类属性、类操作和类之间的关系,来描述系统结构。

模型

模型是类途中对现实世界的抽象。

接口

一组行为的抽象。

---
title: 接口示例
---
classDiagram
class Speaker {
	<<interface>>
	speak(String statement) String 
}

抽象类

---
title: 类示例
---
classDiagram
class Abstract {
	<<abstract>>
}

具有属性和方法的对象。

---
title: 类示例
---
classDiagram
class Speakerman {
	String name
    speak(String statement) String 
}

可见性

#表示 public

-表示 private

#表示 protected

~表示 package 或者 internal

---
title: 可见性示例
---
classDiagram
class Visibility {
	+int n1
	-int n2
	#int n3
	~int n4
	
	+m1()
	-m1()
	#m3()
	~m4()
}

修饰符

*表示 abstract,斜体

$表示 static,下划线

---
title: 修饰符示例
---
classDiagram
class Modifier {
	int n1$
	
	+m1()*
    +m2()$
}

关系

关系是模型元素之间的连接。

继承

空心三角 + 实线,男人属于人。

Man is a Person

---
title: 继承示例
---
classDiagram
class Person {
	
}

class Man {
	
}

Person <|-- Man

实现

空心三角 + 虚线,鸟能飞。

Bird has Fly ability

---
title: 继承示例
---
classDiagram
class Fly {
	<<interface>>
}

class Bird {
	
}

Fly <|.. Bird

聚合

空心菱形 + 实线,教室拥有黑板,但黑板不是教室的一部分。

Classroom possess Blaskboard, but Blackboard isn’t part of Classroom

---
title: 聚合示例
---
classDiagram
class Classroom {
	Blackboard blackboard
}

class Blackboard {
	
}

Classroom o-- Blackboard

组合

实心菱形 + 实线,人有胳膊,同时胳膊不能独立存在。

Arm is part of Person

---
title: 组合示例
---
classDiagram
class Person {
	Arm arm
}

class Arm {
	
}

Person *-- Arm

依赖

箭头 + 虚线,人依赖水。

Person depand on Water

---
title: 依赖示例
---
classDiagram
class Person {
	Water water
}

class Water {
	
}

Water <.. Person

关联

箭头 + 实线,,人需要知道天气。

Person should know Climate

---
title: 关联示例
---
classDiagram
class Person {
	Climate climate
}

class Climate {
	
}

Climate <-- Person

总结

  1. 继承和实现可以相互替代。使用接口使用实现关系,类之间选择继承关系;
  2. 依赖和关联不常用。因为依赖关系和关联关系可以进一步定义为聚合关系或者组合关系;
  3. 聚合适用范围比组合更广;