UML类图:全面解析与应用指南
立即解锁
发布时间: 2025-08-15 01:14:29 阅读量: 37 订阅数: 29 AIGC 


编写出色的代码:工程软件的核心原则与实践
### UML 类图:全面解析与应用指南
在软件开发中,UML(统一建模语言)类图是一种至关重要的工具,它为定义程序中的数据类型、数据结构以及对这些数据的操作提供了基础,也是面向对象分析(OOA)和面向对象设计(OOD)的基石。下面我们将深入探讨 UML 类图的各个方面。
#### 1. 面向对象分析与设计中的 UML 类图
UML 的创建者旨在设计一种正式的系统,用于设计面向对象的软件,以取代 20 世纪 90 年代流行的结构化编程形式。在 UML 中,我们可以通过类图来表示类(数据类型)和对象(数据类型的实例变量)。
UML 类图有三种主要形式:
- **完整类图**:包含类名、属性和操作,属性对应类的数据字段成员(变量和常量),代表类内部的信息;操作对应表示类行为的活动,包括方法、函数、过程等代码。
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(ClassName):::process --> B(Attributes):::process
A --> C(Operations):::process
```
- **部分类图**:当不需要列出类的所有属性和操作时,可以使用部分类图。缺少属性或操作并不意味着它们不存在,只是在当前上下文中不需要添加到图中。
- **简单类图**:用一个简单的矩形表示类,只包含类名。这并不意味着类没有属性或操作,只是这些项在当前图中不相关。
#### 2. 类图中的可见性
UML 定义了四种类型的类成员可见性,这些可见性借鉴了 C++ 和 Java 等语言,其他语言如 Swift 也支持这些可见性:
| 可见性类型 | 符号 | 说明 |
| --- | --- | --- |
| 公共可见性(Public) | + | 公共类成员对包含该公共项的类内外的所有类和代码都是可见的。在设计良好的面向对象系统中,公共项通常是操作,形成类与外部世界的接口。虽然也可以将属性设为公共,但这通常会破坏面向对象编程的主要优点之一——封装。在 UML 中,公共属性和操作前缀为加号(+)。 |
| 私有可见性(Private) | - | 私有属性和操作只能在类内部访问,它们是封装的体现。在类图中,用减号(-)表示私有实体。建议将不需要其他可见性的属性和操作设为私有,并尽量确保所有属性都是类的私有成员。如果外部代码需要访问数据字段,可以使用公共访问器函数(getter 和 setter)。 |
| 受保护可见性(Protected) | # | 在某些特殊情况下,如继承时,需要使用介于公共和私有之间的可见性——受保护可见性。继承是面向对象编程的“三大特性”之一,允许一个类从另一个类继承所有特性。私有可见性的问题是,继承类无法访问私有字段,而受保护可见性放宽了这些限制,允许继承类访问,但不允许外部类访问。在 UML 中,用井号(#)表示受保护可见性。 |
| 包可见性(Package) | ~ | 包可见性介于私有和受保护之间,主要是 Java 的概念。其他语言如 Swift、C++ 和 C# 可以使用命名空间来模拟包可见性,但语义并不完全相同。包保护的字段在同一个包中的所有类中可见,包外的类(即使是继承类)无法访问具有包可见性的项。在 UML 中,用波浪号(~)表示包可见性。 |
如果所使用的编程语言不支持 UML 指定的可见性类型,可以用更公共的可见性替代更私有的可见性。例如,高级汇编(HLA)语言只支持公共字段;C++ 仅部分支持包可见性;Swift 支持包可见性的变体。为避免滥用额外的可见性,可以在属性或操作的名称中添加可见性符号,如在受保护的名称前加上 prot_ 并声明为公共对象。
#### 3. 类属性
UML 类中的属性(也称为数据字段或简称为字段)保存与对象相关的数据。属性具有可见性、名称,还可以有数据类型和初始值。
属性的各个方面如下:
- **属性可见性**:通过在属性名称前加上 +、-、# 或 ~ 符号来指定公共、私有、受保护和包可
0
0
复制全文
相关推荐









