UML 类图教程

UML类图是用于构建和可视化的面向对象的系统的图形表示法。统一建模语言 (UML) 中的类图是一种静态结构图,它通过显示系统的以下内容来描述系统的结构:

  • 类,
  • 他们的属性,
  • 操作(或方法),
  • 以及对象之间的关系。

什么是类?

类是对象的蓝图。对象和类齐头并进。我们不能只谈一个而不谈另一个。面向对象设计的重点不是关于对象,而是关于类,因为我们使用类来创建对象。所以一个类描述了一个对象将是什么,但它不是对象本身。

事实上,类描述了对象的类型,而对象是类的可用实例。每个对象都是从同一组蓝图构建的,因此包含相同的组件(属性和方法)。标准含义是对象是类和对象的实例——对象具有状态和行为。

例子

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

UML 类表示法

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

类名称:

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

类属性 (Attributes):

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

类操作(Methods):

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

类可见性 (Visibility)

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

  • 表示公共属性或操作
  • 表示私有属性或操作
  • 表示受保护的属性或操作

参数方向性 (Parameter Directionality)

操作(方法)中的每个参数都可以表示为 in、out或inout,它们指定了其相对于调用者的方向。此方向性显示在参数名称之前。

类图的透视图 (Perspectives of Class Diagram)

视角的选择取决于您在开发过程中走了多远。例如,在制定领域模型的过程中,您很少会超越概念视角。分析模型通常具有概念和规范观点的混合。设计模型开发通常会从高度强调规范视角开始,然后演变为实现视角。

可以从不同的角度解释图表:

  • 概念:表示领域中的概念
  • 规范:重点是软件中抽象数据类型(ADT)的接口
  • 实现:描述类将如何实现它们的接口

视角会影响要提供的细节数量和值得呈现的关系类型。正如我们上面提到的,类名是唯一的强制性信息。

类之间的关系 (Relationships between classes)

UML 不仅仅是漂亮的图片。如果使用得当,UML 准确地传达了应该如何从图表中实现代码。如果精确解释,实现的代码将正确反映设计者的意图。你能描述下图中每个关系相对于你的目标编程语言的含义吗?

如果您还不能识别它们,那么本节旨在帮助您理解 UML 类关系。一个类可能涉及与其他类的一种或多种关系。关系可以是以下类型之一:

继承(或泛化)Inheritance (Or Generalization):

泛化是更通用的分类器和更具体的分类器之间的分类关系。特定分类器的每个实例也是通用分类器的间接实例。因此,特定分类器继承了更一般分类器的特征。

  • 表示“is-a”关系。
  • 抽象类名称以斜体显示。
  • SubClass1 和 SubClass2 是 SuperClass 的特化。

下图显示了继承层次结构的示例。SubClass1 和 SubClass2 派生自 SuperClass。该关系显示为带有空心箭头的实线,该箭头从子元素指向父元素。

继承示例 – 形状

下图显示了具有两种样式的继承示例。尽管连接器的绘制方式不同,但它们在语义上是等价的。

关联 (Association)

关联是 UML 类图中的类之间的关系。它们由类之间的实线表示。关联通常使用反映现实世界问题域的动词或动词短语来命名。

简单关联

  • 两个对等类之间的结构链接。
  • Class1 和 Class2 之间存在关联

下图显示了一个简单关联的示例。有一个连接 <> 类 Class1 和 <> 类 Class2 的关联。该关系显示为连接两个类的实线。

基数 (Cardinality)

基数表示为:

  • 一对一
  • 一对多
  • 多对多

聚合 (Aggregation)

一种特殊类型的关联。

  • 它代表关系的“一部分”。
  • Class2 是 Class1 的一部分。
  • Class2 的许多实例(用 * 表示)可以与 Class1 相关联。
  • Class1 和 Class2 的对象具有不同的生命周期。

下图显示了聚合的示例。关系显示为实线,在关联端有一个未填充的菱形,它连接到表示聚合的类。

组成 (Composition)

  • 一种特殊类型的聚合,当整体被破坏时,部分被破坏。
  • Class2 的对象与 Class1 一起生存和死亡。
  • Class2 无法独立存在。

下图显示了一个合成示例。关系显示为实线,在关联端带有实心菱形,它连接到表示整体或组合的类。

依赖 (Dependency)

一个类的对象可能在方法代码中使用另一个类的对象。如果对象未存储在任何字段中,则将其建模为依赖关系。

  • 一种特殊类型的关联。
  • 如果对一个类的定义的更改可能导致另一个类的更改(但不是相反),则存在于两个类之间。
  • Class1 依赖于 Class2

下图显示了依赖关系的示例。该关系显示为带有空心箭头的虚线。

下图显示了依赖关系的另一个示例。Person 类可能有一个带有 Book 参数的 hasRead 方法,如果该人已经阅读了这本书(可能通过检查某个数据库),则该方法返回 true。

实现 (Realization)

实现是蓝图类和包含其各自实现级别细节的对象之间的关系。据说这个对象实现了蓝图类。换句话说,您可以将其理解为接口和实现类之间的关系。

例如,Owner 接口可能指定获取财产和处置财产的方法。Person 和 Corporation 类需要以非常不同的方式实现这些方法。

类图示例:订单系统

类图示例:GUI

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

现在尝试绘制UML类图

您已经了解了什么是类图以及如何绘制类图。是时候绘制自己的类图了。您是否正在寻找一个免费的 UML 工具来更快、更轻松、更快速地学习 UML?

Visual Paradigm Community Edition 是一个支持所有 UML 图类型的 UML 软件。它是一个国际获奖的 UML 建模器,但它易于使用、直观且完全免费。它易于使用且直观。

免费下载

发表回复

相关推荐

吴昊音乐作品欣赏 ——《白映》

白映https://www.zhihu.com/video/1640735169349967872

· 29秒前

《菜根譚》裡的教育智慧

文/學峰《菜根譚》是明代還初道人洪應明收集編著的一部論述修養、人生、處世、出世的語錄世集。《菜根譚》采儒、佛、道三傢之...

· 31秒前

造口袋總漏?這些原因你必須知道!

“為什麼我的造口袋總是更換不到1天就漏瞭呢?”若護理過程中遇到造口袋滲漏,一定先尋其原因再采取對應措施01. 造口周圍皮膚不...

· 35秒前

海水中管道腐蚀介绍

在腐蚀工程中,海水是需要被讨论环境中最重要的因素,而其中最容易引起问题的就是用于输送石油、气体的管道。现在就让我们一 ...

· 1分钟前

【精】大學生職業發展路徑-四大方向+四大維度深度解析(共69694字,宜深度閱讀,230327更新)

本文共69691字,耗時約263小時,預計閱讀時間85~120分鐘,宜深度閱讀(2023年1月11日更新)我自2016年起在復旦大學、上海交大...

· 4分钟前