UML高级类与类图创建全解析
立即解锁
发布时间: 2025-08-16 02:43:48 阅读量: 4 订阅数: 10 


UML用户指南:从入门到精通
### UML高级类与类图创建全解析
#### 1. 类图创建基础
在UML中创建类图时,我们可以使用工具通过查询模型来创建。具体操作步骤如下:
1. 可以从一个或多个类开始。
2. 通过遵循特定关系或查找相邻类来扩展图表。
3. 根据需要暴露或隐藏类图内容的细节,以传达你的意图。
在创建类图时,需要记住每个类图只是系统静态设计视图的图形表示。单个类图不需要捕获系统设计视图的所有内容,系统的所有类图共同代表系统的完整静态设计视图,而每个类图仅代表一个方面。
一个结构良好的类图应具备以下特点:
- 专注于传达系统静态设计视图的一个方面。
- 仅包含理解该方面所必需的元素。
- 提供与其抽象级别一致的细节,仅包含理解所必需的修饰。
- 不过于简约,以免误导读者关于重要语义的信息。
绘制类图时,还需注意以下几点:
- 给类图起一个能传达其目的的名称。
- 布局元素以减少交叉线。
- 空间上组织元素,使语义相近的元素在物理上靠近。
- 使用注释和颜色作为视觉提示,以吸引读者对图表重要特征的注意。
- 尽量不要显示太多种类的关系,通常每个类图倾向于以一种关系为主导。
#### 2. 分类器概述
在UML中,类是面向对象系统最重要的构建块,但类只是更通用构建块——分类器的一种。分类器是描述结构和行为特征的机制,包括类、接口、数据类型、信号、组件、节点、用例和子系统等。
分类器(尤其是类)具有许多高级特性,可对多重性、可见性、签名、多态性等特征进行建模。在UML中,还可以对类的语义进行建模,以表达不同程度的形式化含义。
不同类型的分类器及其特点如下表所示:
| 分类器类型 | 描述 |
| ---- | ---- |
| 类 | 描述一组共享相同属性、操作、关系和语义的对象 |
| 接口 | 一组用于指定类或组件服务的操作 |
| 数据类型 | 值没有标识的类型,包括基本内置类型和枚举类型 |
| 信号 | 实例之间通信的异步刺激规范 |
| 组件 | 系统的物理可替换部分,符合并提供一组接口的实现 |
| 节点 | 运行时存在的物理元素,代表计算资源 |
| 用例 | 系统执行的一组操作序列的描述,产生对特定参与者有价值的可观察结果 |
| 子系统 | 元素的分组,其中一些元素构成对其他包含元素提供的行为的规范 |
#### 3. 分类器的高级特性
##### 3.1 可见性
分类器的属性和操作的可见性是一个重要细节,它指定了该特性是否可以被其他分类器使用。在UML中,可以指定三种可见性级别:
- **公共(public)**:任何具有对给定分类器可见性的外部分类器都可以使用该特性,用符号“+”前缀表示。
- **受保护(protected)**:分类器的任何后代都可以使用该特性,用符号“#”前缀表示。
- **私有(private)**:只有分类器本身可以使用该特性,用符号“-”前缀表示。
在指定分类器特性的可见性时,通常希望隐藏所有实现细节,只暴露执行抽象职责所必需的特性,这是信息隐藏的基础,对构建可靠、有弹性的系统至关重要。如果未明确为特性添加可见性符号,通常可以假定它是公共的。
##### 3.2 作用域
分类器的属性和操作的所有者作用域也是一个重要细节,它指定了该特性是出现在分类器的每个实例中,还是所有实例共享该特性的单个实例。在UML中,可以指定两种所有者作用域:
- **实例(instance)**:分类器的每个实例都持有该特性的自己的值。
- **分类器(classifier)**:所有实例共享该特性的一个值。
分类器作用域的特性通过下划线显示其名称,没有修饰则表示该特性是实例作用域。一般来说,大多数分类器的特性是实例作用域,分类器作用域的特性常用于需要在一组实例之间共享的私有属性,以及创建类实例的操作。
##### 3.3 抽象、根、叶和多态元素
在使用泛化关系建模类的层次结构时,通常会指定某些类为抽象类,即它们不能有直接实例,在UML中通过用斜体书写类名来指定抽象类。而具体类则可以有直接实例。
此外,还可以指定类没有子类,这样的元素称为叶类,在UML中通过在类名下方书写“leaf”属性来指定。不太常见但仍然有用的是指定类没有父类,这样的元素称为根类,通过在类名下方书写“root”属性来指定。
操作也有类似的属性。通常,操作是多态的,即在类的层次结构中,可以在不同点指定具有相同签名的操作,子类中的操作会覆盖父类中的操作。在运行时消息调度时,会根据对象的类型多态地选择要调用的操作。抽象操作通过斜体书写操作名来指定,而叶操作则通过“leaf”属性指定,叶操作不是多态的,不能被覆盖。
####
0
0
复制全文
相关推荐










