UML 类图综合指南

统一建模语言UML ) 是软件工程领域的通用开发建模语言,旨在为系统设计的可视化提供标准方法。创建 UML 的最初动机是希望标准化不同的符号系统和软件设计方法。在 UML 中,类图是六种结构图之一。类图是对象建模过程的基础,对系统的静态结构进行建模。

结构图显示了系统的静态结构及其在不同抽象和实现级别上的部分,以及它们之间的关系。结构图中的元素代表系统的有意义的概念,可能包括抽象概念、现实世界和实现概念,结构图有以下七种类型:

 

14 种 UML 图类型概述

什么是类图?

统一建模语言 (UML) 中的类图是一种静态结构图,它通过显示系统的类、它们的属性、操作(或方法)以及对象之间的关系来描述系统的结构。 类图是系统或子系统的蓝图。您可以使用类图对构成系统的对象进行建模,显示对象之间的关系,并描述这些对象的角色和它们提供的服务。

UML 的起源

UML 的目标是提供一种标准符号,可以被所有面向对象的方法使用,并选择和集成前体符号的最佳元素。UML 被设计用于广泛的应用程序。因此,它为广泛的系统和活动(例如,分布式系统、分析、系统设计和部署)提供​​了结构。

UML 是一种由 OMT 统一产生的符号

  1. 对象建模技术 OMT  [ James Rumbaugh  1991]——最适合分析和数据密集型信息系统。
  2. Booch [ Grady Booch  1994]——非常适合设计和实施。Grady Booch 与 Ada 语言进行了广泛的合作,并且是该语言的面向对象技术开发的主要参与者。虽然 Booch 方法很强大,但符号不太受欢迎(很多云形状主导了他的模型——不是很整齐)
  3. OOSE(面向对象的软件工程 [ Ivar Jacobson  1992])——以称为用例的模型为特色。用例是一种强大的技术,可用于理解整个系统(OO 传统上薄弱的领域)的行为。

1994 年,OMT 的创建者 Jim Rumbaugh 在离开通用电气并加入 Rational Corp 的 Grady Booch 时震惊了软件界。合作的目的是将他们的想法合并为一个单一的、统一的方法(该方法的暂定名称)。方法确实是“统一方法”)。

UML 历史

类图的目的

类图在系统设计的许多阶段都很有用。在分析阶段,类图可以帮助您了解问题域的需求并识别其组件。在面向对象的软件项目中,项目早期创建的类图包含的类,在编写代码时往往会转化为实际的软件类和对象。

稍后,您可以将早期的分析和概念模型细化为类图,以显示系统的特定部分、用户界面、逻辑实现等。

类图广泛用于建模面向对象系统,因为它们是唯一可以直接映射到面向对象语言的 UML 图。在软件开发周期的实施阶段,您可以使用类图将模型转换为代码,将代码转换为模型。

类示例

狗有状态——颜色、名字、品种以及行为——摇摆、吠叫、进食。对象是类的一个实例。

什么是班级?

UML 类表示法

类表示封装状态(属性)和行为(操作)的概念。每个属性都有一个类型。每个 操作 都有一个 签名。 类名是 唯一的强制性信息

UML 类表示法

班级名称:

  • 类的名称出现在第一个分区中。

类属性:

  • 属性显示在第二个分区中。
  • 属性类型显示在冒号之后。
  • 属性映射到代码中的成员变量(数据成员)。

类操作(方法):

  • 操作显示在第三个分区中。它们是班级提供的服务。
  • 方法的返回类型显示在方法签名末尾的冒号之后。
  • 方法参数的返回类型显示在参数名称后面的冒号后面。操作映射到代码中的类方法

类操作

类关系

一个类可能涉及与其他类的一种或多种关系。关系可以是以下类型之一:(有关关系的图形表示,请参见右图)。

关系类型 图示
继承 (或泛化):
  • 表示“is-a”关系。
  • 抽象类名称以斜体显示。
  • SubClass1 和 SubClass2 是 Super Class 的特化。
  • 带有空心箭头的实线,从子类指向父类
遗产
简单关联
  • 两个对等类之间的结构链接。
  • Class1 和 Class2 之间存在关联
  • 连接两个类的实线
