UML(Unified Modeling Language,统一建模语言)类图是用于描述系统中类的静态结构及其关系的模型。它是面向对象设计和建模中最常用的一种图示。
UML 类图的基本构成
1. 类(Class)
- 类用一个矩形表示,分为三部分:
- 类名:矩形顶部,显示类的名称。
- 属性:中间部分,列出类的成员变量。
- 方法:底部部分,列出类的成员函数。
属性和方法的访问修饰符
+
:Public(公共的)-
:Private(私有的)#
:Protected(受保护的)
2. 类之间的关系
- 关联(Association)
表示两个类之间存在一种关系(平等的),用一条实线连接。
- 单向关联:箭头指向依赖方。
- 双向关联:无箭头。
- 自关联:指向自己。
单向关联,比如,每个乘客只有一张票。
双向关联,比如,每个消费者买多个产品,每个产品也会售卖给多个消费者。
自关联。
- 聚合(Aggregation)
是一种弱的 “整体-部分” 关系,用带空心菱形的实线表示。整体可以存在,即使部分不存在。
聚合,比如,公司和员工,一个公司包含有又多员工,但是,如果一个公司没有了,员工还可去别的公司。
- 组合(Composition)
是一种强的“整体-部分”关系,用带实心菱形的实线表示。部分不能独立于整体存在。
例如,公司和部门,公司没有了,部门也不会存在。
- 继承(Generalization)
表示类之间的继承关系,用带空心三角形的实线表示。耦合度最大。
- 实现(Realization)
表示类实现接口,用带空心三角形的虚线表示。
- 依赖(Dependency)
表示一个类依赖于另一个类,用带箭头的虚线表示。耦合性最弱的一种关联方式,临时性的关联,
UML 类图实例
以一个“图书管理系统”为例,类图可能包括如下几种类:
类描述
User
(用户):表示系统中的用户。Book
(书籍):表示系统管理的书籍。Library
(图书馆):代表图书馆本身。Admin
(管理员):User
的子类,负责管理书籍和用户。
类图表示
+----------------+ +----------------+ +---------------+
| Library | | Book | | User |
+----------------+ +----------------+ +---------------+
| - name |<>-------->| - title | | - username |
| - address | | - author | | - password |
+----------------+ | - isbn | +---------------+
| + getBooks() | +----------------+ | + login() |
| + addBook() | +---------------+
+----------------+ /\
extends
|
+----------------+
| Admin |
+----------------+
| - permissions |
+----------------+
| + addBook() |
| + removeBook() |
+----------------+
说明
-
关联关系
Library
与Book
之间为聚合关系(空心菱形),表示图书馆可以包含多个书籍,但书籍可以独立存在。
-
继承关系
Admin
继承了User
,继承关系用空心三角形表示。
-
类的属性和方法
- 每个类详细列出属性和方法,并使用修饰符标识访问权限。
-
职责分工
Library
提供管理书籍的功能。User
提供基础用户功能,而Admin
是其特化,添加了管理书籍和用户的权限。