引言
UML中的类图是什么?
类图通过展示系统中的类及其类之间的关系,来描述面向对象系统的结构。类图还展示了类的约束和属性。

💡 试试看!正在寻找一个在线类图工具吗?只需点击下方的“绘制”按钮,即可在线创建你的类图。Visual Paradigm Online免费*且直观易用。你也可以先通过这个类图教程学习类图的相关知识,再开始使用。
类图符号
类
UML中类的表示方法是一个包含三个垂直堆叠部分的矩形,如图所示:

属性
类的属性部分将每个属性分别列在单独的一行上。属性部分是可选的,但若使用,则以列表格式显示类的每个属性。该行使用以下格式:
名称 : 属性类型
示例: cardNumber : Integer
操作
操作被记录在类图矩形的底部部分,该部分也是可选的。与属性类似,类的操作以列表格式显示,每个操作占据单独的一行。操作使用以下符号进行记录:
名称(参数列表) : 返回值类型
示例: calculateTax (Country, State) : Currency
关系
关联
某些对象由其他对象组成。关联表示两个类之间的“拥有”或“整体/部分”关系。在关联关系中,整体类的对象将部分类的对象作为实例数据。
在类图中,关联关系以带箭头的实线表示。
单向关联
在单向关联中,两个类相关联,但只有其中一个类知道该关系的存在。单向关联以一条实线加一个开口箭头表示,箭头指向已知的类。

双向(标准)关联
关联是两个类之间的连接。关联始终被认为是双向的,这意味着两个类都了解彼此及其关系,除非你将关联指定为其他类型。双向关联通过两个类之间的实线表示。

多重性
将多重性符号放置在关联的两端附近。这些符号表示一个类的实例与另一个类的一个实例之间的关联数量。
示例:一家公司会有一名或多名员工,但每位员工仅服务于一家公司。

| 符号 | 含义 |
|---|---|
1 |
恰好一个 |
0..1 |
零个或一个 |
*或0..* |
零个或多个 |
1..* |
一个或多个 |
0..3 |
零到三个 |
可见性
可见性用于表示哪些对象可以访问类中包含的信息,该类以……表示+, -, #和~如图所示:

| 符号 | 可见性 | 描述 |
|---|---|---|
+ |
公共 | 可从任何其他类访问 |
- |
私有 | 仅可在类本身内部访问 |
# |
受保护 | 可在类及其子类中访问 |
~ |
包 | 可在同一包内访问 |
泛化
泛化是泛化事物(称为父类)与该事物的更具体类型(称为子类)之间的关系。泛化有时被称为“是一种”的关系,通过继承过程建立。
在类图中,泛化关系以一条实线箭头表示,箭头为大号开口箭头,指向父类。

抽象类和方法
在继承层次结构中,子类实现具体细节,而父类定义其子类的框架。父类还充当子类将实现的通用方法的模板。

-
一个抽象类通常以斜体;或者,抽象类可使用文本注释表示,也称为构造型
{抽象},位于名称之后或下方。 -
一个抽象方法是一种没有实现的方法。要创建一个抽象方法,需创建一个操作并将其设为斜体.
实现
实现是一种两个事物之间的关系,其中一个事物(接口)规定了一个合同,另一个事物(类)通过实现该合同中指定的操作来保证履行该合同。
在类图中,实现关系以一条带空心箭头的虚线有向线表示,箭头指向接口。

依赖
依赖表示两个类之间的“使用”关系。在类图中,依赖关系以一条虚线有向线表示。
如果类A‘使用’类B,则以下陈述通常成立:
-
类B被用作类A中一个或多个方法的局部变量类型。
-
类B被用作类A中一个或多个方法的参数类型。
-
类B被用作类A中一个或多个方法的返回类型。
-
类A的一个或多个方法调用类B的一个或多个方法。

