📜  UML类图

📅  最后修改于: 2021-01-11 13:16:41             🧑  作者: Mango

UML类图

类图描述了应用程序的静态视图。它表示驻留在系统中的对象的类型以及它们之间的关系。一个类由其对象组成,也可以从其他类继承。类图用于可视化,描述,记录系统的各个不同方面,并构造可执行的软件代码。

它显示了属性,类,功能和关系,以概述软件系统。它在一个单独的区域中构成类名称,属性和功能,有助于软件开发。由于它是类,接口,关联,协作和约束的集合,因此被称为结构图。

类图的目的

类图的主要目的是构建应用程序的静态视图。它是唯一被广泛用于构造的图,并且可以使用面向对象的语言进行映射。它是最流行的UML图之一。以下是下面给出的类图的目的:

  • 它分析和设计应用程序的静态视图。
  • 它描述了系统的主要职责。
  • 它是组件图和部署图的基础。
  • 它包含了正向和反向工程。

类图的好处

  • 它可以表示复杂系统的对象模型。
  • 通过概述编码之前应用程序的结构,它减少了维护时间。
  • 它提供了应用程序的一般示意图,以使您更好地理解。
  • 它通过突出显示要编程的所需代码来表示详细图表。
  • 这对利益相关者和开发人员很有帮助。

类图的重要组成部分

类图由三部分组成:

  • 上部:上部包含类的名称。类是共享相同关系,属性,操作和语义的相似对象的表示。给出代表类时应考虑的以下一些规则:
    1. 将班级名称的首字母大写。
    2. 将班级名称放在上部的中间。
    3. 类名必须以粗体格式书写。
    4. 抽象类的名称应使用斜体格式。
  • 中间部分:中间部分构成属性,这些属性描述了班级的素质。这些属性具有以下特征:
    1. 这些属性及其可见性因子(公共(+),私有(-),受保护(#)和封装(〜))一起被写入。
    2. 属性类的可访问性由可见性因子说明。
    3. 应该为该属性分配一个有意义的名称,这将解释其在类中的用法。
  • 下半部分:下半部分包含方法或操作。这些方法以列表的形式表示,其中每种方法都写在一行中。它演示了类如何与数据交互。

人际关系

在UML中,关系分为三种类型:

  • 依赖关系:依赖关系是两个或多个类之间的语义关系,其中一个类的更改导致另一类的更改。它形成了较弱的关系。在以下示例中,Student_Name取决于Student_Id。

  • 泛化:泛化是父类(超类)和子类(子类)之间的关系。在这种情况下,子类是从父类继承的。例如,活期帐户,储蓄帐户和信贷帐户是银行帐户的一般形式。

  • 关联:描述两个或多个对象之间的静态或物理连接。它描述了关系中有多少个对象。例如,部门与学院关联。

多重性:它定义了允许的属性实例的特定范围。如果未指定范围,则将其视为默认多重性。

例如,多名患者被送入一家医院。

聚集:聚集是关联的子集,表示具有关联。然后是关联。它定义了整体或部分关系。在这种关系中,子类可以独立于其父类而存在。

该公司拥有许多员工,即使有一位员工辞职,该公司仍然存在。

组成:组成是聚合的子集。它描绘了父代与其子代之间的依赖性,这意味着如果删除了一部分,则另一部分也将被丢弃。它代表了整体关系。

一个通讯录由多个联系人组成,如果删除该通讯录,所有联系人都将丢失。

抽象类

在抽象类中,没有任何对象可以是抽象类的直接实体。抽象类既不能声明也不能实例化。它用于查找各个类的功能。抽象类的符号类似于类的符号。唯一的区别是该类的名称用斜体写。由于它不涉及给定函数的任何实现,因此最好将抽象类与多个对象一起使用。

让我们假设我们有一个名为置换的抽象类,该类内部声明了一个方法,该方法将被称为drive() 。现在,此抽象类方法可以由任何对象实现,例如,汽车,自行车,踏板车,自行车等。

如何绘制类图?

类图最广泛地用于构建软件应用程序。它不仅代表系统的静态视图,而且代表应用程序的所有主要方面。总体上,类图的集合表示一个系统。

下面给出了绘制类图时需要记住的一些关键点:

  • 为了描述系统的完整方面,建议给类图一个有意义的名称。
  • 对象及其关系应事先确认。
  • 必须知道每个类的属性和方法(职责)。
  • 应指定最少数量的所需属性,因为更多数量的不需要的属性将导致复杂的图表。
  • 开发人员可以在需要时使用注释来描述图表的各个方面。
  • 在生成最终版本之前,应重绘制图表并对其进行多次修改以使其正确。

类图示例

下面给出了描述销售订单系统的类图。

类图的用法

类图用于表示系统的静态视图。它在组件和部署图的建立中起着至关重要的作用。它有助于构造可执行代码以对任何系统执行正向和反向工程,或者可以说它主要用于构造。它表示使用C++,Java等面向对象语言的映射。类图可用于以下目的:

  • 描述系统的静态视图。
  • 在静态视图中显示每个实例之间的协作。
  • 描述系统执行的功能。
  • 使用面向对象的语言构造软件应用程序。