软件工程导论第六章 面向对象的分析和设计方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
8.主动对象 • 主动对象是一组属性和一组服务的封装体,其 中至少有一个服务不需要接收消息就能主动执 行(称作主动服务)。 • 主动对象的作用是描述问题域中具有主动行为 的事物以及在系统设计时识别的任务,主动服 务描述相应的任务所应完成的操作。 • 在系统实现阶段,主动服务应该被实现为一个 能并发执行的、主动的程序单位,例如进程或 线程。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
2. 消息和方法 (1) 消息 消息就是向对象发出的服务请求,它应含有提供服 务的对象标识、服务标识、输入信息和回答信息。 • 消息的接收者是提供服务的对象。 • 消息的发送者是要求提供服务的对象或其他系统成 分。 • 消息的形式用消息模式表示,一个消息模式定义了 一类消息,它可以对应内容不同的消息。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
3. 类和类层次 (2)类层次结构 一个类的上层可以有超类,下层可以有子 类,形成一种层次结构。这种层次结构的 一个重要特点是继承性,一个类继承其超 类的全部描述。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
4. 继承性 • 继承性是自动地共享类、子类和对象中的 方法和数据的机制。 • 特殊类的对象拥有其一般类的全部属性与 服务,称作特殊类对一般类的继承。继承 意味着自动地拥有,或隐含地复制。
6. 2 面向对象的分析 6.2.1面向对象分析基本过程及原则
2. OOA主要概念的表示法及OOA主要原则 (2)OOA的主要原则 ① 抽象:OOA中的类就是抽象得到的。 ② 分类:分类就是把具有相同属性和服务的对 象划分为一类 。 ③ 聚合:聚合的原则是把一个复杂的事物看成 若干比较简单的事物的组装体 ④ 关联:关联又称为组装
6. 2 面向对象的分析 6.2.1面向对象分析基本过程及原则
2. OOA主要概念的表示法及OOA主要原则 (2)OOA的主要原则 ⑤ 消息通信:这一原则要求对象之间只能通过 消息进行通信 ⑥ 粒度控制:面对一个复杂的问题域时,不可 能在同一时刻既能纵观全局,又能洞察秋毫 。 ⑦ 行为分析:现实世界中事物的行为是复杂的。
6. 2 面向对象的分析 6.2.2 确定对象与类
2. 对象分类、建立类图的对象层 (3)建立类图的对象层 ② 建立步骤 : • 用类符号表示每个类(对于主动对象,在类 名之前增加主动标记“@”),把它们画出 来 • 在类描述模板中填写关于每个类的详细说明。 • 在发现对象的活动中能够认识的属性和服务 均可随时加入类符号,能够认识的结构和连 接,均可随时在类符号之间画出
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
1. 对象 对象是问题域或实现域中某些事物的一个抽象, 它反映该事物在系统中需要保存的信息和发挥的 作用;它是一组属性和有权对这些属性进行操作 的一组服务的封装体。 ●属性是用来描述对象静态特征的一个数据项; ●服务是用来描述对象动态特征(行为)的一个操 作序列。
6.1 面向对象方法 6.1.2面向对象的软件工程
(2)面向对象的设计 OOD则是针对系统的一个具体的实 现运用OO方法。其中包括两方面 的工作,一是把OOA模型直接搬到 OOD(不经过转换,仅作某些必要 的修改和调整),作为OOD的一个 部分;二是针对具体实现中的人机 界面、数据存储、任务管理等因素 补充一些与实现有关的部分。
6.1 面向对象方法 6.1.2面向对象的软件工程
面向对象的软件工程学是面向对象 方法在软件工程领域的全面运用。 它包括面向对象的分析、面向对象 的设计、面向对象的编程、面向对 象的测试和面向对象的软件维护等 主要内容。
6.1 面向对象方法 6.1.2面向对象的软件工程
(1)面向对象的分析 面向对象分析(OOA)强调直接针 对问题域中客观存在的各项事物建 立OOA模型中的对象。
6.1 面向对象方法 6.1.2面向对象的软件工程
(3)面向对象的编程 面向对象的编程(OOP)又称作面 向对象的实现(OOI)。 OOP工作 就是用同一种面向对象的编程语言 把OOD模型中的每个成分书写出来。
6.1 面向对象方法 6.1.2面向对象的软件工程
(4)面向对象的测试 面向对象的测试(OOT)是指:对 于用OO技术开发的软件,在测试 过程中继续运用OO技术,进行以 对象概念为中心的软件测试。
6. 2 面向对象的分析 6.2.3 确定属性
1.对象的属性和服务 • 事物的静态特征和动态特征分别用对象中的 一组属性和一组服务来表达。 • 按照面向对象方法的封装原则,一个对象的 属性和服务是紧密结合的,对象的属性只能 由这个对象的服务存取。
6. 2 面向对象的分析 6.2.1面向对象分析基本过程及原则
2. OOA主要概念的表示法及OOA主要原则 (1) OOA主要概念 ① 对象、类:必要时可区分主动对象并用不同的 类符号表示。 ② 属性:必要时可区分类属性和对象属性。 ③ 服务:对于主动对象,应标出主动服务。 ④ 结构:分为一般/特殊结构和整体/部分结构。 ⑤ 连接:包括实例连接和消息连接。 ⑥ 主题:指导读者理解大型而复杂的对象模型。
6.1 面向对象方法 6.1.1面向对象方法概述
1.面向对象方法的主要特点 (1) 从问题域中客观存在的事物出发来构造软 件系统,用对象作为对这些事物的抽象表示, 并以此作为系统的基本构成单位。 (2) 事物的静态特征是可以用一些数据来表达 的特征,可以用对象的属性表示,事物的动 态特征(即事物的行为)用对象的服务(或 操作)表示。 (3) 对象的属性与服务结合为一个独立的实体, 对外屏蔽其内部细节,称作封装。
2. 对象分类、建立类图的对象层 (1)异常情况的检查和调整 ① 类的属性或服务不适合该类的全部对象 ② 属性和服务相似的类 ③ 对同一事物的重复描述
6. 2 面向对象的分析 6.2.2 确定对象与类
2. 对象分类、建立类图的对象层 (2)类的命名 ① 类的名字应恰好符合这个类(和它的特殊类) 所包含的每一个对象。 ② 类的名字,应该反映每个对象个体,而不是 整个群体。 ③ 采用名词,或带有定语的名词;使用规范的 词汇;使用专家及用户惯常使用的词汇。 ④ 使用适当的语言文字。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
2. 消息和方法 (2)方法 把所有对象分成各种对象类,每个对象 类都有一组所谓的方法,它们实际上是 类对象上的各种操作。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
3. 类和类层次 (1)类 在OO方法中,类的定义是具有相同属性 和服务的一组对象的集合,它为属于该类 的全部对象提供了统一的抽象描述,其内 部包括属性和服务两个主要部分。
6. 2 面向对象的分析 6.2.2 确定对象与类
1.确定对象 (1)问题域和系统责任 问题域和系统责任是发现对象的根本出发点。 (2) 正确地运用抽象原则 紧紧围绕系统责任这个目标去进行抽象。 (3) 策略与启发 从问题域、系统边界和系统责任三个方面,考虑 各种能启发自己发现对象的因素。
6. 2 面向对象的分析 6.2.2 确定对象与类
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
5. 封装性 • 封装是一种信息隐蔽技术,用户只能见到 对象封装界面上的信息,对象内部对用户 来说是隐蔽的。 • 封装的目的在于将对象的使用者和对象的 设计者分开,使用者不必知道行为实际的 细节,只须用设计者提供的消息来访问该 对象。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
6. 结构与连接 (1) 一般/特殊结构 一般/特殊结构又称作分类结构,是一组有一般 /特殊关系的类所组成的结构。 (2)整体/部分结构 整体/部分结构又称为组装结构,它描述对象之 间的组成关系,即一个对象是另一个对象的组 成部分。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
6. 结构与连接 (3)实例连接 实例连接反映了对象与对象间的静态关系。 (4)消息连接 消息连接描述对象之间的动态联系,即若一个 对象在执行服务时,需要通过消息请求另一个 对象为它完成某个服务,则说第一个对象与第 二个对象之间存在着消息连接。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
7. 多态性 • 对象的多态性是指在一般类中定义的属性或服 务被特殊类继承之后,可以具有不同的数据类 型或表现出不同的行为。 • 支持多态性的实现的语言应具有下述功能: (1) 重载:在特殊类中对继承来的属性或服务进行 重新定义。 (2)动态绑定:在运行时根据对象接收的消息动态 地确定要连接哪一段服务代码。 (3)类属:服务参量的类型可以是参数化的。
5. 封装性 封装的定义为: ① 一个清楚的边界,所有的对象的内部软件的范 围被限定在这个边界内; ② 一个接口,这个接口描述这个对象和其他的对 象之间相互的作用; ③ 受保护的内部实现,这个实现给出了由软件对 象提供的功能的细节,实现细节能在定义这个 对象的类的外面访问。
6.1 面向对象方法 6.1.3 面向对象的基本概念和特征
6. 2 面向对象的分析
6.2.1面向对象分析基本过程及原则 6.2.2确定对象与类 6.2.3确定属性 6.2.4定义服务 6.2.5对象间通信
6. 2 面向对象的分析 6.2.1面向对象分析基本过程及原则
1.分析问题的层次 面向对象分析大体上按照下列顺序进行: ① 主题层(也称为范畴层) ② 类&对象层 结构层 ③ 属性层 ④ 服务层
6.1 面向对象方法 6.1.1面向对象方法概述
1.面向对象方法的主要特点
(6) 复杂的对象可以用简单的对象作为 其构成部分,称作聚合。 (7) 对象之间通过消息进行通信,以实 现对象之间的动态联系。 (8) 通过关联表达对象之间的静态关系。
6.1 面向对象方法 6.1.1面向对象方法概述
2. 面向对象的定义 (1) 一种使用对象(它将属性与操作封 装为一体)、消息传送、类、继承、 多态和动态绑定来开发问题域模型 之解的范型。 (2) 一种基于对象、类、实例和继承等 概念的技术。 (3) 用对象作为建模的原子。
6. 2 面向对象的分析 6.2.2 确定对象与类
2. 对象分类、建立类图的对象层 (3)建立类图的对象层 ① 类图基本概念: • 对象层:给出系统中所有反映问题域与系统 责任的对象。 • 特征层:给出每一个类(及其所代表的对象) 的内部特征。 • 关系层:给出各个类(及其所代表的对象) 彼此之间的关系。
第六章 面向对象设计
•6.1 面向对象方法 •6. 2 面向对象的分析 •6. 3 面向对象设计
6.1 面向对象方法 6.1.1面向对象方法概述 6.1.2面向对象的软件工程(OOSE) 6.1.3面向对象的基本概念和特征
6.1 面向对象方法 6.1.1面向对象方法概述
• 面向对象不仅是一些具体的软件开 发技术与策略,而且是一整套关于 如何看待软件系统与现实世界的关 系,以什么观点来研究问题并进行 求解,以及如何进行系统构造的软 件方法学。 • 面向对象方法的基本思想是从现实 世界中客观存在的事物出发来构造 软件系统,并在系统构造中尽可能 运用人类的自然思维方式。
6.1 面向对象方法 6.1.1面向对象方法概述
1.面向对象方法的主要特点
(4) 把具有相同属性和相同服务的对象归为一类, 类是这些对象的抽象描述,每个对象是它的 类的一个实例。 (5) 通过在不同程度上运用抽象的原则,可以得 到较一般的类和较特殊的类。特殊类继承一 般类的属性与服务,面向对象方法支持对这 种继承关系的描述与实现,从而简化系统的 构造过程及其文档。
6.1 面向对象方法 6.1.2面向对象的软件工程
(5)面向对象的软件维护 • 面向对象的软件工程方法为改进软件维 护提供了有效的途径。程序与问题域一 致,各个阶段的表示一致,从而大大降 低了理解的难度。 • 将系统中最容易变化的因素(功能)作 为对象的服务封装在对象内部,对象的 封装性使一个对象的修改对其他影响Байду номын сангаас 小,从而避免了波动效应。