(第三部分:面向对象分析与设计方法,第5章)
Created: 2022-05-10 Tue 23:57
第三部分:面向对象分析与设计方法
第5章:面向对象方法与UML
面向对象 = 对象 + 类 + 继承 + 消息通信
如果一个系统是使用以上4个概念设计和实现的, 则可认为这个系统是面向对象的。 面向对象程序的基本组成单位是类。
程序在运行时由类生成对象,对象之间通过发送消息进行通信, 互相协作完成相应的功能。对象是面向对象程序的核心。
对象 = 数据 + 作用于这些数据上的操作
Figure 1: 对象的图形表示
对象名有下列3种表示格式
对象名在前、类名在后的情况 | 对象名:类名 |
尚未给对象命名的情况 | :类名 |
省略类名的情况 | 对象名 |
对象有两个层次的概念:
可以将程序中的对象分为5类,每个应用系统可以拥有某几种或所有对象, 但不必特意对每个对象进行分类。
Figure 2: 类的图形表示
封装的定义是:
公共类
扩展类 / 从公共类继承的类
Figure 3: 教材中定义的公共类与扩展类
Figure 4: 类的继承关系
多态是指一个程序中同名的不同方法共存的情况。 主要通过子类对父类方法的覆盖来实现多态。
消息是一个对象向另一个对象传递的信息。有4类消息:
Figure 5: UML吸收了许多面向对象方法的优点
Figure 6: UML的基本模型
事物(Things) 是对模型中最具代表性成分的抽象,在UML中,可以分为:
Figure 7: UML基本事物的图形表示
结构事物 是UML模型的 静态部分 ,主要用来描述概念的或物理的元素,包括:
行为事物 是UML模型的 动态部分 ,包括:
Figure 8: 对象之间的交互
分组事物 是UML模型的 组织部分 ,它的作用是为了降低模型的复杂性。 UML中的分组事物是包(package)。
注释事物 是UML模型的 解释部分 ,它们用来描述和标注模型的任何元素。 通常可以用注释修饰带有约束或者解释的图。
在UML中,常见的 关系(Relationships) 有依赖、关联、泛化和实现4种, 还有聚合、复合等关系,如图所示:
Figure 9: UML中的关系
依赖(dependency) 是两个事物之间的语义关系,其中一个事物发生变化会影响到另一个事物的语义, 它用一个虚线箭头表示。
虚线箭头的方向从 源事物 指向 目标事物 ,表示 源事物 依赖于 目标事物 。
Figure 10: 依赖关系示例
关联(association) 是一种结构关系,它描述了两个或多个类的实例之间的连接关系, 是一种特殊的依赖。
关联的实例称为 链(link) ,每一条链连接一组对象(类的实例)。
普通关联 是最常见的关联关系,只要类与类之间存在连接关系就可以用普通关联表示。 普通关联又分为 二元关联 和 多元关联 。
Figure 11: 二元关联
Figure 12: 关联中的角色
Figure 13: 自身关联
Figure 14: 三元关联及相应类实例连接的链
限定关联(qualified association) 通常用在一对多或多对多的关联关系中, 可以把模型中的多重性从一对多变成一对一,或将多对多简化成多对一。
Figure 15: 限定关联
在关联关系比较简单的情况下,关联关系的语义用关联关系的名字来概括。 但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问, 为此可以建立 关联类(association class) 来描述关联的属性。
Figure 16: 关联类的示例
聚合(aggregation) 也称为聚集,是一种特殊的关联, 描述了整体和部分之间的结构关系。 在需求陈述中,若出现 包含 、 组成 、 分为……部分 等字句, 往往意味着存在聚合关系。
Figure 17: 聚合
导航(navigability) 是关联关系的一种特性, 它通过在关联的一个端点上加箭头来表示导航的方向。
Figure 18: 导航
泛化(generalization) 关系就是 一般(generalization) 类和 特殊(specialization) 类 之间的继承关系。
Figure 19: 抽象类
Figure 20: 多重继承
Figure 21: 受限泛化
实现(implement) 是泛化关系和依赖关系的结合,也是类之间的语义关系。 通常在以下两种情况出现实现关系:
Figure 22: 实现关系
Figure 23: 结构图和行为图的分类
Figure 24: 用例图的建模元素
Figure 25: 银行储蓄系统的用例图
Figure 26: 银行储蓄系统的核心类图
Figure 27: 教学管理系统中的类图
Figure 28: 关联类
Figure 29: 顺序图中的符号
Figure 30: 消息的类型
Figure 31: 取款用例的顺序图
Figure 32: 取款用例的通信图
Figure 33: 电梯对象的状态图
Figure 34: 活动图中的符号
Figure 35: 取款用例的活动图
Figure 36: 画图系统的构件图
Figure 37: 银行储蓄系统的构件图
Figure 38: 部署图