简单关联
聚合:一种特殊类型的关联。它代表关系的“一部分”。
  • Class2 是 Class1 的一部分。
  • Class2 的许多实例(用 * 表示)可以与 Class1 相关联。
  • Class1 和 Class2 的对象具有不同的生命周期。
  • 连接到复合类的关联端带有未填充菱形的实线
聚合
组成:一种特殊类型的聚合,当整体被破坏时,部分被破坏。
  • Class2 的对象与 Class1 一起生存和死亡。
  • Class2 无法独立存在。
  • 与复合材料类相连的关联处带有实心菱形的实线
作品
依赖
  • 如果对一个类的定义的更改可能导致对另一个类的更改(但不是相反),则存在于两个类之间。
  • Class1 依赖于 Class2
  • 带有空心箭头的虚线
依赖

关系名称

  • 关系名称写在关联行的中间。
  • 当您大声朗读它们时,好的关系名称是有意义的:
    • “每个电子表格都 包含 一些单元格”,
    • “表达式  值”
  • 它们通常有一个 小箭头来显示 读取关系的方向,例如,表达式计算为值,但值不计算为表达式。

关系名称

关系——角色

  • 角色是关联的方向性目的。
  • 角色写在关联行的末尾,描述了该类在关系中的作用。
    • 例如,一个单元格与一个表达式相关。关系的本质是表达式是单元格的 公式 。

类属性和操作的可见性

在面向对象的设计中,属性和操作有一个可见性的表示法。UML 标识了四种类型的可见性:  public、  protected、  private和 package

类中属性和操作名称前的 +、-、# 和 ~ 符号表示属性和操作的可见性。

  • + 表示公共属性或操作
  • – 表示私有属性或操作
  • # 表示受保护的属性或操作
  • ~ 表示包属性或操作

类可见性示例

简单类

在上面的例子中:

  • MyClassName 的 attribute1 和 op1 是公共的
  • attribute3 和 op3 受到保护。
  • attribute2 和 op2 是私有的。

下面为不同类的成员显示了每种可见性类型的访问权限。

访问权 公开 (+) 私人的 (-) 受保护 (#) 包(~)
同一班级的成员 是的 是的 是的 是的
派生类的成员 是的 是的 是的
任何其他类别的成员 是的 在同一个包中

多样性

每个类有多少个对象参与关系和多重性可以表示为:

  • 正好一个 – 1
  • 零或一 – 0..1
  • 许多 – 0..* 或 *
  • 一个或多个 – 1..*
  • 确切数字 – 例如 3..4 或 6
  • 或复杂的关系——例如 0..1、3..4、6.* 表示除 2 或 5 之外的任意数量的对象

多重性示例

  • 要求:一个学生可以参加多门课程,许多学生可以参加一门课程。
  • 在下面的示例中, 类图 (左侧)描述了上述静态模型的需求陈述,而对象图(右侧)显示了课程注册的快照(类图的实例)分别是软件工程和数据库管理课程)

对象图

聚合示例 – 计算机和部件

  • 聚合是关联的一种特殊情况,表示“包含”层次结构
  • 聚合是父类,组件是子类

聚合示例

继承示例——细胞分类

  • 继承是表示“种类”层次结构的关联的另一个特例
  • 继承通过引入分类法来简化分析模型
  • 子类继承父类的属性和操作。

继承示例

类图 – 图表工具示例

类图也可能附有类或关系的注释。注释以灰色显示。

类图示例

在上面的例子中:

我们可以通过阅读以下几点来解释上述类图的含义。

  1. 形状是一个抽象类。它以斜体显示。
  2. 形状是一个超类。Circle、Rectangle 和 Polygon 是从 Shape 派生的。换句话说,圆就是形状。这是一种泛化/继承关系。
  3. DialogBox 和 DataController 之间存在关联。
  4. 形状是窗口的一部分。这是一种聚合关系。形状可以在没有窗口的情况下存在。
  5. 点是圆的一部分。这是一种组合关系。没有圆,点就不能存在。
  6. 窗口依赖于事件。但是,Event 不依赖于 Window。
  7. Circle 的属性是半径和中心。这是一个实体类。
  8. Circle 的方法名称是 area()、circ()、setCenter() 和 setRadius()。
  9. Circle 中的参数 radius 是 float 类型的 in 参数。
  10. Circle 类的方法 area() 返回一个 double 类型的值。
  11. Rectangle 的属性和方法名是隐藏的。图中的其他一些类也隐藏了它们的属性和方法名称。

