UML类图教程

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

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

 

什么是Class?

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

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

例子

狗有状态- 颜色,名称,品种以及行为- 摇摆,吠叫,吃。对像是类的实例。

什么是课程?

UML类表示法

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

UML类表示法

Class名称:

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

类属性:

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

Class操作(方法):

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

课程操作

类可见性

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

类可见性

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

参数方向性

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

参数方向性

类图的视角

透视的选择取决于您在开发过程中的距离。例如,在域模型的制定过程中,您很少会超越概念角度分析模型通常包含概念和规范视角的混合。设计模型开发通常首先著重于规范视角,并演变为实现视角

可以从各种角度解释图表:

  • 概念:代表域中的概念
  • 规范:重点是软件中抽像数据类型(ADT)的接口
  • 实现:描述类如何实现其接口

视角影响要提供的细节量以及值得呈现的关系类型。如上所述,类名是唯一的必填信息。

类图的视角

Class之间的关系

UML不只是漂亮的图片。如果使用得当,UML会精确地传达如何从图中实现代码。如果精确解释,实现的代码将正确反映设计者的意图。您能描述一下这些关系相对于下图所示的目标编程语言的含义吗?

如果您还不能识别它们,那么本节的任何问题都无助于您理解UML类关系。一个类可能涉及与其他类的一个或多个关系。关系可以是以下类型之一:

班级之间的关系

继承(或泛化):

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

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

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

继承(或泛化)

继承示例- 形状

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

继承示例- 形状

协会

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

简单的联想

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

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

简单的联想

基数

基数用以下表示:

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

基数

聚合

一种特殊类型的关联。

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

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

聚合

组成

  • 一种特殊类型的聚合,其中部件在整个销毁时被销毁。
  • Class2的对象与Class1一起生存和死亡。
  • Class2不能自立。

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

组成

依赖

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

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

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

依赖

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

依赖

实现

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

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

实现

类图示例:订单系统

类图示例:订单系统

类图示例:GUI

类图还可以附加到类或关系的注释。

类图示例:GUI

您已经了解了类图是什么以及如何绘制类图。是时候绘制一个自己的类图。获取Visual Paradigm Community Edition,一个免费的UML软件,并使用免费的Class Diagram工具创建自己的类图。它易于使用且直观。

免费下载

免费类图示例

免费类图示例和模板可在在线类图软件中编辑:Visual Paradigm Online。使用模板作为起点来创建自己的类图。

类图- 类和包约束

类图- 包中的类(航空公司)

售票

自我联想

协会类和自我联想

销售订单系统

汽车

References

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章