简介
类图是统一建模语言(UML)的一种静态图,通过展示系统的类、属性、操作以及对象之间的关系,直观地表示系统的结构。它作为面向对象软件设计的蓝图,提供了一种清晰且简洁的方式来理解和记录系统的架构。
目的与功能
可视化系统结构
类图通过展示不同类之间的交互与关系,帮助开发人员理解并记录系统的结构。这种可视化表示对于设计健壮且可维护的软件系统至关重要。
软件建模
类图能够以高层次的抽象方式对软件进行建模,使开发人员可以专注于设计而无需深入源代码。这种抽象有助于在开发早期阶段发现潜在问题。
面向对象设计
类图是面向对象建模的基础。它们描绘了系统的构成要素及其相互作用,使得实现封装、继承和多态等面向对象原则变得更加容易。
数据建模
类图也可用于数据建模,表示系统内数据的结构和关系。这在数据库设计中尤其有用,因为需要明确界定实体及其相互关系。
代码蓝图
类图作为构建软件应用程序可执行代码的蓝图,为开发人员提供了清晰的路线图,确保实现与设计架构保持一致。
关键组件
类
类用被分为三个部分的矩形表示:
- 类名:顶部部分包含类的名称。
- 属性:中间部分列出定义类状态的属性或数据成员。
- 操作(方法):底部部分列出类可以执行的操作或函数。
关系
类之间的关系通过线条和符号表示:
- 泛化:表示继承关系,即一个类(子类)从另一个类(父类)继承属性和操作。它通过一个空心箭头表示,箭头从子类指向父类。
- 聚合:表示一个类包含另一个类的实例,但被包含的类可以独立存在。它通过连接到包含类的线条末端的空心菱形表示。
- 组合: 一种更强的聚合形式,其中包含的类不能脱离包含类而存在。它通过在连接到包含类的线条末端的实心菱形来表示。
- 关联: 表示两个类之间的关系,表明一个类使用或与另一个类交互。它通过一条实线连接两个类来表示。
使用 PlantUML 的示例图
基本类图
包含聚合和组合的图
包含关联的图
示例 – 订单系统

关键元素
-
类:
- 客户: 表示下订单的客户。
- 属性:
姓名(字符串),地址(字符串)。
- 属性:
- 订单: 表示客户下的订单。
- 属性:
日期(日期),状态(字符串)。 - 操作:
计算小计(),计算税额(),calcTotal(),calcTotalWeight().
- 属性:
- 订单明细: 表示订单中每个项目的详细信息。
- 属性:
数量(整数),税额状态(字符串)。 - 操作:
calcSubTotal(),calcWeight(),calcTax().
- 属性:
- 项目: 表示所订购的项目。
- 属性:
运输重量(浮点数),描述(字符串)。 - 操作:
getPriceForQuantity(),getTax(),inStock().
- 属性:
- 付款 (抽象类): 表示订单的付款。
- 属性:
金额(浮点数)。
- 属性:
- 现金: Payment 的子类,表示现金付款。
- 属性:
支付金额(浮点数)。
- 属性:
- 支票: Payment 的子类,表示支票付款。
- 属性:
姓名(字符串),银行编号(字符串),是否授权(布尔值)。
- 属性:
- 信用卡: Payment 的子类,表示信用卡付款。
- 属性:
卡号(字符串),类型(字符串),有效期(日期),已授权(布尔值)。
- 属性:
- 客户: 表示下订单的客户。
-
关系:
- 关联:
- 客户和订单: 客户可以下多个订单(
0..*订单端的多重性)。 - 订单和订单明细: 一个订单可以包含多个订单明细(
1..*订单明细端的多重性)。 - 订单明细和商品: 每个订单明细关联一个商品(
1商品端的多重性)。
- 客户和订单: 客户可以下多个订单(
- 聚合:
- 订单和订单明细: 表示订单明细是订单的一部分,但订单明细可以独立存在。
- 泛化:
- 支付及其子类(
现金,支票,信用):表示继承关系,其中现金、支票和信用是支付的具体类型。
- 支付及其子类(
- 角色:
- 订单明细和项目:角色
行项目表示订单明细在订单上下文中的特定角色。
- 订单明细和项目:角色
- 关联:
-
多重性:
- 表示一个类的实例可以与另一个类的单个实例关联的实例数量。例如,一个客户可以下多个订单(
0..*).
- 表示一个类的实例可以与另一个类的单个实例关联的实例数量。例如,一个客户可以下多个订单(
-
抽象类:
- 支付:标记为抽象类,表示它不能被直接实例化,并作为其他支付类型的基类。
说明
- 客户:表示下单的实体,具有姓名和地址等基本属性。
- 订单: 表示订单本身,包含日期和状态等属性,以及计算小计、税额、总额和总重量的操作。
- 订单明细: 表示订单中每个项目的详细信息,包括数量和税额状态,以及计算小计、重量和税额的操作。
- 商品: 表示所订购的商品,包含运输重量、描述等属性,以及获取数量价格、税额和库存状态的操作。
- 支付: 一个抽象类,表示订单的支付,包含金额属性。它有不同支付方式的子类:
- 现金: 表示现金支付,包含已支付现金的属性。
- 支票: 表示支票支付,包含姓名、银行编号和授权状态属性。
- 信用卡: 表示信用卡支付,包含卡号、类型、有效期和授权状态属性。
该图有效地捕捉了订单处理系统内部的结构和关系,清晰地展示了各个组件之间的交互方式。
结论
类图是UML建模中的重要工具,能够以清晰且结构化的方式表示系统的架构。通过理解关键组件及其关系,开发人员可以设计出健壮且可维护的软件。使用PlantUML等工具,这些图可以轻松可视化并在团队成员间共享,从而提升协作效率,并确保对系统结构有统一的理解。
参考文献
-
Visual Paradigm Online 免费版:
-
出色的绘图功能:
-
全面的绘图选项:
-
学习与自定义:
-
社区与支持:
这些参考内容突出了使用 Visual Paradigm 创建类图的全面功能和优势,使其成为个人和专业用途的推荐工具










