




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程 面向对象程序设计与UML系统分析实作 任我学IT 职训实操平台专家 前言 类别的规划 面向对象设计时间 OOD 建立动态模型 建立设计模型 总结 OOD目标 将OOA阶段的分析模型 继续透过反复的修正与演进 使得整个模型能更趋于完备 即 足以拿来实作之完整 类别模型 手段 以图7 4为蓝图 继续以各种基于好的面向对象设计原 则进行检视 面向对象之分析设计程序面向对象之分析设计程序 图图7 4 建立用例模型 建立分析模型 建立动态模型 交 互与状态图 建立设计模型 详 细类图 进入实现阶段 需求阶段 OOAOOA OODOOD 构建交互图 Interaction Diagram 构建状态图 Statechart Diagram 构建详细的类别模型 Detailed Class Diagram 撰写虚拟程序代码 Pseudo Code 问题 在OOA阶段 用户与系统的互动媒介互动媒介 似乎 并不明显 人机界面 Human Interface ATM 自动提款机 的输入设备 图形用户接口 Graphical User Interfaces 一般商务系统至少具备了 核心类别 订单订单 功能 显示订单明细 假设以GUI为人机界面 frame buttonedit 订单 显示订单明细 label 就对象设计的角度来看 显示订单明细的功能由显示订单明细的功能由 订单订单 对象自己来负责对象自己来负责 似乎是理所当然 不过 考虑以下的状况 若系统中存在上百个有需要跟使用者直接做输入输出的 类别 一旦用户与系统互动的接口需求有所变更时一旦用户与系统互动的接口需求有所变更时 套 用此设计方法将有何影响 Note 界面需求变更常发生在文本模式 Console based Mode 与窗口模式 Window based Mode 之间的转换 或是更换不 同的窗口工具组 函示库 Windows Toolkit Library 主要影响 此时会有很多的类别需要跟着修改 如 上例中 的 订单订单 问题根源 核心类别与用户接口之间的过度耦合核心类别与用户接口之间的过度耦合 核心类别被用户接口绑住了 隔离核心类别与用户接口隔离核心类别与用户接口 边界类别 Boundary Class 专司用户接口 实体类别 Entity Class 即核心类别 通常为持久化对象 Persistent Object 注意图中的相依关系 理论上 核心类别对边界类别一无所悉 核心类别 实体类 用户界面 边界类 显示 变更订单接口等边界类别 如 Form Frame Edit Button 并不用跟着修改 订单 类别 Frame buttoneditlabel 订单 实体类 取消订单明细 订单界面 边界 显示订单明细 基于上例 考虑另一个需求 假设透过边界类别需要完成的是 替某顾客建立订单的 程序 可能之类别结构以及对象合作关系如下 顾客 订单 0 1 0 1 新增订单 边界类别 输入顾客信息 输入订购明细 登录订单 订单明细 1 1 1 1 新增订单 边界类别 操作者 顾客 订单 订单明 细 4 建立对象 5 建立对象 6 针对每笔订单明细 建立对象 1 输入顾客资料 2 输入订单明细 3 登录订单 8 加入 7 针对每笔订单明细 加入 部分流程控制的工作将落到边界类别 边界类别需协调多个实体类别 如 顾客 订单 以及 订购明细 来完成登录程序 考虑同样的状况 当用户接口需求有所变更时 尽管实体类别不需修改 但边界类别中的部分商 业规则 控制流程 却还是得重新撰写 在实体类别与边界类别间加上控制类别在实体类别与边界类别间加上控制类别 Control Class 由控制类别包办商业规则相关的控制流程 实体类别 实体类别 实体类别 用户界面 边界 显示 控制类别 此时边界对象便不需涉及特定之控制流程 就算 边界对象有所变更时 嵌在控制对象中的控制流 程仍可被保留下来 此外 许多错误处理的相关动作 也可由控制对 象集中处理 不需分散在边界对象中 顾客 订单 0 1 0 1 订购明细 1 1 1 1 登录订单 控 制类别 登录订单 新增订单 边界 输入顾客资料 输入订购明细 登录订单 新增订单 边界类别 操作者 顾客 订单 订购明 细 登录订单 控制类别 4 登录订单 1 输入顾客资料 2 输入订购明细 3 登录订单 9 加入 5 建立对象 6 建立对象 7 针对每笔订购明细 建立对象 8 加入 针对每笔订购明细 对类别作如此细腻的切割动作固然需要不少时间 成本 但将有利于系统日后的扩充与维护 依照类别 对象 的性质可区分成 边界类别 Boundary Class 负责用户接口 实体类别 Entity Class 负责问题领域的核心资料 控制类别 Control Class 负责边界对象与实体对象的协调 流程控制 其他应用 数据库存取 更换不同的数据库系统也是很常见 的事情 Note 此概念源自于MVC Model View Controller Pattern 主要执行步骤 细分如下 加入边界类别与控制类别 构建交互图 Interaction Diagram 协作 序列图 构建状态图 Statechart Diagram 构建详细的类别模型 Detailed Class Diagram 决定类别行为 Operation 加入设计时间的类别 决定可见度 Visibility 决定数据型态 撰写虚拟程序代码 Pseudo Code 考虑是否需要控制类别 被协调的两端在性质上是否有明显分野 例如 边界类别与实体类别之间 被协调的两端是否有需求变更之虞 例如 软件组件或 类别 函示库 通常 使用者使用者 Actor 与与Use Case之间 会是置入控制类别的适之间 会是置入控制类别的适 当位置当位置 订房边界类别 泛指所有相关的窗口组件 为简化起见 数据库控制类别 专司数据库存取动作 降低实体类别与数据库接口之间的耦合性 实体类 数据库控制类订房边界类订房控制类 相关界面 Note 订房控制类别 与 数据库控制类别 均 有机会用到许多实体类别 这跟实际运作的流程 有关 在此暂时省略这些关系 参考来源 类别图 模型 取得对象 类别 互动时的主角 Use Case脚本 取得对象的互动流程 是否对象间所有的互动都要画出 画出的互动情形越多 将有利于决定详细类 别模型时的精确度 基本要求 至少要描绘出每个Use Case脚本的主要流 程 原则上够用就好 其他考虑因素 时间 成本 软件系统种类以及是否有透过 辅助工具 CASE Tools 等 交互图要详细到什么程度 基本原则 尽量保持简单 把复杂的互动情况拆解成多张交互图 基本流程 顺序图 柜台人 员 订房边界类 订房控制类 提供可以选择 房间日期等的 界面 柜台人员同时 看到房号 初始 化 查询空 房 显示放房间和价格 查询空房 房型 时 间 选择房型 开始和结束时间 有符合条件则订 房 如无符合条件的 则重新查询或取 消订房 输入姓 名 身份证号 订房 订房信息 姓名 身 份证 房间号等 数据库控制类 取回房间物品清单 房型时间等 完成预订 基本流程 合作图 柜台人员 订房边界 类 訂房控制 類別 数据库控 制类 1 初始化 2 选择 輸入 房型 开始和结束时间 3 查询空房 4 查询空房 房型 开始时间结束时间 5 取回房间物品清单 房型 开始结束时间 6 显示房间与价格 7 选择房间 8 输入姓名 身份证号 9 订房 1 0 订房 姓名 身份证号 房号 开始 结束时间 1 1 完成预定 加入一条订房信息 订房操作细节 顺序图 订房控制类 数据库控制类A 房间B 时间范围C 顾客D 订房信息 取得房间 房号 A 取回时间范围 房号 开始 结束 B 加入时间范围 B 设定状态 预定状态 顾客资料存在 取回顾客 姓名 身份证 C 顾客资料未建 档 则进入建 档程序 create new object 建立订房资料 D 设定订房日期 加入房间 A 加入订房信息 D 完成预定 C D 订房操作细节 订房操作细节 合作图 订房控制类 数据库控制 值类 A 房间 B 时间 范围 C 顾客 D 订房 信息 1 取回房间 房号 A 2 取回时间范围 房号 开始 结束 B 3 加入时间范围 B 4 设定状态 Integer 5 取回顾客 姓名 身份证 C 6 create new object 建立订房信息 D 7 设定订房日期 8 加入房间 A 9 加入订房信息 D 10 完成预定 C D 状态图只针对单一对象来描述 状态图非绝对必要 除非 某类别的行为与状态有相当程度的关连某类别的行为与状态有相当程度的关连 性性 例如 电话联机类别 该类别 拨电 话 挂电话 等基本行为都跟电话的状态 有关 如 联机状态 响铃状态 初始化 d o 建立数据库连接 关闭 d o 关闭数据库连接 连接 程序结束 数据存取 do 数据查询或更新 event 存取错误 例外 进入关闭状态 exit 回到连接状态 数据查询或更新 包含全部数据库 存取动作 决定类别行为 加入设计时间的类别 决定可见度 Visibility 决定数据型态 责任导向设计责任导向设计 Responsibility Driven Design 信息接收端 服务端 负责提供该信息的服务 信息M 客户端 类A服务器端 类B 类B 信息M 类A 交互图提供了大部分的信息 通常直接把交互图中的信息当成类别行为 交互图愈精密 捕捉到的类别行为也就愈 多 数据库控制类 取回房間物件清單 房型 起始時間和結束時間 完成預訂 取得房間 房間號碼 取回時間範圍 房間號碼 起始時間 結束時間 取回顧客 姓名 身份證號碼 订房边界类 初始化 選擇 輸入 房型 起始時間和結束時間 查詢空房 顯示房間與價格的清單 顯示房間 價格 輸入姓名 身份證號碼 訂房 房型 價格 住房人數 景觀 时间范围 起始時間 結束時間 房間狀態 設定狀態 房間狀態 房间 房間號碼 加入時間範圍 時間範圍 1 0 1 0 0 1 0 1 订房信息 訂房日期 設定訂房日期 加入房間 房間 0 1 0 1 箇 1 0 1 1 0 1 订房控制类 查詢空房 房型 起始時間和結束時間 訂房 姓名 身份證號碼 房間號碼 起始時間 結束時間 顾客 姓名 身份證號碼 性別 出生日期 電話 住址 加入訂房資訊 訂房資訊 订房程序相关类别图 1 信息隐藏信息隐藏 Information Hiding 保护对象内部数据 属性 Java C 之private修饰子 为数据提供公开的存取接口 方法 Java C 之public修饰子 例如 订房信息类别 订房程序相关类别图 1 中的订订 房日期房日期应该受到保护 并提供一组访问方法 分别是 设定订房日期设定订房日期 以及 取出订房日期取出订房日期 基于 信息隐藏信息隐藏 的概念 可再次捕捉到许多行 为 如下图 订房程序相关类别图 2 Note 订房程序相关类别图 2 中 只列出部分 属性对应的方法 数据库控制类 取回房間物件清單 房型 起始時間和結束時間 完成預訂 取得房間 房間號碼 取回時間範圍 房間號碼 起始時間 結束時間 取回顧客 姓名 身份證號碼 订房边界类 初始化 選擇 輸入 房型 起始時間和結束時間 查詢空房 顯示房間與價格的清單 顯示房間 價格 輸入姓名 身份證號碼 訂房 订房控制类 查詢空房 房型 起始時間和結束時間 訂房 姓名 身份證號碼 房間號碼 起始時間 結束時間 房型 價格 住房人數 景觀 略 时间范围 起始時間 結束時間 房間狀態 設定狀態 房間狀態 取得狀態 略 房间 房間號碼 加入時間範圍 時間範圍 設定房間號碼 取得房間號碼 1 0 1 0 0 1 0 1 0 10 1 箇 1 0 1 1 0 1 顾客 姓名 身份證號碼 性別 出生日期 電話 住址 加入訂房資訊 訂房資訊 設定姓名 取得姓名 設定身份證號碼 取得身份證號碼 略 订房信息 訂房日期 設定訂房日期 取得訂房日期 加入房間 房間 订房程序相关类别图 2 设计阶段的容器类别 如 Array List Vector 必须在OOD阶段被考虑进来 例如 订房控制类别订房控制类别 向 数据库控制类别数据库控制类别 要求取 回房间对象清单清单 此 清单清单 便是设计时期需要 的类别 它可以是Array List或Vector 对于这类的结构 在此一律以List来表示 List所包含的数据项通常是对象参考或标识符 数据控制类 取回房間物件清單 房型 起始時間和結束時間 完成預訂 取得房間 房間號碼 取回時間範圍 房間號碼 起始時間 結束時間 取回顧客 姓名 身份證號碼 订房控制类 查詢空房 房型 起始時間和結束時間 訂房 姓名 身份證號碼 房間號碼 起始時間 結束時間 订房边界类 初始化 選擇 輸入 房型 起始時間和結束時間 查詢空房 顯示房間與價格的清單 顯示房間 價格 輸入姓名 身份證號碼 訂房 List add remove get size clear 略 加入容器类别 考虑应用程序的起始点 在此补上一边界类别 订房系统应用程序订房系统应用程序 该 类别为应用程序的起始点 以Java而言 此类别中包含了main方法 订房边界类 Check in边界类 订房系统应用程序 启动 显示主界面 1 0 1 1 0 1 启动 1 0 1 1 0 1 Check out边界类 1 0 1 启动启动 启动 1 0 1 1 0 1 1 0 1 取消订房边界类 加入系统起始类别 考虑多重性 Multiplicity 例如 顾客 可以有多笔 订房信息 而每笔 订 房信息 则只归属于一个 顾客 此时通常让顾客保 有一份 订房指令清单 而订房信息则保有可参考到 顾客的属性 0 1 0 1 预定 顾客 姓名 身份证 性別 出生日期 电话 住址 订房信息清单 List 加入訂房資訊 訂房資訊 設定姓名 取得姓名 設定身份證號碼 取得身份證號碼 略 订房信息 订房信息编号 订房日期 顾客身份证号 設定訂房日期 取得訂房日期 加入房間 房間 房型 房型編號 價格 住房人數 景觀 略 时间范围 起始時間 結束時間 房間狀態 房間號碼 設定狀態 房間狀態 取得狀態 略 1 0 1 0 0 1 0 1 0 1 预定 1 0 1 1 0 1 顾客 姓名 身份證號碼 性別 出生日期 電話 住址 訂房資訊清單 List 加入訂房資訊 訂房資訊 設定姓名 取得姓名 設定身份證號碼 取得身份證號碼 略 订房信息 訂房資訊編號 訂房日期 顧客身份證號碼 房間清單 List 設定訂房日期 取得訂房日期 加入房間 房間 房间 房間號碼 房型編號 時間範圍清單 List 加入時間範圍 時間範圍 設定房間號碼 取得房間號碼 软件组成 单元 属性 行为 类别 套件 等 某个软件组成之可见度 决定了该软件组成是否 可被其他软件组成所存取 private 属性通常宣告成private public 方法通常宣告成public protected 当类别本身落在某个继承体系 有时为了提供子类别 访问权限 属性 方法的可见度可能设定成protected friendly package 只能被相同套件中的其他成员存取 房型 房型編號 價格 住房人數 景觀 略 时间范围 起始時間 結束時間 房間狀態 房間號碼 設定狀態 房間狀態 取得狀態 略 1 0 1 0 0 1 0 1 0 1 0 1 箇 1 0 1 1 0 1 顾客 姓名 身份證號碼 性別 出生日期 電話 住址 訂房資訊清單 List 加入訂房資訊 訂房資訊 設定姓名 取得姓名 設定身份證號碼 取得身份證號碼 略 订房信息 訂房資訊編號 訂房日期 顧客身份證號碼 房間清單 List 設定訂房日期 取得訂房日期 加入房間 房間 房间 房間號碼 房型編號 時間範圍清單 Lis t 加入時間範圍 時間範圍 設定房間號碼 取得房間號碼 公开 public 等级以 来表示 则为私有 private 等级 加入可见度后的类别图 目的 决定属性数据型态 例如 整数 integer 字符串 String 决定行为的原型定义 传入的参数列 Parameter List 以及回传值型态 Note 若属性具有初始值 此时可一并设定 房型 房型編號 Integer 價格 Float 住房人數 Integer 景觀 Integer 略 时间范围 起始時間 Date 結束時間 Date 房間狀態 Integer 房間號碼 Integer 設定狀態 state Integer Void 取得狀態 Integer 略 1 0 1 0 0 1 0 10 1 箇 顾客 姓名 String 身份證號碼 String 性別 Boolean 出生日期 Date 電話 String 住址 String 訂房資訊清單 List 加入訂房資訊 orderInfo 訂房資訊 Void 設定姓名 name String Void 取得姓名 String 設定身份證號碼 id String Void 取得身份證號碼 String 略 房间 房間號碼 Integer 房型編號 Integer 時間範圍清單 List 加入時間範圍 timeInterval 時間範圍 Void 設定房間號碼 number Integer Void 取得房間號碼 Integer 订房信息 訂房資訊編號 Integer 訂房日期 Date 顧客身份證號碼 String 房間清單 List 設定訂房日期 date Date Void 取得訂房日期 Date 加入房間 room 房間 Void 0 1 0 1 1 1 加入数据型态后的类别图 目的 让后续的实作更有所依据 通常只挑选具代表性的或是比较复杂的程序来撰 写 撰写语言 自然语言 程序描述语言 Program Description Language Note
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区工作总结工作思路
- 服务经理年终总结
- 快消品业务员工作总结
- 胸腔引流管的导管护理
- 烟桥社区工作总结
- 脑胶质瘤放化疗护理措施
- 乾安交通安全培训课件
- 《羚羊木雕》课本剧课件
- 每日个人工作总结
- 《绿山墙的安妮》课件
- 2025年中小学心理健康教育试卷及答案
- 高中语文-“病句辨析”模块“语序不当”知识点
- 粮食培训考试题及答案
- 工程整改方案及措施(3篇)
- 2025标准合同范本:餐饮业劳动合同书
- 老年人护理冷热应用课件
- 政府法律顾问聘用合同
- 部编人教版六年级上册道德与法治全册教案
- 2025年共青团入团考试测试题库及答案
- 第13章第2节 人体免疫课件-2025-2026学年北师大版八年级上册生物
- 2025上海科技馆招聘高层次专业技术人才3人备考考试试题及答案解析
评论
0/150
提交评论