何时绘制类图?
大多数UML图无法直接映射到任何面向对象编程语言,除了类图之外。换句话说,类图理想情况下可以与UML类图一一对应。此外,类图在以下情况下非常有用:
-
描述系统的静态视图– 在某一时刻捕获类及其关系的结构。
-
建模静态视图中各元素之间的协作– 展示类如何通过关联和依赖进行交互。
-
描述系统执行的功能– 将操作与类关联,以说明行为。
-
使用面向对象语言构建软件应用程序– 作为Java、C#或Python等语言实现的蓝图。
-
为目标系统执行代码正向工程– 直接从类图生成骨架代码。
-
将类或组件分类为库以供未来重用– 记录可重用组件,用于模块化开发。
如何绘制类图?
按照以下逐步说明创建有效的类图:
-
识别问题领域中的对象并为每个对象创建类。
示例: 注册系统中的教师、学生、课程。 -
为这些类添加属性.
示例:姓名,地址,电话用于学生类。 -
为这些类添加操作.
示例:addStudent(学生)用于课程类。 -
使用适当的关联关系连接这些类.
示例: 使用关联关系将教师和课程联系起来。 -
可选地为关联连接器的端点指定多重性.
示例: 输入0..3用于连接教师和课程的关联关系中的课程端,表示一名教师最多可教授三门课程。
其他最佳实践
-
绘制包以对类进行逻辑分类以改善组织性和可读性:

-
为类名使用有意义的单数名词(例如:
客户,而不是客户们). -
保持图表聚焦:每个子系统或功能区域对应一个图表。
-
为属性和操作应用一致的命名规范。
-
在必要时使用注释或OCL(对象约束语言)来记录约束条件。
类图示例
示例1:销售订单系统
下面的类图示例展示了销售订单系统中涉及的类。请注意类模型中对 <<枚举>> 类的使用。

示例2:航班管理系统
下面的类图示例展示了一组与航班管理相关的类。这些类被归入一个包下。

想绘制一个类图吗?
你已经了解了类图是什么以及如何一步步绘制类图。是时候动手绘制属于你自己的类图了。使用Visual Paradigm Online免费绘制UML图。它易于使用,直观便捷。
* 免费版仅支持Visual Paradigm Online的非商业用途免费使用。非商业用途仅此而已。
结论
🎯 核心要点: 一个出色的类图并不追求完美——它追求的是清晰、沟通以及建立共同理解,从而推动软件质量的提升。从简单开始,频繁迭代,让您的图表随着系统的发展而不断演进。
参考文献
-
什么是UML?统一建模语言全面指南: 这个 深入介绍 解释了UML的目的、其主要的图类型,以及它如何支持 软件设计与系统建模.
-
什么是类图?——UML建模入门指南: 这个 信息丰富的概述 解释了类图的目的、组成部分及其在 软件开发与系统设计中的关键重要性.
-
面向初学者和专家的完整UML类图教程: 一个 逐步教程 旨在引导用户完成创建和理解UML类图的整个过程,以掌握 软件建模.
-
由Visual Paradigm提供的AI驱动的UML类图生成器: 这个 高级AI辅助工具 利用自然语言描述来 自动生成UML类图,显著简化了设计阶段。
-
14种UML图类型的概述——Visual Paradigm: 一份详细介绍了大量 图示符号 被划分为14种不同的UML模型,每种在 软件工程.
-
UML中的类图与对象图:主要区别: 本指南提供了一种清晰的对比在类图与对象图之间的对比,突出它们各自的结构并阐明何时使用每种类型.
-
从问题描述到类图:基于人工智能的文本分析: 探讨如何生成式人工智能将自然语言的问题描述转化为准确的类图用于结构化软件建模。
-
掌握类图:使用Visual Paradigm的深入探索: 一份全面的技术指南详细介绍了在Visual Paradigm建模环境中创建类图的方法。
-
真实案例研究:使用Visual Paradigm AI生成UML类图: 本研究展示了如何通过一个AI助手成功地将文本需求转化为一个真实工程项目的精确UML类图。
-
使用Visual Paradigm的逐步类图教程: 一份实用的指导指南涵盖了打开项目、添加类并构建完整图表以用于系统架构.











