UML类图教程:带示例的抽象类
UML 图中的类是什么?
UML 图中的类是用于创建对象或一组对象的蓝图。类定义了一个对象可以做什么。它是创建各种对象并在系统中实现其行为的模板。UML 中的类由一个矩形表示,其中包含类名、属性和操作的行。
什么是类图?
软件工程中的类图是一种静态结构,通过显示类、属性、操作以及它们之间的关系来提供软件系统的概览。此图在单独指定的隔间中包含类名、属性和操作。类图有助于构建软件应用程序开发的代码。
类图定义了系统中对象的类型以及它们之间存在的不同类型的关系。它提供了应用程序的高级视图。这种建模方法几乎可以与所有面向对象的方法一起运行。一个类可以引用另一个类。一个类可以拥有自己的对象,或者可以从其他类继承。
类图的好处
- 类图展示了即使是复杂信息系统的数据模型
- 它在研究实际代码之前提供了应用程序结构方式的概览。这可以轻松减少维护时间
- 它有助于更好地理解应用程序的总体图式。
- 允许绘制详细的图表,以突出需要编程的代码
- 对开发人员和其他利益相关者有帮助。
UML 类图的基本元素
UML 类图的基本元素是
- 类名
- 属性
- 操作
类名
类名仅在类的图形表示中需要。它出现在最上面的隔间中。类是对象的蓝图,可以共享相同的关系、属性、操作和语义。类显示为矩形,在其各自的隔间中包含名称、属性和操作。
表示类时必须遵循以下规则
- 类名应始终以大写字母开头。
- 类名应始终位于第一个隔间的中央。
- 类名应始终以粗体格式书写。
- UML 抽象类名应以斜体格式书写。
属性
属性是类中命名的属性,它描述了正在建模的对象。在类图中,此组件位于名称隔间正下方。
派生属性是从其他属性计算得出的。例如,学生的年龄可以根据他的出生日期轻松计算。
属性特征
- 属性通常与可见性因子一起写入。
- 公共、私有、保护和包是四种可见性,分别用+、-、#或~符号表示。
- 可见性描述了类属性的可访问性。
- 属性必须有一个有意义的名称,以描述其在类中的用途。
关系
UML 中主要有三种关系
- 依赖关系
- 泛化
- 关联
依赖性
依赖关系是指两个或多个类之间的关系,其中一个类的更改可能会强制更改另一个类。但是,它总是会产生较弱的关系。依赖关系表示一个类依赖于另一个类。
在下面的 UML 类图示例中,Student 依赖于 College
泛化
泛化有助于将子类连接到其超类。子类继承自其超类。泛化关系不能用于模拟接口实现。类图允许从多个超类继承。
在此示例中,Student 类泛化自 Person 类。
关联
这种关系表示类 A 和类 B 之间的静态关系。例如;一名员工为某个组织工作。
以下是有关关联的一些规则
- 关联通常是动词或动词短语,或名词或名词短语。
- 它应该命名,以指示在关联路径末端附加的类所扮演的角色。
- 自反关联的强制要求
在此示例中,显示了学生与学院之间的关系,即学习。
多重性
多重性是与属性相关的因子。它指定在类初始化时创建多少个属性实例。如果未指定多重性,则默认情况下将其视为默认多重性。
假设一所大学有 100 名学生。一所大学可以有多个学生。
聚合
聚合是一种特殊的关联,它模拟了聚合及其部分之间的整体-部分关系。
例如,College 类由一个或多个学生组成。在聚合中,包含的类从不完全依赖于容器的生命周期。在这里,即使没有学生,College 类仍然存在。
组合
组合是一种特殊的聚合,当一个类是另一个类的一部分时,它表示两个类之间的强所有权。
例如,如果 College 由 Student 类组成。College 可以包含许多学生,而每个学生只属于一个 College。因此,如果 College 无法运行,所有学生也会被移除。
聚合与组合
聚合 | 组合 |
---|---|
聚合表示一种关系,其中子类可以独立于父类存在。例如:Automobile(父类)和 Car(子类)。因此,如果您删除 Automobile,子类 Car 仍然存在。 | 组合显示了子类永远无法独立于父类存在的关系。例如:House(父类)和 Room(子类)。Rooms 永远不会脱离 House。 |
抽象类
它是一个具有操作原型的类,但没有实现。也可以有一个不包含任何声明操作的抽象类。抽象类有助于识别类之间的功能。让我们看一个抽象类的例子。假设我们有一个名为 motion 的抽象类,其中声明了一个方法或操作。在抽象类中声明的方法称为move()。
此抽象类方法可供任何对象(如汽车、动物、机器人等)用于更改当前位置。将此抽象类方法与对象一起使用效率很高,因为对于给定函数没有提供实现。我们可以以任何方式将其用于多个对象。
在 UML 中,抽象类的表示法与类相同。类与抽象类之间唯一的区别是类名严格以斜体书写。
抽象类不能被初始化或实例化。
在上面的抽象类表示法中,只有一个抽象方法可以被类的多个对象使用。
UML 类图示例
创建类图是一个直接的过程。它不涉及太多技术细节。这里有一个例子
ATM 系统非常简单,因为客户需要按一些按钮来接收现金。但是,ATM 系统需要通过多层安全保护。这有助于防止欺诈,并向银行客户提供现金或所需详细信息。
下面是一个 UML 类图示例
也请查看:- UML 图:历史、类型、特性、版本、工具
软件开发生命周期中的类图
类图可用于各种软件开发阶段。它有助于从三个不同的角度对类图进行建模。
1. 概念视角:概念图描述了现实世界中的事物。您应该绘制一个图表来表示正在研究的领域中的概念。这些概念与类相关,并且总是与语言无关。
2. 规范视角:规范视角描述了具有规范和接口的软件抽象或组件。但是,它不承诺特定的实现。
3. 实现视角:这种类型的类图用于特定语言或应用程序的实现。实现视角用于软件实现。
类图设计的最佳实践
类图是用于软件应用程序开发最重要的 UML 图。在绘制类图时,需要考虑许多属性。它们代表了软件应用程序的各个方面。
这里有一些在绘制类图时应注意的事项
- 给类图的名称必须有意义。此外,它应该描述系统的真实方面。
- 需要提前识别每个元素之间的关系。
- 需要识别每个类的职责。
- 对于每个类,应指定最少数量的属性。因此,不必要的属性很容易使图变得复杂。
- 每当需要定义图表的某些方面时,都应包含用户注释。在绘制完成后,软件开发团队必须能够理解。
- 最后,在创建最终版本之前,需要在普通纸上绘制图表。此外,在准备好最终提交之前,应对其进行修改。
结论
- UML 是用于指定、设计和可视化软件系统构件的标准语言
- 类是对象的蓝图
- 类图描述了系统中对象的类型以及它们之间存在的不同类型的关系
- 它允许分析和设计软件应用程序的静态视图
- 类图是用于软件应用程序开发最重要的 UML 图
- UML 类图的基本元素是 1) 类 2) 属性 3) 关系
- 类图提供了应用程序结构方式的概览,然后才研究实际代码。它肯定会减少维护时间
- 类图可用于映射面向对象编程语言,如 Java、C++、Ruby、Python 等。
也请查看:- UML 图教程(面向初学者):在线免费学习 UML