类图示例:订单系统

类图示例:订单系统

类图示例:GUI

类图也可能附有类或关系的注释。

类图示例:GUI

处理复杂系统——多类图还是单类图?

不可避免地,如果您正在对大型系统或大型业务领域进行建模,那么您必须考虑许多实体。我们应该使用多个还是单个类图来建模问题?答案是:

  • 与其在单个类图上对每个实体及其关系进行建模,不如使用多个类图。
  • 将系统划分为多个类图使系统更易于理解,特别是如果每​​个图都是系统特定部分的图形表示。

软件开发生命周期中类图的观点

我们可以在软件开发生命周期的不同开发阶段使用类图,  并且通常通过在我们前进的过程中逐步在三个不同的视角(详细程度)中对类图进行建模:

概念视角:图表被解释为描述现实世界中的事物。因此,如果您从概念的角度来看,您将绘制一个表示所研究领域中概念的图表。这些概念自然会与实现它们的类相关。概念视角被 认为与语言无关

规范视角:这些图被解释为描述具有规范和接口但不承诺特定实现的软件抽象或组件。因此,如果您从规范的角度来看,我们正在 查看软件的接口,而不是实现。

实施视角:这些图被解释为以特定技术和 语言描述软件实施。因此,如果您从实施的角度来看,我们正在 研究软件实施

寻找免费的类图表工具?

Visual Paradigm Online(VP Online)免费版是一款免费的在线绘图软件,支持类图、其他UML图、ERD工具和组织图工具。它有一个简单而强大的编辑器,可让您快速轻松地创建类图。这个免费的 UML 编辑器没有广告,没有访问期限,也没有限制,例如图表的数量、形状的数量等。您拥有为个人和非商业目的创建的图表。

在线类图工具

在您的桌面上寻找更正式的 UML 建模?

Visual Paradigm Community Edition 于 2004 年推出,旨在  为非商业目的提供免费的 UML 软件,支持刚开始 UML 建模的用户,以及需要免费的跨平台 UML 建模软件供个人使用的用户,例如就像在学生项目中应用 UML。

视觉范式屏幕

用于各种非商业目的的免费 UML 建模工具。支持 13 个 UML 2.x 图

支持 13 个 UML 2.x 图表的免费 UML 工具

我们被全球超过 100 万台设备采用,并且还在不断增长。许多人每天都在使用 Visual Paradigm 的付费版来绘制专业的 UML 和 ERD 图,用于系统和数据库的设计和分析。

原因 2

IT 专业人士和大型组织的信任

世界各地的许多蓝筹组织、IT 公司、顾问、大学、非政府组织和政府单位都采用了 Visual Paradigm(付费版)。下图显示了我们的一些付费客户。

视觉范式客户

原因 3

高品质——屡获殊荣

我们不仅受到全球知名企业的信赖,也受到业界的信赖。Visual Paradigm 是多个国际奖项的获得者。

视觉范式奖

原因4

学术界使用最广泛的建模平台

学术界使用最广泛的 UML 工具,已被数千所大学和学院采用。

使用视觉范式的学校

原因 5

大量免费学习资源(由 VP Community Circle 提供支持)

数百个 UML 和 ERD 图示例和模板

数百个 UML 和 ERD 示例 可导入 Visual Paradigm 进行即时实验或开始使用您自己的 UML 模型。全部免费。

原因 6

升级到商业版的路径,以实现广泛的应用和可能性

轻松升级大量附加功能(例如,BPMN 和团队协作支持)并用于商业用途,起价 为 6 美元/月

Visual Paradigm 中的打包功能

理由 7

活跃的用户论坛以获得帮助并交流想法和经验

在 Visual Paradigm 的活跃用户论坛中支持、分享和交流您的想法 。

视觉范式论坛

原因 8

跨平台、用户友好、快速响应的应用程序

Visual Paradigm 可以在 Windows、Linux 和 Mac 等不同平台上运行。其直观的界面和强大的建模功能使建模变得简单快捷!

Leave a Reply

您的电子邮箱地址不会被公开。