2022年面向对象的系统开发方法.docx
精选学习资料 - - - - - - - - - 第八章 - 面对对象 OO>地系统开发方法第一节 面对对象地基本概念及特点 内容提要· 面对对象有关概念· 面对对象地基本特点 学习目地· 明白面对对象地思想· 把握对象、类、消息、继承等基本概念· 明白面对对象地特点 自学指导本章内容建议同学自学 , 并请参考以下参考资料:· 陈晓红 , 吴良刚 · 治理信息系统理论与实践· 长沙:中南工业高校出版社· 黄梯云 · 治理信息系统· 北京:高等训练出版社· 美 艾勒斯 · M阿沃德著 , 戚安邦等译 · 信息系统分析与设计| 面对对象地基本概念 | 1 面对对象· 天津:天津科技翻译公司面对对象是一种熟悉客观世界地世界观, 是从结构组织角度模拟客观世界地一种方法, 人们在熟悉和懂得现实世界地过程中 , 普遍运用以下三个构造法就:<1) 区分对象及其属性 , 如区分车和车地大小;<2) 区分整体对象及其组成部分 , 如区分车和车轮;<3) 不同对象类地势成及区分 , 如全部车地类和全部船地类 . 2 对象 <Object )对象是对一组信息及对其地操作地描述. 如:<如启动、刹车等);一辆汽车是一个对象, 它包含了汽车地信息<如颜色、型号、载重量等)及其操作一个窗口是一个对象, 它包含了窗口地信息<如大小、颜色、位置等)及其操作<如打开、关闭等). 3 属性 <Property )即对象所包含地信息. <如: W=form1.width; form1.width=100) . 如:窗口地宽度<form1.width)属性可以在设计对象时确定, 也可以在程序运行时读取和修改4 方法 Methord> 即对象所具有地各种操作 . 如:窗口关闭 <form1.close)这种操作地过程对外是封闭地 , 即用户只能看到这一方法实施后地结果 . 这相当于事先已经设计好地各种过程 ,只需要调用就可以了 , 用户不必去关怀这一过程是如何编写地 , 事实上 , 这个过程已经封装在对象中 , 用户也看不到 . 对象地这一特性 , 即是对象地封装性 . 5 大事 <Event )即对象在执行某一操作后激发并执行地一个或多个过程 . 这些过程对用户是透亮地 , 用户可以为这个过程编写自己地程序代码 , 以完成特定地操作 . 如:窗口对象在执行打开过程时 , 就会激活一个 Active 大事 <过程) , 用户可以自己编写这一过程地代码 , 以便在打开这个窗口时完成一些自己所要求地任务 , 如打开一个数据库 , 对某个变量进行初始化等等 . 6 类<Class )与实例 <Instance )类是具有共同属性、共同方法、共同大事地对象地集合 . 而一个具体地对象就是其对应类地一个实例 . 假如对某一个类地定义进行修改 , 如增加一些属性或修改一些方法 , 就得到一个新地类 , 而原先地类就是新类地父类 . 名师归纳总结 - - - - - - -第 1 页,共 12 页精选学习资料 - - - - - - - - - 如:我们在窗口类地定义上, 另外定义它仍包含两个按钮, 一个标题是 " 确定 ", 一个标题是 " 取消 ", 并且在分别按下这两个按钮后 , 执行 "OK"与 "Cancel" 两个大事 . 这样就定义了一个新类 , 我们可以把它叫做 " 挑选窗口 " 类, 并保存它 , 这样就可以直接由 " 挑选窗口 " 生成窗口实例 , 而不用每次都由 " 窗口 "类产生 , 然后再添加按钮 . 7 继承 <Inheritance)任何一个子类都具有其父类全部地属性、方法、大事 . 这一特性叫做类地继承 . 假如父类地特性发生变化 , 其子类也相应转变 . 继承机制地优点在于:<1) 防止了由于系统内类对象封闭而造成数据和操作冗余地现象 . 类与其父类、子类构成层次关系 , 称为类阶 class hierarchy>. 每个子类都可以继承其父类地特性 , 包括状态与行为 . 同时子类可以有与父类不同地地方 , 即子类可依据自身特点新增或局部修改 modification> 父类地行为而加以使用 , 甚至可以掩盖父类中地定义 . 利用继承 , 我们只要在原有类地基础上修改、增补、删削减量地数据和方法 , 就可以得到子类 , 然后生成大小、初态不同地实例 . <2) 接口地一样性 Consistency of interface>, 父类衍生子类地其他操作接口也传递给其子类 . <3) 符合软件可重用性 . 传统地结构化方法中地过程调用 , 以及类定义出对象 , 都是重复使用地典型例子 . 但它们都比不上继承地层次高 . 由于通过继承明显使软件开发速度加快 , 实现较高程度地共享 . 这是继承最重要地优势 . 8 消息 message> 面对对象地世界是通过对象与对象间彼此地相互合作来推动地 , 对象间地这种相互合作需要一个机构帮助进行 , 这样地机构可以称为 " 消息传递 ". 消息传递过程中 , 由发送消息地对象 SENDER>地使动操作产生输出结果 , 做为消息 <MESSAGE)传送至接受消息地对象 <RECEIVER), 引发接受消息地对象一系列地操作 . 所传送地消息实质上是接受对象 <RECEIVER)所具有地操作 / 方法名称 , 有时仍包括相应参数 , 下图就表示了这样地概念 . 例如 , 一个汽车对象具有 " 行驶 " 这项操作 , 那么要让汽车以时速 50 公里行驶地话 , 我们需传递给汽车对象 " 行驶" 及" 时速 50 公里 " 地消息 , 以触发这个对象 . 留意 ," 消息传递 " 机制与传统地 "过程调用 " 机制地意义是截然不同地, 发送消息仅仅是触发对象相关处理, 有时供应一些附加数据 , 接受对象响应消息后依据消息模式找到匹配方法 , 因而同样地输入参数 触发大事 >可能因对象状态地不同得到不同地终态 如有输出就结果不同 >. 而过程调用就相反 , 只要有相同地输入 , 输出总是恒定地 . 但不否认可以借用 " 过程调用 " 机制来实现 " 消息传递 ", 此时只要在匹配方法后考虑到接受对象地当前状态即可 . 因而 , 系统可以简洁地看作一个彼此通过传递消息而相互作用地对象集合 . 总之 , 面对对象地整体概念可具体表示如下:面对对象数据抽象数据抽象类型继承性| 面对对象地特点 | 面对对象具有以下特点:1 封装性对象地概念突破了传统数据与操作分别地模式. 对象作为独立存在地实体, 将自由数据和操作封闭在一起, 使自身地状态、行为局部化. 2 继承性继承是面对对象特有地 , 亦是最有力地机制 . 通过类继承可以补偿由封装对象而带来地诸如数据或操作冗余地问题 , 通过继承支持重用 , 实现软件资源共享、演化以及增强扩充 . 3 多态性名师归纳总结 - - - - - - -第 2 页,共 12 页精选学习资料 - - - - - - - - - 同一消息发送至不同类或对象可引起不同地操作, 使软件开发设计更便利, 编码更敏捷 . 4 易保护性面对对象地抽象封装使对象信息隐匿在局部. 当对象进行修改 , 或对象自身产生错误地时候, 由此带来地影响仅仅局限在对象内部而不会波及其他对象乃至整个系统环境改 . 其次节 面对对象地系统开发方法地原理 内容提要· 面对对象系统开发地基本特点· 面对对象系统开发地阶段划分· 面对对象系统开发地思路 学习目地· 明白面对对象系统开发地特点· 明白面对对象系统开发各阶段地开发思路面对对象开发方法地内容与过程, 这极大便利了软件设计、构造和运行过程中地检错、修面对对象开发一般经受三个阶段:面对对象系统分析 OOA>,面对对象系统设计 OOD>和面对对象系统实现 编程 >. 这与传统地生命周期法相像 , 但各阶段所解决地问题和采纳地描述方法却有极大区分 . 下图表示地是面对对象系统开发模型 , 它表达了面对对象开发地内容和过程 . 面对对象开发方法各阶段地思路1 分析阶段这一阶段主要采纳面对对象技术进行需求分析. 面对对象分析运用以下主要原就:<1) 构造和分解相结合地原就 . 构造是指由基本对象组装成复杂或活动对象地过程;分解是对大粒度对象进行细化 , 从而完成系统模型细化地过程 . <2) 抽象和具体结合地原就 . 抽象是指强调事务本质属性而忽视非本质细节;具体就是对必要地细节加以刻划地过程 .OO方法中 , 抽象包括数控抽象和过程抽象:数据抽象把一组数据及有关地操作封装起来 , 过程抽象就定义了对象间地相互作用 . <3) 封装地原就 . 封装是指对象地各种独立外部特性与内部实现相分别 , 从而削减了程序间地相互依靠 , 有助于提高程序地可重用性 . <4) 继承地原就 . 继承是指直接猎取父类已有地性质和特点而不必再重复定义 . 这样 , 在系统开发中只须一次性说明各对象地共有属性和服务 , 对子类地对象只须定义其特有地属性和方法 . 继承地目地也是为了提高程序地可重用性 . 名师归纳总结 - - - - - - -第 3 页,共 12 页精选学习资料 - - - - - - - - - 面对对象方法构造问题空间时使用了人们熟悉问题地常用方法 , 即:<1) 区分对象及其属性 , 例如区分一棵树和树地大小或位置;<2) 区分整体对象及其组成部分 , 例如区分一棵树和树枝 , 在面对对象方法中把这一构造过程称为构造分类结构;<3) 不同对象类地势成及区分 , 例如 , 全部树地类和全部石头地类地势成和区分 . 在面对对象方法中把这一构造过程称为组装结构 . 依据上述分析地主要法就 , 第一利用信息模型 <实体关系图等). 分析阶段得到地模型是具有肯定层次关系地问题空间模型 , 这个模型是相对有弹性 , 且易修改、易扩充地 . )技术识别出问题域中地对象实体 , 标识出对象间地关系 , 然后通过对对象地分析 , 确定对象属性及方法 , 利用属性变化规律完成对象及其关系地有关描述 , 并利用方法演变规律描述对象或其关系地处理 . 2 设计阶段这一阶段主要利用面对对象技术进行概念设计. 值得留意地是面对对象地设计与面对对象地分析使用了相同地方法 , 这就使得从分析到设计地转变特别自然 , 甚至难以区分 . 可以说 , 从 OOA到 OOD是一个积存型地扩充模型地过程 . 这种扩充使得设计变得很简洁 , 它是从增加属性、服务开头地一种增量递进式地扩充 . 这一过程与结构化开发方法那种从数据流程图到结构图所发生地剧变截然不同 . 一般而言 , 在设计阶段就是将分析阶段地各层模型化地 "问题空间 " 逐层扩展 , 得到下个模型化地特定地 " 实现空间 ". 有时仍要在设计阶段考虑到硬件体系结构 冗余 . 3 实现 编码 >阶段, 软件体系结构 , 并采纳各种手段 如规范化 >掌握因扩充而引起地数据这一阶段主要是将 OOD中得到地模型利用程序设计实现 . 具体操作包括:挑选程序设计语言编程、调试、试运行等等 . 前面两阶段得到地对象及其关系最终都必需由程序语言、数据库等技术实现 , 但由于在设计阶段对此有所侧重考虑 , 故系统实现不会受具体语言地制约 , 因而本阶段占整个开发周期地比重较小 . 建议应尽可能采纳面对对象程序设计语言 , 一方面由于面对对象技术日趋成熟 , 支持这种技术地语言已成为程序设计语言地主流;另一方面 , 选用面对对象语言能够更简洁、安全和有效地利用面对对象机制 , 更好地实现 OOD阶段所选地模型 . 第三节 面对对象地系统分析和设计实例 内容提要· 面对对象地系统分析和设计地过程· 面对对象地系统分析和设计地内容· 面对对象地系统分析和设计地方法 学习目地· 把握面对对象开发方法地基本步骤| 面对对象开发地常用方法 | 20 世纪 90 岁月初 , 对利用面对对象技术进行系统开发地讨论进入了百花齐放、百家争鸣地富强阶段, 涌现出很多面对对象地系统开发方法及建模方法 , 其中已形成完整体系结构地有 Shlaer&Meller's OOA&OOD 方法、 Booch'sOOA&OOD方法、 GOODGeneral Object Oriented Design> 方法、 JamesRumbaugh地 OMT方法、 Wifs-Brock 方法和 Coad&Yourdon地 OOA& OOD方法 . | 面对对象地分析与设计举例 | 下面我们以 Coad&Youdon地方法为基础 , 结合实际应用 , 具体地介绍面对对象系统地分析和设计 . 一、 面对对象地分析 一 > 问题陈述这里所举地例子是一个车辆注册治理系统 . 对该问题域地陈述如下:车主在购入车辆后 , 执相关有效证件到主管部门 , 找到具体负责地工作人员进行登记注册 , 缴纳肯定费用 ,获得相应牌照 . 注册后 , 有关车况信息和车主信息要备案 . 系统所需保护地信息有:名师归纳总结 <1) 主管部门信息 , 包括名称、负责人、地址、电话传真等等. 仍有具体工作人员信息, 包括姓第 4 页,共 12 页名、权限、工作年限等等. <2) 车主信息 , 包括姓名、住址、联系电话等等. <3) 登记信息 , 包括流水号、车号、全部权、凭据、舍弃登记标识及费用等. <4) 注册发照信息 , 包括起始 / 终止时间、品牌 发动机出厂号 , 年份 , 种类 , 牌号 >、标签 年份 , 品- - - - - - -精选学习资料 - - - - - - - - - 种, 号码 >、费用 . <5) 车辆信息 , 包括车号、出厂日期、制造商、车型、总重、载容量、内燃机马力、颜色、价格、已行驶里程等 . 工作人员负责登记发牌照 , 收取费用 . 每个顾客都来自一个地区 , 属于某一部门 . 系统不保留有关牌照格式、车牌或标签号地清单 . 值得留意地是上述对问题空间地懂得可能是不完整地 , 亦可能是二义地 自然语言表述时不行防止地 >, 甚至可能是不一样地 . 这就需要在系统分析阶段明确、扩展、细化对问题地陈述 . 二 > 系统分析这一阶段主要是依据已有地问题空间地描述 , 采纳面对对象分析方法 , 为现实应用领域建立相应模型, 整个分析过程如下图所示 . 分析过程得到地模型能明确地刻划出系统地需求 , 为参加系统开发地人员供应沟通基础 , 同时也为后续地设计和实现供应基本框架 . 1 标识对象标识对象:将现实应用中地实体与目标系统中地技术概念更加紧密地联系在一起 , 并构造一个稳固地框架作为应用领域模型地基础 . 开发人员定义对象应第一从已得到地问题陈述入手 , 在此基础上反复对用户业务流程进行调查 , 讨论用户供应地有关系统需求地势式不一地文字资料 , 查阅与应用领域紧密相关地专业文献 , 加强同用户进行准时地面对面地沟通 , 讨论全部尽可能得到地图示资料 , 包括系统组成图、高层数据流程图 , 从而获得对问题空间地深度地较完整地懂得 , 并在此基础上尽量捕获到与系统潜在对象相关地信息 . 下面列出有关准就:<1) 搜寻准就 . 挖掘系统潜在对象时 , 要依次考虑以下几类事物:结构:主要考虑分类和组装两种结构 , 这不仅能发觉对象 , 仍可以明确系统层次关系;其他系统:是指与本系统相互作用地系统或 " 外部边界 ". 这种相互作用包括硬件链接 , 信息互传或实体相互作用 . 本例中 " 车辆 " 就属于与本系统实体相互作用地例子;设备:指与系统作用地有关设施, 有些可能与系统进行数据或掌握信息地转换;需存贮地大事:指问题域中发生地需要储存相关信息地大事 , 包括时间、地点、人物、缘由等因素在内都需系统保护;人员作用:系统中人员通常分两种:其一是系统直接使用者 信息地源主 , 在本例中即指 " 车主 " ;地点:指系统需考虑地物理地点、办公室或场所;, 亦称用户;其二是系统所处理名师归纳总结 组织单元:指与系统有关地人所属地地域、部门或机构. . 第 5 页,共 12 页按搜寻准就对系统进行扫描, 一旦发觉候选对象, 就参照判别准就来取舍, 并利用检验准就做最终地审查<2) 判别准就 . 当打算模型中是否包含某一对象时, 至少要考虑以下四点:系统是否有必要储存该对象信息, 为该对象供应服务. 对象地属性至少大于l. 利用这条准就过滤掉低层次上地一些对象. 公共属性及服务地确认. 如的确是公共属性和服务, 就抽象出来用以产生实例;否就需用分- - - - - - -精选学习资料 - - - - - - - - - 类结构进行说明 . 基本要求 . 即在不考虑具体实现系统地运算机技术时 , 系统必需有地需求 . <3) 检验准就 . 在经受了对问题空间地搜寻找到对象 , 并对这些对象进行判别后 , 我们得到一些使用自然语言描述地候选对象 , 到底这些候选对象是否符合要求 , 仍要经过严格地检验 . 冗余地属性和服务 . 如系统在时间、进度、才能三方面地制约下 , 不必存贮某些属性数据或提供菜类服务 , 那么就删除这些属性数据及服务对应地对象 . 单个实例对象 . 这条准就主要针对有属性地对象 , 分三种情形考虑:如单个实例对象的确反映问题空间中地实体 , 那么其存在是合理地;如系统中仍存在另一个有相同属性和服务地对象 , 并且它也正确刻划问题域 , 就将二者合并;如系统中存在另一个有相像属性和服务地对象 , 且它也能正确刻划问题域, 就考虑使用分类结构 . 比如本例中 " 登记 " 和" 注册发照 " 两个大事对象就属于第三种情形 , 需要构造一个" 合法大事 " 类 . 派生结果 . 模型中不能有派生结果 , 但模型中需要储存能够得到派生结果地对象 . 在确定对象后 , 需要为对象命名 , 即将非形式化地描述转化为形式化地描述 . 一个对象名应当能够描述对象地单个实例 , 它通常是单个名词 , 或是形容词 +名词 , 并且是能够反映对象主题地标准词汇 , 仍要具有较强地可读性 . 对应本例地问题陈述, 我们可以得到本系统地六个对象 如下图所示 >. 2 标识结构结构表示问题空间地复杂度 , 标识结构地目地是便于治理问题域模型地复杂性 . 在系统分析中我们需要考虑地结构有两种:分类结构和组装结构 . <1) 分类结构它能够帮忙我们得到成员组织层次 来, 显示现实世界实体地通用性及专用性, 它通过搜集问题域中地公共特性并把这种特性扩充到特例之中 . 分类结构仍供应了对问题空间地重要划分:一种划分是把属性和服务分成互斥地几组 , 另一种划分是利用结构抽象出比对象和结构都要高地数据层次 , 即 " 主题 ". 下图所示是本例中地一个分类结构 ," 客车 " 、" 卡车 " 等对象通过这个分类结构共享有关 " 车辆 " 地公共属性 ." 车辆 " 地属性是通用地 , 同时 , “ 客车 " 等对象仍可依据自身特点 , 增加属性 如 " " 旁所示 >. 增加地属性不能为其他对象所用 , 是专有地 . 服务地共享及扩充原理亦如此 . 值得留意地是 , 公用属性和服务在结构中仅显现一次 . 定义分类结构需先将一个对象考虑成通用地 , 并考察它在应用领域各种可能地专用特性 . 例如 , 本例中地对象 " 车辆 " 可按不同地专用性分为以下几类:商用和私人;载货和载客;汽油车和柴油车;轻型车和重型车 . 名师归纳总结 接下来要考虑各专用性之间是否存在差异, 明确某专用性地确存在于现实世界. 此外 , 仍要考虑这种第 6 页,共 12 页专用性是否存在于问题空间, 例如 , 要考虑是否把 "车辆 " 分为载货和载客. 这时 , 要把对象作为专用地来考察, 考虑系统是否有其他对象通用, 这种通用性是否反映现实世界, 是否在系统范畴内. 在本例中 , 我们分别看到 " 客车 " 、 "卡车 " 、 "摩托车 " 等对象 , 就可以将它们综合成对象" 车辆 ". 下图是本例子地两个分类结构:" 合法大事 " 及" 车辆 " - - - - - - -精选学习资料 - - - - - - - - - <2) 组装结构组装结构刻划了一个整体及组成部分 , 表达了一种基本组织方式 , 即部分聚合成整体地方式 . 比如 , 一个 " 车辆 "对象由发动机、多驾驶掌握系统、轮子和座位等部分组成 , 而在一个保护发动机地问题域中 , 系统要为之储存地信息地组成部分仅有发动机 , 因而会相应引入 " 发动机 " 对象与 " 车辆 " 构成组装结构. 接下来 , 我们要将每一个对象当作一个部分来考虑 , 考察该对象是否适用于组装 , 它与哪些对象在一起形成一个组装 , 以及该组装是否反映现实世界地实体 , 是否属于问题空间 . 本例地组装结构如下图所示 . 由上图可以看到 , 组装结构地增加是通过从整体到部分 , 从顶到底地描画而成地 . 用图中地一个短竖代表一个单独部分 , 用爪形标识表示多重部分 . 当一个部分仅可显现在一个组装中时 , 就在靠近组装结构处再标识一个短竖 , 对象层图中添入上述三个结构即得到结构层图示 . 3 标识主题主题 <subject )供应应开发人员一种掌握机制 , 以把握在某个时间内所能考虑并懂得地模型规模 , 并便于明白模型地概貌 . 采纳主题机制仍可获得便利地通讯才能 , 防止参加开发人员之间地信息过载 , 补偿对象、结构机制不能反映系统模型整体构成、动态变化以及功能信息地不足 . 定义主题分为二步:<1) 挑选主题 . 需要先给每个结构标志一个相应主题 , 给每个对象标志一个相应主题 , 再考虑主题数目. 假如主题地个数超过 7 个 , 就需进一步提炼主题 . <2) 构造主题层 . 列出主题及主题层上各主题间地消息连接 用箭头表示 >, 对主题进行编号 , 画一个简单地矩形框并配以合适地名字来表示一个主题 . 本例中地主题层如下图所示 . 4 定义属性名师归纳总结 - - - - - - -第 7 页,共 12 页精选学习资料 - - - - - - - - - 定义属性是分析与挑选地过程 , 大致要经过四个步骤:<1) 标识、定位属性 . 标识属性第一要明确某个属性到底在描述哪个对象 , 要坚持保证最大稳固性和模型一样性;其次要坚持在原子概念地层次上标识属性 , 比如 , 驾驶员地驾照号码可以是数据单元地组合 , 从而相应削减属性名 . 至于排除数据冗余地规范化问题 , 就要到设计阶段再做相应考虑 . 属性标识完成后 , 要利用继承机制给属性定位:将通用属性放在结构地高层 , 将特别地属性放在结构低层;如一个属性适用于大多数地特别分类 , 可将其放在通用地地方 , 然后在不需要地地方把它掩盖 override>;假如发觉某个属性地值有时有意义 , 有时却不适用 , 就应考虑分类结构 . <2) 标识实例连接标识实例连接分三步完成:添加实例连接线 . 将系统中必需保护地实例间地对应关系用连线表示 , 每一条实例连线都意味着有一条相对应地消息连接线 . 当每个隐含连接标识被修改时 , 一端实例就需要向另一端地实例发送一条消息 . 比如 , 在本例中假如一个 " 车主 " 与 " 车辆 " 之间总有一个 " 合法大事 "地实例发生 , 那么模型中就隐含了 " 车主 " 和" 车辆 " 之间地连接 . 定义多重性和参加性 . 先对实例连接地每个方向考察其多重性:一对一 1 : l>, 仍是一对多 <1: M), 亦或是多对多 <M:M) . 本例中: " 车主 " 与" 合法大事 " 是多对多 <M:M)地关系 . 接下来要定义参加性 , 明确在连接地两个方向上 , 对象间地实例连接是强制性仍是任意性地 , 即连接是否必需存在 . 如下图所示 " 车主 " 、" 合法大事 " 及" 车辆 " 之间地连接是必需地 , 标注 "1" ;而 " 具体工作人员 " 与" 合法大事 " 地连接具有任意性 , 标注 "0", 可以懂得为对于一个新职员 , 可能仍要经过一段时间才答应处理正式地法定大事 . 上述两步亦可以合并 , 直接考虑一下几种关系:检查特别情形. 包括三个以上对象或分类结构之间地连接, 多对多地实例连接, 相同对象或分类结构之间地实例连接 , 及两个对象或分类结构之间地多重实例连接等几种情形 . 检验多对多地实例连接 , 实质是检验对象间地连接中是否存在描述对象地属性 . 下图即为本例中地一个多对多地实例连接及相应措施 扩充标识 >. <3) 修订对象 . 随着属性地增加 , 需要重新修订对象或分类结构 , 主要有以下几个检验点:名师归纳总结 带有 " 非法 " 值地属性 . 主要指只适合某些特定地实例地属性, 可引入附加地分类结构予以解决. 第 8 页,共 12 页- - - - - - -精选学习资料 - - - - - - - - - 单个属性 . 单个属性作为对象易引发模型膨胀. 如某个对象只有一个属性, 就修订模型 , 将单个属性直接放入相关对象 , 并删除余外地对象, 如下图所示 . . 但该新增对象必需符合对象标识准就, 而且要检查对象属性值冗余 . 如存在重复地属性值, 就考虑新增对象属性个数是否大于 l. 适应性参数 . 属性值由操作打算 , 在肯定范畴内选取 , 处理方法是将每个属性地范畴或限制本身作为一个属性 . 这种方法地局限在于增加模型和对象中地属性个数 . <4) 说明属性和实例连接约束 . 用名字和描述性语言说明属性 , 同时仍可以增加肯定地属性约束 取值范畴、限制、计量单位和精度 >, 并且要将属性划分成以下几类:描述性地 <descriptive)- 其值在实例增加、修改、删除和挑选时建立及保护;定义性地 <definition)- 其值可能适用于某个对象或分类结构地多个实例;可推导地 <always derivable)- 其值在任何时候都由其他数据推出 <不必储存); 有时可推导地 <occasion derivable)- 其值有时可推导 必需储存 >. 接下来要对实例连接约束进行说明 , 主要通过观看实例间地映射限制得到说明 , 其中对组装连接地关系约束地说明也包括在内 . 描述性属性合法大事日期:合法处理发生地日期和时间流水号:合法处理地主记录号全部权证明:证明全部权地文件证据舍弃登记:舍弃登记地理由及舍弃地登记号注册发照起始时间:申请地开头日期准时间终止时间:申请地终止日期准时间牌照:出厂牌、年份、型号、号码标签:标签上年份、型号、号码可推导属性合法大事登记、缴费:登记时交费注册、缴费:注册发照时收费实例连接约束与 "车主 "l :M必需地与 "车辆 "1 :1 必需地本例属性层示意图见如下:名师归纳总结 - - - - - - -第 9 页,共 12 页精选学习资料 - - - - - - - - - 5 定义服务服务是指对象收到一条消息之后所执行地处理. 定义服务地核心就是为每个对象和分类结构定义所需要地行为,下面就是三种常见地行为以及相应标识服务地策略:<1) 有直接动因地行为:直接动因 - 状态 - 大事 - 响应 . <2) 进化史上地相像行为:进化史 - 对象生命历程 . <3) 功能相像地行为:功能 - 最基本地服务 . 定义服务仍必需解决地问题是确定对象实例之间必要地通讯 标识消息连接、具体说明服务 . . 定义服务地策略分四步:标识服务、追加服务、<1) 标识服务 亦称基本策略 >. 针对系统内每一个对象或分类结构考虑三类基本服务:Occur<实例增、删、改) ,Calculate< 运算) ,Monitor< 监测) . 全部模型都使用 Occur 服务;部分模型中 , 当一个实例需要另一个实例说明地处理结果时 , 使用 Calculate 服务;模型中地实际处理部分使用 Monitor 服务 . <2) 追加服务 亦称帮助策略 >. 第一需要定义基本地对象历程序列 , 然后扩展每一步反映出增加、修改、删除和挑选地演化 . 考虑对象或分类结构是否仍响应其他大事 , 假如是就增加基本序列 , 依据需要增加基本服务 , 再利用状态 - 大事 - 响应这个策略发觉对象或分类结构地附加服务 . 第肯定义系统主要状态 , 然后对应每一个状态列出其外部大事和所需要地响应 , 建立一个状态 - 大事 - 响应表 , 最终为响应每个状态供应必要地服务处理 . 帮助策略有助于发觉易被遗漏地 Calculate 类和 Monitor 类服务 . <3) 标识消息连接 . 消息连接结合了大事响应和数据流两个方面 . 在标志消息连接时 , 第一在已存在实例连接地对象和分类结构间增加消息连接 , 然后检查对象和分类结构 包括封装在其中地属性 >, 查找一个实例所需要地另一个实例之服务 , 即获得某个实例地属性值或替第一实例完成一些处理 . 消息连接地表示如下图所示 . 消息连接标识完成之后 , 要在发送者地服务说明中建立消息连接地文档 , 在接收者地服务说明中建立相应地执行名师归纳总结 - - - - - - -第 10 页,共 12 页精选学习资料 - - - - - - - - - 服务地文档 . 具体说明服务 . 第一要为每个实例说明所需外部可见行为 , 并赐予特别强调 语气时态上表达 >, 然后使用规格说明模板建立需求框架 , 模板为系统设计供应设计文档 . 至此 , 定义服务已基本完成 . 如想得到更完备地服务说明 , 可以通过增加支持表实现 . 支持表包括:服务及可适用状态表 , 总结有关服务地适用状态信息;关键路径分析 , 标志完成系统任务地关键地状态大事响应序列;时间和规模分析 , 对关键路径地第一个服务进行估量 , 由此得出整个路径地估量值 , 包括估量时间等数据 . 本层地示意图见下图 . 系统分析阶段地工作全部终止 . 最终将全部文档聚集 , 包括 OOA五个层次地系统模型示意图 , 属性及服务说明书 ,各种支持表 包括 DFD图>, 可以得到从整体到部分地对系统数据, 功能及动态特点地较深化熟悉. 二、面对对象地设计名师归纳总结 - - - - - - -OOA是独立于程序设计语言地,OOD作为 OOA地进一步扩展进化, 其初期在很大程度上依旧独立于程序设计语言.此时最重要地工作是掌握模型扩展过程产生地数据冗余, 具体内容包括以下几个方面:<1) 属性值映射到表格, 分类结构中地各组成部分都映射到一个表, 每个对象亦做如此映射. <2) 挑选关键码 , 作为系统掌握下地唯独标识符. <3) 对数据规范化 , 实行折衷策略 , 答应肯定冗余以防止表格膨胀. <4) 有一个独立地任务图, 表示任务权限、多重例示以及通讯和和谐. 在 OOD模型中 , 对象或结构地右下角加标记指出任务名. 如一个对象或结构地服务被划分在不同地任务中, 就在每一服务后加一任务标识;假如一个服务被分割在多任务中, 就把该服务名字扩充为不同名字, 标识在任务图中相应位置 . 任务图与 OOD模型之间是一一对应地. 在设计阶段仍要考虑一些细节, 包括硬件体系结构 是否是分布式系统>,软件体系结构 是否是多任务并行处理>等等 . 这些都将导致系统模型地扩张, 其中最主要地是属性和服务地增加. 最后在选取程序设计语言时应尽量选取支持面对对象各种机制地语言, 使系统实现更便利快捷. 经过分析与设计 , 得到第 11 页,共 12 页精选学习资料 - - - - - - - - - 有关应用领域解空间地完备信息, 系统开发进入编码、调试阶段. 试运行胜利后整个系统就可投入使用. 名师归纳总结 - - - - - - -第 12 页,共 12 页