《面向对象设计 》PPT课件

上传人:san****019 文档编号:25580495 上传时间:2021-07-27 格式:PPT 页数:38 大小:375.50KB
返回 下载 相关 举报
《面向对象设计 》PPT课件_第1页
第1页 / 共38页
《面向对象设计 》PPT课件_第2页
第2页 / 共38页
《面向对象设计 》PPT课件_第3页
第3页 / 共38页
点击查看更多>>
资源描述
第 十 一 章 面 向 对 象 设 计(Object-Oriented Design) 1. OOD准 则 : 优 秀 软 件 设 计 的 一 个 重 要 特 点 是容 易 维 护回 顾 : SD准 则 包 括 Modularization Abstraction Information hiding Module independence对 于 OOD有 类 似 的 准 则 : 1、 Module = Object 1. OOD准 则 Procedure abstraction: 在 SD中 已 讨 论 Data abstraction: Class即 是 一 种 抽 象 数 据 类 型 。 外 界 无 须知 道 实 现 方 法 就 可 按 照 类 协 议 (class description protocol)* 使 用 class中 定 义 的 数 据 。 Parameter abstraction: 将 数 据 类 型 作 为 参 数 处 理 。* Class description protocol : The complete definition of all properties, features, and methods that are descriptive of any object that is an instance of a class. Timothy Budd An Introduction to Object-Oriented Programming Addison-Wesley Publishing Company, Inc. 1991 2、 Abstraction: 抽 出 事 物 的 本 质 特 性 , 暂 不 考 虑其 细 节 , 使 设 计 从 具 体 实 现 方 法 中 超 脱 。 1. OOD准 则例 : C+ 中 的 “ 模 板 ” (template)template class array_n private : T items n ; / 定 义 了 T类 型 的 向 量 元 素 共 n个 ;main ( ) array_n w ; /w是 有 1000个 元 素 的 复 向 量 1. OOD准 则3、 Information hiding = Encapsulation of object4、 Coupling: 交 互 耦 合 (interactive coupling):通 过 传 递 message发 生要 求 降 低 参 数 个 数 和 参 数 复 杂 性 减 少 objects发 送 接 收 message的 个 数 as loose as possible 继 承 耦 合 (inheritance coupling): 要 求 Parent class IS_A child class as high as possible 1. OOD准 则 一 般 -特 殊 内 聚 ( general-particular cohesion): High g-p cohesion High inheritance coupling5、 Cohesion: 服 务 内 聚 (service cohesion): 一 个 服 务 只 完 成 一 个 功 能 。 类 内 聚 (class cohesion): 一 个 类 只 有 一 个 用 途 , 否 则 分解 之 。6、 Reusability(详 见 3) 2. 启 发 式 规 则1、 设 计 结 果 清 晰 易 懂 , 应 做 到 : 用 词 一 致 按 习 惯 用 法 命 名 。 不 同 classes中相 似 的 methods最 好 取 同 一 名 字 。 使 用 已 有 的 protocol。 尽 量 减 少 message模 式 的 数 目 。 避 免 模 糊 定 义 。2、 一 般 -特 殊 结 构 的 深 度 应 适 当 ( 约 100个 classes,则设 计 7 2层 ) 2. 启 发 式 规 则3、 设 计 简 单 的 class( 定 义 不 超 过 一 页 纸 或 两 屏 ) 。应 注 意 : 避 免 过 多 attributes; 能 用 简 单 的 语 句 描 述 一 个 class的 任 务 ; objects之 间 合 作 关 系 要 简 单 ; 避 免 过 多 methods( 7个 )。问 题 : 设 计 出 大 量 的 classes, 使 结 构 复 杂 度 增 加 。解 决 : 划 分 主 题 , 提 高 可 理 解 性 。4、 使 用 简 单 的 protocol, 减 少 message 中 传 递 的 parameters5、 使 用 简 单 的 method(CASE 可 考 虑 用 inheritance替 代 )。6、 把 设 计 变 动 减 至 最 小 。 1、 概 念 : 知 识 重 用 ( 例 如 软 件 工 程 知 识 的 重 用 ) 方 法 和 标 准 重 用 ( 例 如 OO方 法 和 国 家 规 定的 软 件 开 发 规 范 的 重 用 ) 软 件 成 分 的 重 用 3. 软 件 重 用 (Software Reuse) 知 识工 程 源 码 剪 贴 无 法 溯 源 , 无 配 置 管 理 Include 修 改 后 所 有 包 含 了 此 段 代 码 的 程序 都 须 重 新 编 译 。 Inheritance 无 须 改 动 原 有 代 码 想 象 一 下 , stdio.h 被 改 动 之 后 重 用 软 件 成 分 有 三 个 级 别 : 代 码 重 用 : 3. 软 件 重 用 设 计 重 用 当 移 植 系 统 时 分 析 重 用 当 需 求 未 变 , 而 系 统 结 构 改 变时 ( 例 如 将 HDIS改 为 OO实 现 )2、 重 用 效 果 的 衡 量 : 额 外 代 价 : 创 建 可 重 用 成 分 的 专 门 投 资 多 花 2 4倍 时 间 测 试 以 保 证 质 量 构 件 库 的 建 立 与 维 护 需 要 投 资 以 上 投 资 将 分 摊 到 重 用 这 些 构 件 的 新 系 统 成本 中 。 重 用 次 数 越 多 , 分 摊 成 本 越 少 。 3. 软 件 重 用记 : Lt = Total length of code ( # of lines) Ln = Length of new code Lr = Length of reused code Et 、 En、 Er are the corresponding efforts ( # of m-d) 重 用 率 (Reusability)与 生 产 率 (Productivity) rn rntt EE LLEL Productivity Reusability = trLL开 发 代 码 的 生 产 率 nnn ELC 重 用 新 代 码 的 生 产 率 rrr ELC )R/CC(11 CP rnn 3. 软 件 重 用 重 用 技 术 : 指 利 用 可 重 用 的 构 件 开 发 软 件 的 技术 , 及 开 发 可 重 用 软 件 的 技 术 。 软 件 组 合 技 术 : 底 层 部 件 库 法 (Bottom-up compositional reuse) :从 可 重 用 的 代 码 部 件 库 (reuse repository)中 选 用部 件 , 组 合 成 软 件 。A: 是 , 前 提 条 件 为 CnCr ,即 重 用 比 新 开 发 效 率 高 。Q: 是 否 R 越 高 P就 越 高 ? Lucent Technologies initiated a companywide program to reuse software components (McClure 1997). As a consequence, the Workstation Software Development Department formed a Reuse Council to devise a strategy for selecting candidate components for its reuse repository. The Council was comprised of seven people, representing all groups in the department. The Council created an inventory of components and formed a matrix with the features of all past and planned projects. Then, each feature was rated in terms of whether it had been implemented and was still needed, had been implemented but was no longer needed, or had not been implemented but was still needed. Those features that were needed and were common to more than one project were targeted for reuse. In fact, some were redesigned to make them more reusable.The Council met every week for 2 hours to make component selections, inspect design documentation for those components already in the repository, and to monitor the levels of reuse in the departments projects. 3. 软 件 重 用例 : 上 层 组 合 法 : 完 整 程 序 的 组 合 3. 软 件 重 用 软 件 生 成 技 术 : 按 照 形 式 化 的 软 件 功 能 描 述 和 一 定 的 生 成 机理 , 由 生 成 器 系 统 (generator system)自 动 生 成 目 标 程 序 。重 用 的 是 generator 的 代 码 规 则 OO重 用 技 术 : Class component的 重 用 ( 详 见 下 文 ) 类 构 件 (Class component): 可 重 用 的 软 构 件 应 具 备 的 特 点 : 独 立 、 可 塑 、 接 口 清 晰 ( 文 档 详 尽 ) 3. 软 件 重 用 重 用 方 式 : 实 例 重 用 (instance reuse black-box reuse): 创 建 class的 不 同 instances, 通 过 messages完 成 不 同 的 任 务 。 是 最 基 本 的 重 用 方 式 。 用 几 个 简 单 的 objects创 建 出 更 复 杂 的 class, 是 实 例 重 用 的 另 一 种 形 式 继 承 重 用 (inheritance reuse):是 一 种 安 全 地 裁 剪 已 有 的 class component的 方 式 。 多 态 重 用 (polymorphism reuse): Parent class与 child class有 相 同 的 对 外 接 口 , 使 消 息 连 接 的 复 杂 度 降 低 。 3. 软 件 重 用注 意 : 有 些 操 作 可 能 会 妨 碍 class component的 重 用 , 如 与 表 示 方 法 有 关 的 操 作 与 数 据 结 构 、 大 小 有 关 的 操 作 与 外 部 设 备 有 关 的 操 作 实 现 算 法 在 将 来 可 能 会 改 进 改 变 的 核 心 操 作解 决 方 法 : 将 这 些 操 作 分 离 出 来 , 作 为 适 配 接 口(adaptive interface), 使 class中 其 它 操作 通 过 调 用 AI而 实 现 。 在 不 同 应 用 环境 下 , 用 户 只 须 重 新 定 义 AI操 作 就 可以 重 用 class。 3. 软 件 重 用Adaptive Interface还 可 进 一 步 细 分 为 转 换 接 口 (transition interface): 重 用 时 必 须 重 定义 与 表 示 方 法 、 数 据 结 构 、 硬 件 等 有 关 的 操 作( 例 如 C+中 class 里 的 pure virtual function) 扩 充 接 口 (expansion interface): 一 个 操 作 可 由 多种 算 法 实 现 , 若 无 新 算 法 则 继 承 老 算 法 。 I P O问 题 域Application Domain 人 机 交 互Human-ComputerInterface(HCI) 任 务 管 理TaskManagement 数 据 管 理DataManagement MethodAttributeStructureClass- 接 受 message 的 object 必 有 对 应 的 method; Method 改 变 status( 即 attributes) , 并 完 成 action。 5. 设 计 类 中 的 服 务Event Status 1 do: Action 1 Status 2 do: Action 2 则 算 法 应 有 DO_CASE型 控 制 从 function model出 发 :DFD的 一 般 结 构 是 I P O注 意 : Action ( 即 算 法 )与 status 有 关 。 例如 : 不 同 status接受 同 一 个 event 时 ,其 action不 同 Input FlowClassProcess I O ClassProcess 5. 设 计 类 中 的 服 务 若 Process=从 Input Flow中 抽 取 一 个 值 , 则I O 若 和 类 型 相 同 , 而 output实 质 上 是input的 另 一 个 状 态 , 则 IO是 一 类 , 有 若 则I1I2I 3 P O Output Flow ClassProcess 5. 设 计 类 中 的 服 务 若 则 Process Storage Storage ClassProcess 对 照 DFD与 Class-&-Object图 , 若 一 个 process涉 及多 个 classes, 则 必 须 判 断 它 属 于 哪 一 个 class。 例 如 : Activator ReceiverProcess若 Process 改 变 了 Receiver, 则 Receiver Class Process又 如 : 从 关 联 上 看 , process所 涉 及 的 所 有 classes中 ,处 于 中 心 地 位 的 class,一 般 拥 有 该 process。 5. 设 计 类 中 的 服 务2、 设 计 实 现 方 法 算 法 设 计 : 要 求 做 到 易 修 改 , 并 且 复 杂 度 低 ( 即效 率 高 ) 易 理 解 , 易 实 现 。 数 据 结 构 设 计 : 需 要 考 虑 具 体 的 物 理 结 构 的 选 择 。 新 添 用 于 存 放 内 部 处 理 中 间 结 果 的 class; 引 入 新的 低 层 操 作 , 进 一 步 细 化 。 6. 设 计 关 联1、 单 向 关 联 例 : 雇 员 公 司被 雇 用1+ 由 雇 员 找 其 所 属 公 司 ,则 设 雇 主 为 其 属 性 ,即 一 单 向 指 针 雇 员雇 主 公 司 由 公 司 找 其 下 属 某 一 雇 员 , 则 有 两 种 方 法 :方 法 1: 遍 历 所 有 雇 员 , 找 雇 主 匹 配 且 满 足 特 征 的 雇员 。 ( 省 空 间 ) 6. 设 计 关 联方 法 2: 设 公 司的 属 性 雇 员 为一 指 针 集 。( 快 速 ) 雇 员 公 司雇 员指 针 集2、 双 向 关 联方 法 1: 将 上 述 两 种 单 向关 联 结 合 使 用雇 员 雇 主 公 司雇 员指 针 集 雇 员公 司关 联 类雇 主雇 员工 资方 法 2: 另 设 关 联 类 ( 特别 适 用 于 链 属 性 ) 雇 员公 司find_skill 雇 用1+ 技 能具 有 技 能1+1+ 7. 优 化1、 确 定 优 先 级 : 必 须 站 在 全 局 高 度 确 定 各 项 质 量 指 标 的 优 先 级 ,在 优 化 设 计 时 制 定 折 衷 方 案 。 切 忌 各 子 系 统 自 以 为是 , 导 致 最 终 优 化 目 标 对 立 。 最 常 见 的 情 况 是 在 效 率 与 清 晰 性 之 间 的 折 衷 。 2、 提 高 效 率 的 技 术 增 加 关 联 ( 类 )例 : 设 某 公 司 有 2000名 雇 员 , 平 均 每 名 雇 员 会10种 技 能 , 其 中 有 5人 精 通 日 语 , 现 要 查 询公 司 中 会 讲 日 语 的 雇 员 是 哪 些 人 雇 员公 司 精 通 语 言1+语言 1+ 7. 优 化方 法 1: 嵌 套 查 询 遍 历 雇 员 2000次 , 而 对 每 个雇 员 遍 历 技 能 10次 。 命 中 率 为 1/4000。方 法 2: 用 Hash Table实 现 技 能 , 使 “ 会 讲 日 语 ” 对应 唯 一 的 技 能 对 象 , 则 命 中 率 上 升 为 1/400。方 法 3: 增 加 一 个 额 外 的 限 定 关 联 “ 精 通 语 言 ” ,即 可 立 刻 查 得 结 果 。 7. 优 化 调 整 查 询 次 序 , 优 化 算 法 例 如 公 司 有 5名 会 日 语 的 雇 员 , 有 200名 会 法 语的 雇 员 。 现 要 找 日 、 法 语 均 会 的 雇 员 , 则 应 先 找的 雇 员 , 再 从 中 找 的 雇 员 。会 日 语 会 法 语 保 留 内 部 中 间 过 程 产 生 的 派 生 属 性 。3、 调 整 继 承 关 系 向 上 归 纳 向 下 派 生建 立 这 样 的 索 引 必 然 多 占 空 间 , 而 且 基 关 联 改变 时 也 必 须 相 应 地 修 改 索 引 。 因 此 , 应 只 给 那 些 经常 执 行 并 且 开 销 大 、 命 中 率 低 的 查 询 建 立 索 引 。 7. 优 化例 : 实 现 Stack方 法 1: 从 List 派 生 push = last + add pop = last + remove问 题 : Stack.first 也 是 合 法 的 。 ListaddremovefirstlastStackpush popInheritance 利 用 委 托 (commitment)方 法 2: 把 List 作 为 Stack 的 一 个 attribute , 称 为 commitment。 这 种 方 法 比较 安 全 (Stack.first 为 非 法 )。 ListaddremovefirstlastStackList 1pushpopCommitment作 业 : 自 习 第 十 二 章 OOP, 并 回 答 问 题 P.275 #3, #5. Project Part HDIS 期 末 合 并 版 首 次 面 世 验 收 截 止 日 期 : 1月 16日 验 收 地 点 : 各 组 自 定 验 收 内 容 : 数 据 库 合 并 情 况 ; 用 户 界 面 合 并 情 况 。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!