1、OOAOOAOODOODOOPOOP 3.4.2 面向对象分析方法v软件开发中为什么要使用面向对象软件开发中为什么要使用面向对象方法?方法?v面向对象分析方法与结构化分析方面向对象分析方法与结构化分析方法有哪些相似之处?有何区别?法有哪些相似之处?有何区别?v面向对象方法是对过去的一个完全面向对象方法是对过去的一个完全突破,还是突破,还是“换汤不换药换汤不换药”?对象(object)现实世界中某个具体的物理实体或概念在计算机现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。逻辑中的映射和体现。对象具有的含义:对象具有的含义:q 在现实世界中:在现实世界中:是客观世界中的一个实体是客
2、观世界中的一个实体q 在面向对象程序中:在面向对象程序中:表达成计算机可理解、可操纵、具有一表达成计算机可理解、可操纵、具有一 定属性和行为的对象定属性和行为的对象q 在计算机世界中:在计算机世界中:是一个可标识的存储区域是一个可标识的存储区域 面向对象方法是一种运用对象、类、面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态继承、封装、聚合、消息传递、多态性等概念来构造系统的性等概念来构造系统的软件开发方法软件开发方法。面向对象的主要特征:面向对象的主要特征:q封闭性封闭性 (Encapsulation)(Encapsulation)q 继承性继承性 (Inheritance)
3、(Inheritance)q 多态性多态性 (Polymorphism)(Polymorphism)类(类(classclass)具有共同属性和行为的对象的抽象类与对象的关系类是对象的抽象对象是类的实例对象、实体与类对象、实体与类封装封装 封装是软件开发方法的重要原则,有两个涵义:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。尽可能隐蔽对象的内部细节(信息隐蔽)传统方法数据与过程是分离的传统方法数据与过程是分离的过程过程1 1输入输入输出输出过程过程2 2过程过程3 3数据实体数据实体属于该对象属于该对象的数据的数据对象对象处理数据的方法处理数据的方法消息消息消息消
4、息对象把数据和处理数据的方法封状成一个单元对象把数据和处理数据的方法封状成一个单元传统方法和面向对象方法的比较传统方法和面向对象方法的比较继承继承 (继承性(继承性inheritance)inheritance)继承性是父类和子类之继承性是父类和子类之间共享数据和方法的机间共享数据和方法的机制制 继承性具有传递性继承性具有传递性 继承性包括单继承和多继承性包括单继承和多重继承重继承 子类子类继承部分继承部分增加部分增加部分父类父类共性部分共性部分继承性作用 使软件系统具有开放性 更好地进行抽象与分类 增强代码的重用率多态(多态性多态(多态性polymorphism)polymorphism)不
5、同的对象收到同一消息可产生完全不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态不同的结果,这一现象叫做多态多态的效果多态的效果 用户发送一个通用的用户发送一个通用的消消息,而实现的细节则由接收对象自息,而实现的细节则由接收对象自行决定行决定多态性的作用 增强了操作的透明性,可理解性和增强了操作的透明性,可理解性和可扩展性可扩展性 增强了软件的灵活性和重用性增强了软件的灵活性和重用性消息(message)消息消息 对象之间相互请求或相互协作的途对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规径,是要求某个对象执行某个功能操作的规格说明格说明 消息内容消息内容 通常
6、包含接收方及请求接收方通常包含接收方及请求接收方完成的功能信息完成的功能信息 发送方发送方 发出消息,请求接收方响应发出消息,请求接收方响应 接收方接收方 收到消息后,经过解释,激活方收到消息后,经过解释,激活方法,予以响应法,予以响应为什么对面向对象方法感兴趣为什么对面向对象方法感兴趣?面向对象方法的主要优点:自然性追求软件系统对现实系统的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间中。软件复用 可复用性(可重用性)reusebility可扩展性可管理性 面向对象技术允许复用的不仅仅是代码,通过面向对象技术,我们可以复用需求、分析、设计、测试计划、用户界面以及体系结构等等,
7、事实上,软件工程生存期中的每个部分都可以复用。可复用性(可重用性)可复用性(可重用性)传统系统分析传统系统分析:面向功能,把系统看成 一组功能OOAOOA:把问题当作一组相互作用的实体,并确定实体间关系(1)(1)方法是对软件开发过程所有阶段进行综合方法是对软件开发过程所有阶段进行综合考虑而得到的考虑而得到的;(2)(2)从生存期的一个阶段到下一个阶段所使用从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性的方法与技术具有高度的连续性;(3)(3)将将OOAOOA、OODOOD、OOPOOP集成到生存期的集成到生存期的相应阶段。相应阶段。面向对象技术的特点面向对象技术的特点 OO
8、 OO方法改进了在生存期各个阶段间的方法改进了在生存期各个阶段间的界面,因为生存期各个阶段开发出来的界面,因为生存期各个阶段开发出来的“部件部件”都是都是类类,在面向对象生存期的,在面向对象生存期的各个阶段对各个各个阶段对各个类类的信息进行细化,的信息进行细化,类类成为分析、设计和实现的成为分析、设计和实现的基本单元基本单元。OOOO方法的开发过程方法的开发过程类的生存期模型类的规类的规格说明格说明从废弃从废弃型开发型开发既存类既存类的复用的复用渐增式渐增式的实现的实现渐增式渐增式的测试的测试求精和求精和 维护维护 测试用测试用例和测试例和测试 的开发的开发实现实现从既存从既存类演变类演变类的
9、规格说明指导对存放现存类的软件类的规格说明指导对存放现存类的软件库进行查找库进行查找现存类提供当前应用所需功能现存类提供当前应用所需功能三种可能利用现存类的方向:三种可能利用现存类的方向:现存类的复用现存类的复用 从现存类进行演变从现存类进行演变 从废弃类进行开发从废弃类进行开发 类的设计与实现类的设计与实现对象之间的联系与对象模型面向对象方法开发软件通常建立的三种形式的模型 描述系统数据结构的对象模型 描述系统控制结构的动态模型 描述系统功能的功能模型 三种模型从三个不同但由密切相关的角度模拟目标系统。对象模型是最重要、最基本、最核心的。对象模型表示静态的、结构的系统数据的性质。对模拟客观世
10、界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。OO方法强调围绕对象而不是功能来构造系统。对象模型对象模型 分类关系(归纳关系、一般与特殊的关系)组成关系(组合关系、整体/部分的关系)对象属性之间的静态的联系 对象行为的动态联系 类及对象间常见的联系类及对象间常见的联系分类关系(一般与特殊的关系)示例学生学生本科生本科生研究生研究生组成关系(整体与部分的关系)示例学科部学科部办公室办公室学院学院实验室实验室对象模型中表现上述联系的结构和连接分类是对象抽象的基础分类是对象抽象的基础 分类结构表现的是事物的一般与特殊的关分类结构表现的是事物的一般与特殊的关系,即系,即“is-ais
11、-a”关系。关系。面向对象术语中常把一般与特殊的关系称面向对象术语中常把一般与特殊的关系称为为泛化(泛化(GeneralizationGeneralization)与与特化(特化(SpecializationSpecialization)联系联系(1)(1)分类结构(一般分类结构(一般/特殊结构)特殊结构)存户存户一般一般/特殊结构举例特殊结构举例 一般类一般类(父类、基类、超类父类、基类、超类)特殊类特殊类(子类、具体类子类、具体类)继承继承一个特殊类中的所有对象可继承一般类中的属一个特殊类中的所有对象可继承一般类中的属性性、服务服务、关系关系账号账号姓名姓名余额余额存款存款取款取款 支票存
12、户支票存户 储蓄存户储蓄存户利息率利息率 组装结构表示对象类之间的组成关组装结构表示对象类之间的组成关系,即整体与部分的关系。系,即整体与部分的关系。整体对于部分是整体对于部分是“has-ahas-a”关系。关系。(部部分对于整体是分对于整体是“a-part-ofa-part-of”关系关系)组装结构体现了面向对象方法的组装结构体现了面向对象方法的 聚合(也叫聚集聚合(也叫聚集 AggregationAggregation)原则。原则。(2)(2)组装结构(整体组装结构(整体/部分结构)部分结构)1+1+电源电源主机箱主机箱键盘键盘监视器监视器鼠标鼠标内存内存CPUCPU硬盘硬盘o o 微机微
13、机整体整体/部分结构表示法举例部分结构表示法举例实例连接表现了对象之间的静态联系实例连接表现了对象之间的静态联系,通过对象的属性来表现对象之间的依赖,通过对象的属性来表现对象之间的依赖关系。关系。面向对象术语中把对象之间的实例连面向对象术语中把对象之间的实例连接称为接称为链接链接(Link)(Link),把类之间的实例连接,把类之间的实例连接称为称为关联关联(Association)(Association)。(3)(3)实例连接实例连接(Instance Connection)(Instance Connection)教师教师 指导论文指导论文0,m 10,m 1学生学生教师为学生教师为学生
14、指导论文:指导论文:教师教师 教学教学0,m 0,n 0,m 0,n 学生学生教师为学生教师为学生授课:授课:实例连接实例连接示例示例及表示及表示 允许实例连接带有一组属性,这些属允许实例连接带有一组属性,这些属性通过关联来描述性通过关联来描述 类类 1 1 连接名称连接名称m nm n类类 1 1连接连接属性属性关联关系关联关系(链属性链属性)的表示的表示为之工作为之工作工资工资职务职务雇主雇主雇员雇员 个人个人名字名字身份证号身份证号公司公司名字名字地址地址题目题目答辩时间答辩时间成绩成绩 教师教师学生学生 指导论文指导论文0,m 10,m 1关联关系关联关系 (链属性链属性)对象之间的对
15、象之间的通信通信联系。联系。一需要另一个对象的服务,便向它发出一需要另一个对象的服务,便向它发出个对象请求服务的消息,接收消息的对个对象请求服务的消息,接收消息的对象响应消息,触发所要求的服务操作。象响应消息,触发所要求的服务操作。消息连接体现了对象行为的消息连接体现了对象行为的动态联系动态联系。(4)(4)消息连接消息连接 (Message Connection)(Message Connection)一家公司的对象模型(一家公司的对象模型(OMTOMT)示例示例管理管理 0 0,1 1姓名姓名身份证号码身份证号码地址地址员工员工名字名字电话号码电话号码主要产品主要产品地址地址公司公司职务职
16、务雇用雇用解雇解雇项目名项目名预算预算优先级优先级项目项目产品名产品名成本成本重量重量产品产品工人工人经理经理部门部门部门名部门名主持主持参加参加1+1+1+1+1+1+1+1+1+1+生产生产 方法论是如何对复杂系统进行“抽象”的工作,以及如何建立抽象模型。面向对象的方法论面向对象的方法论面向对象分析方法确实不同于结构化分析方法吗?Fichman,R.G and C.F.Kemerer,在“Object-oriented Conventional Analysis and Design Methodologies”中阐述:我们的结论是面向对象分析方法表现了相对面向过程的方法学(如结构化分析)
17、的根本性变化,而且相对面向数据的方法学仅仅是增量性的变化。面向过程的方法学在建模过程中的关注点不是对象的内在性质,从而导致了和面向对象的三个基本原理相正交的问题域模型。二二.面向对象分析建模面向对象分析建模(OOA)(OOA)面向对象分析方法使得软件工程师能够面向对象分析方法使得软件工程师能够通过对象、属性和操作(作为主要的建通过对象、属性和操作(作为主要的建模成分)的表示来对问题建模。模成分)的表示来对问题建模。面向对象分析方法使得软件工程师能够通过对象、属性和操作(作为主要的建模成分)的表示来对问题建模。建立分析模型5个基本原则:(1 1)建模信息域;建模信息域;(2 2)描述模块功能;描
18、述模块功能;(3 3)表示模型行为;表示模型行为;(4 4)分解以模型显示更多细节;分解以模型显示更多细节;(5 5)早期)早期模型表示问题的本质,而后期模型表示问题的本质,而后期 模型提供实现细节。模型提供实现细节。是定义所有和被求解的问题相关的类(及同类关联的关系和行为),为了达到这个目标,必须完成以下任务:(1)必须在客户和软件工程师之间沟通了解基本的用户需求;(2)必须标识类(定义属性和方法);(3)必须刻划类层次;(4)表示对象对象关系(对象连接);(5)必须建模对象行为;(6)(1)到(5)递进地反复使用,直至完成建模OOAOOA的意图的意图面向面向对象对象分析方法相似步骤:分析方
19、法相似步骤:(1 1)使用基本需求作为指南选择类和对象;)使用基本需求作为指南选择类和对象;(2 2)为对象标识属性和操作;)为对象标识属性和操作;(3 3)定义组织类的结构和层次;)定义组织类的结构和层次;(4 4)建造对象)建造对象-关系模型的;关系模型的;(5 5)建造对象)建造对象-行为模型。行为模型。由由Rumbaugh Rumbaugh、Booch Booch、JacobsonJacobson提提出的统一建模语言出的统一建模语言 (Unify Modeing(Unify Modeing LanguageLanguage简称简称UML)UML)UMLUML是一种定义良好,易于表达,功
20、是一种定义良好,易于表达,功能强大且普遍实用的建模语言。能强大且普遍实用的建模语言。统一的统一的OOAOOA方法方法 对象模型技术对象模型技术 (OMT,Object Model TechOMT,Object Model Tech.).)对象模型对象模型动态模型动态模型功能模型功能模型基本模型基本模型:三个模型分别从不同角度分析系统三个模型分别从不同角度分析系统对象模型对象模型:描述静态结构描述静态结构,定义做定义做事情的实体事情的实体功能模型功能模型:描述处理描述处理(数据变换数据变换),),指指明系统应明系统应“做什么做什么”动态模型动态模型:描述交互过程描述交互过程,规定什规定什么时候做
21、么时候做分析模型分析模型OMTOMT模型系统分析和设计过程概观图模型系统分析和设计过程概观图产生需求产生需求结构及对象结构及对象设计设计建立模型建立模型问题描述问题描述对象模型、动态模型、功能模型对象模型、动态模型、功能模型详细的对象模型详细的对象模型详细的动态模型详细的动态模型详细的功能模型详细的功能模型分分析析阶阶段段设设计计阶阶段段设置:由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。销售:顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮
22、,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易:顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。实例:饮料自动售货机系统实例:饮料自动售货机系统(1)(1)找出对象及其关联找出对象及其关联(2)(2)赋予类及关联的属性数据赋予类及关联的属性数据(3)(3)组织类的结构组织类的结构OMT的的对象图对象图步骤步骤:设置:一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完
23、灯会亮。销售:顾客将硬币投入售货机,经累加金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物楼掉出,并自动结算及找钱。取消交易:顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。找出饮料自动售货机系统中的对象找出饮料自动售货机系统中的对象描述系统内部对象结构,包括对象本身的描述系统内部对象结构,包括对象本身的定义、对象的属性、操作,以及对象与其它对定义、对象的属性、操作,以及对象与其它对象之间的关系。象之间的关系。对象模型是对象模型是OMTOMT方法论中最重要的部分,方法论中最重要的部分,动态模型、功能模型都将依次而建立对象模型动态模型、功能模型都将依次而建立对象模型以
24、对象图形式呈现,对象图由类构成。以对象图形式呈现,对象图由类构成。对象模型对象模型饮料自动售货机饮料自动售货机系统系统对象图对象图贩卖机贩卖机饮料号码饮料号码价格价格投币投币金额显示金额显示按纽按纽退币退币售完显示售完显示存量计算器存量计算器饮料号码饮料号码存量存量递减递减售完显示售完显示重置重置选择钮选择钮选择钮状态选择钮状态灯亮灯亮灯熄灯熄售完灯亮售完灯亮按钮按钮顾客顾客姓名姓名硬币硬币投币投币-置入置入拿取饮料拿取饮料退币杆退币杆退币杆状态退币杆状态拉动拉动金额计算器金额计算器金额金额累加累加找零找零重置重置购买购买选取选取被拉动被拉动属于属于属于属于属于属于属于属于为所有模型实体准备一
25、个数据字典为所有模型实体准备一个数据字典,精确描述每一个对象类精确描述每一个对象类,包括包括:成员成员 约束约束 关联、属性、操作关联、属性、操作建立数据字典建立数据字典动态模型动态模型 用来描述系统与时间相关的动态行为用来描述系统与时间相关的动态行为即系统的控制逻辑,表现对象彼此间即系统的控制逻辑,表现对象彼此间经过相互作用后,随时间改变的不同经过相互作用后,随时间改变的不同运算顺序。运算顺序。动态模型以动态模型以“事件事件”(EventsEvents)和)和“状态状态”(StatesStates)为其模型的主要概)为其模型的主要概念。念。动态模型以状态图形式呈现。动态模型以状态图形式呈现。
26、瞬时发生的行为;瞬时发生的行为;引起对象状态转换的控制信息引起对象状态转换的控制信息。事件类和属性举例:事件类和属性举例:u飞机起飞(航线、航班号、城市)飞机起飞(航线、航班号、城市)u按动鼠标按钮(按钮、位置)按动鼠标按钮(按钮、位置)u.事件事件 脚本和事件踪迹脚本和事件踪迹 脚本是系统某一次特定运行时期内发脚本是系统某一次特定运行时期内发生的事件序列。生的事件序列。(脚本也叫场景)脚本也叫场景)事件追踪图事件追踪图 侧重说明发生于系统执行过程中的一个侧重说明发生于系统执行过程中的一个特特 定定“场景场景(scenarios)scenarios)”。通话脚本(只包括影响电话线的事件)通话脚
27、本(只包括影响电话线的事件)17.17.打电话者挂断电话打电话者挂断电话16.16.电话切断电话切断15.15.接电话者挂断电话接电话者挂断电话14.14.通电话通电话12.12.接电话者电话停止振铃接电话者电话停止振铃13.13.铃声在打电话者端消失铃声在打电话者端消失11.11.接电话者回答接电话者回答10.10.铃声在打电话者电话传出铃声在打电话者电话传出9.9.接电话者的电话开始振铃接电话者的电话开始振铃8.8.打电话者拨数字打电话者拨数字(3)(3)7.7.打电话者拨数字打电话者拨数字(7)(7)6.6.打电话者拨数字打电话者拨数字(3)(3)5.5.打电话者拨数字打电话者拨数字(2
28、)(2)4.4.电话忙音结束电话忙音结束3.3.打电话者拨数字打电话者拨数字(8)(8)2.2.电话忙音开始电话忙音开始1.1.打电话者拿起听筒打电话者拿起听筒状态:闹铃响描述:闹铃响表示预定时间到产生本状态的事件序列:设置闹钟(预定时间)不包括清除闹铃的任何后续操作 当前时间=预定时间表征本状态的条件:闹铃=开,从预定时间起没有按键的情况下,目标时间当前时间 目标时间=20秒本状态接受的各种时间:事件 动作 下一个状态当前时间=目标时间+20 重新设置闹钟 正常 按下按钮(任意按钮)重新设置闹钟 正常状态状态:对象属性和对象关联的抽象形式对象属性和对象关联的抽象形式 动态模型表示方法动态模型
29、表示方法 状态图状态图 状态和事件的网络,侧重描述每一类对象的状态和事件的网络,侧重描述每一类对象的动态行为。动态行为。状态图状态图 状态状态1 1Do:Do:活动活动1 1状态状态2 2 .事件事件1 1条件条件1/1/动作动作1 1结束结束事件事件初始初始事件事件空闲空闲可视菜单可视菜单左边按钮按下左边按钮按下/显示弹出菜单显示弹出菜单左边按钮弹起左边按钮弹起/擦除弹出菜单擦除弹出菜单光标移动光标移动/高亮菜单项高亮菜单项 弹出菜单动作弹出菜单动作 事件追踪图举例:事件追踪图举例:打电话的事件追踪图打电话的事件追踪图挂断电话挂断电话电话切断电话切断挂断电话挂断电话通通 话话通通 话话停止振
30、铃停止振铃停止振铃停止振铃响应电话响应电话电话振铃电话振铃铃铃 声声拨拨 号号(3)(3)拨拨 号号(7(7拨拨 号号(3)(3)拨拨 号号(2)(2)电话忙音结束电话忙音结束拨拨 号号(8)(8)电话忙音开始电话忙音开始拿起听筒拿起听筒电话线电话线接电话者接电话者打电话者打电话者 存量为零存量为零找零找零扣减存量扣减存量灯亮灯亮余额余额饮料饮料结算结算选择键选择键#选择按纽选择按纽灯亮灯亮金额总够金额总够显示总额显示总额总额总额累加累加投入硬币投入硬币金额计算器金额计算器存量计算器存量计算器顾客顾客售货机售货机选择键选择键举例:举例:饮料自动售货机系统的事件追踪图饮料自动售货机系统的事件追踪
31、图售完灯售完灯用来描述系统中数据的变换。传统DFD+控制流对象对象A A对象对象B B过程过程1 1过程过程2 2数据存储区数据存储区控制流控制流数据流数据流 3.3.功能模型功能模型需求陈述 对象建模 动态建模 功能建模 添加操作反复建模基于三个模型的分析步骤基于三个模型的分析步骤1.1.分析阶段分析阶段 理解应用问题,理解应用问题,建立建立对象模型、动态模对象模型、动态模型和功能模型,说明对象关联、控制流及型和功能模型,说明对象关联、控制流及数据变换。数据变换。2.2.系统设计阶段系统设计阶段 确定确定系统框架系统框架,考虑并发任务、通讯机,考虑并发任务、通讯机制和数据存储策略。制和数据存
32、储策略。3 3.对象设计阶段对象设计阶段 从实现的角度从实现的角度细化细化分析对象模型、分析对象模型、动态模型和功能模型动态模型和功能模型OMTOMT支持整个软件生命周期支持整个软件生命周期OMTOMT方法的特点方法的特点 开发重点在分析阶段开发重点在分析阶段 强调数据结构而不是功能强调数据结构而不是功能 形式化描述能力强形式化描述能力强 开发步骤的衔接良好开发步骤的衔接良好 重复性的开发过程重复性的开发过程以类与对象图及对象状态图为辅助工具,建立问题域的五层模型.OOA模型被划分为五个层次 (五个视图)YourdonYourdon的的OOAOOA方法方法OOA的结构 类的边界类的边界Clas
33、s&object layer(类及对象层类及对象层)Attribute layer(属性层属性层)Service layer(服务层服务层)Structure layer(结构层结构层)Subject layer(主题层主题层)实例的边界实例的边界实例连接实例连接消息连接消息连接主题主题服务服务属性属性(1)标识类及对象(2)标识结构(3)标识主题(4)定义属性及实例连接(5)定义服务及消息连接五个步骤常根据需要交叉进行分析阶段由五个活动组成分析阶段由五个活动组成(1)发现对象,主要策略:F 考虑问题域人员组织物品设备事件表格结构F 考虑系统边界人员设备外系统F 考虑系统责任步骤步骤1 1:识
34、别类与对象识别类与对象F 问题域描述中的名词,往往是候选的对象;根据问题域结构可提取候选的类及对象;例:银行储蓄管理系统F与系统发生作用的其它系统和必要的设备可作为候选的类及对象;如:打印机等(分析阶段可不把与实现有关的计算机部件作为候选的类及对象)F系统必须观测、记忆的与时间有关的 事件可作为候选的类及对象;如:建立帐户的日期 打开一个帐户等F与系统发生交互的人及系统必须保留其信息的人,可作为候选的类及对象;如:柜员、储户等F这些人所属的组织单位,可作为候选的类及对象;如:总行、分行等F系统必须记忆、且不在问题域约束中的顺序操作过程(为了指导人机交互)可作为候选的类及对象;如:柜员事务、远程
35、事务等。其中属性是操作过程名,操作特权及操作步骤的描述;F系统需了解掌握的物理位置、办公 地点等可作为候选的类及对象;如:ATM机器、帐户等舍弃无用的类F 对象的精简只有一个属性的对象只有一个服务的对象F 推迟到OOD考虑的对象(2)(2)审查和筛选审查和筛选帐册帐册上级系统接口上级系统接口供货员供货员销售事件销售事件商品商品特价商品特价商品计量商品计量商品收款机收款机商品一览表商品一览表超市销售管理系统超市销售管理系统 (对象层对象层)定义属性定义服务对象的状态与状态转换图例:栈的状态/服务对照表空空半满半满满满压入压入可执行可执行可执行可执行不可执行不可执行弹出弹出不可执行不可执行可执行可
36、执行可执行可执行步骤步骤2 2:定义属性与服务定义属性与服务例:栈状态转换图例:栈状态转换图空空半满半满满满创建创建压入压入(未满未满)弹出弹出(未空未空)压入压入(报错报错)弹出弹出(报错报错)弹出弹出(已空已空)压入压入弹出弹出压入压入(已满已满)对象行为分类 发现服务的策略 审查与调整 识别对象的主动行为 服务的详细说明(服务解释、消息协议、消息发送、约束条件、服务流程图)定义服务定义服务帐册帐册前班节余前班节余销售事件表销售事件表收入累计收入累计上交款上交款本班节余本班节余接班接班计帐计帐报帐交班报帐交班上级系统接口上级系统接口帐目目册帐目目册消息发送消息发送查帐查帐报帐报帐价格更新价
37、格更新种类增删种类增删供货员供货员缺货登记表缺货登记表缺货登记缺货登记供货供货销售事件销售事件收款人收款人购物清单购物清单应收款应收款销售计划销售计划入帐入帐商品商品编号编号名称名称单价单价架上数量架上数量下限下限售出售出补充补充价格更新价格更新特价商品特价商品开始日期开始日期结束日期结束日期计量商品计量商品*单价单价计量单位计量单位计价方式计价方式*售出售出*补充补充*价格更新价格更新收款机收款机本班收款员本班收款员开始时间开始时间结束时间结束时间登录登录 售货售货 结帐结帐商品一览表商品一览表商品目录商品目录检索检索种类增删种类增删超市销超市销售管理售管理系系 统统(特征层特征层)为所有模
38、型实体准备一个数据字典,精确描述每一个对象类,包括:成员约束关联、属性、操作建立数据字典建立数据字典类名 父类 提供的服务 需要的服务帐户 ATM 银 行 出纳员 对象字典举例:对象字典举例:初步确定关联对应于描述性动词或动词短语需求陈述中隐含根据问题域知识得出筛选完善分析标识对象之间的关系对象之间的分类关系:一般-特殊结构对象之间的组成关系:整体-部分结构对象之间的静态联系:实例连接对象之间的动态关系:消息连接步骤步骤3 3:定义结构与连接定义结构与连接从一般类发现特殊类从一般类发现特殊类公司职员公司职员股东股东姓名姓名身分证号码身分证号码股份股份职员职员工资工资公司职员公司职员姓名姓名身分
39、证号码身分证号码股份股份工资工资?从特殊类发现一般类从特殊类发现一般类公司职员公司职员股东股东姓名姓名身分证号码身分证号码股份股份职员职员工资工资股东股东姓名姓名身分证号码身分证号码股份股份职员职员姓名姓名身分证号码身分证号码工资工资?收款机收款机ABC现钞收款机现钞收款机DEF现钞收款机现钞收款机ABCDEFXYZZXY为支持复用建立结构为支持复用建立结构收款机类成为可供本领域其它系统复用的领域构件 取消没有特殊属性的特殊类大学生大学生研究生研究生研究方向研究方向指导教师指导教师学生学生姓名姓名学号学号班级班级研究生研究生研究方向研究方向指导教师指导教师学生学生姓名姓名学号学号班级班级 通过
40、增加属性简化一般通过增加属性简化一般-特殊结构特殊结构人员人员男人男人女人女人美国人美国人日本人日本人人员人员性别性别国籍国籍中国人中国人两种结构的变通两种结构的变通冷藏车冷藏车汽车汽车制冷设备制冷设备冷藏车冷藏车汽车汽车制冷设备制冷设备仅用一般仅用一般-特殊结构特殊结构两种结构两种结构同同 用用冷藏车冷藏车汽车汽车制冷设备制冷设备仅用整体仅用整体-部分结构部分结构用整体用整体-部分结构实现复用部分结构实现复用车床车床机床机床刨床刨床起重机起重机电动机电动机钻床钻床送料车送料车筛选:删除下列关联已删去的类间的关联无关或实现关联瞬时事件三元关联派生关联 中央中央计算机计算机总行总行通信通信ATM
41、ATM拥有拥有分行分行计算机计算机出纳出纳工作站工作站远程业务远程业务现金卡现金卡分行分行帐户帐户储户储户出纳员出纳员出纳业务出纳业务通信通信授权授权存取存取拥有拥有拥有拥有持有持有组成组成拥有拥有拥有拥有雇佣雇佣进入进入被进入被进入修改修改修改修改进入进入ATMATM系统的初始对象图系统的初始对象图步骤4:定义服务及消息连接 分析和认识对象之间在行为上的往来关系。顺序系统中的消息传递顺序系统中的消息传递主动对象主动对象Aa被动对象被动对象Bb被动对象被动对象Cc被动对象被动对象Dd1d2运行开始运行开始运行结束运行结束服务执行服务执行消息发送消息发送控制点返回示意控制点返回示意消息连接是OO
42、A(或OOD)模型中对对象之间行为依赖关系的表示 识别和表示的主要问题:对象之间是否存在消息?消息是同一线程内部的还是不同线程之间的?每一种消息是从发送者哪个服务发出的?由接收者哪个服务响应处理的?消息是同步还是异步?发送者是否等待消息的处理结果?OOAOOA对消息的表示对消息的表示消息连接消息连接步骤4:标识主题(主体)Coad/Yourdon方法中主题的概念:主题是把一组具有较强联系的类组织在一起而得到的类的集合。主题层是在OOA基本模型(类图)之上建立一个能帮助人们从不同的认识层次来理解系统的补充模型;主题一种比类和对象抽象层次更高、粒度更大的概念,用以建立系统的高层抽象视图;主题有助于
43、指导系统设计者或用户等理解一个大的系统模型,有助于组织一个大项目的工作。主题概念及其用途主题概念及其用途是由一组类构成的集合一个主题内部的对象类应具有某种意义上的内在联系描述系统中相对独立的组成部分(如一个子系统)描述系统中某一方面的事物(如人员、设备)解决系统中某一方面的问题(如输入输出)主题的划分有一定的灵活性和随意性主题概念的特点主题概念的特点把每个结构作为一个主题;(选取结构中最上层的类作为一主题)通过实例连接互相联系的类可划分到一个主题;把不属于任何结构,也没有实例连接的类作为一个主题。如何划分主题如何划分主题 从问题域和接口复杂性两方面入手:使用问题域精练主题,即用整体/部分结构对
44、问题域进行划分,而不是按功能分解方法划分.按高内聚低偶合原则,通过使主题间依赖性和交互性最小原则保留能反映子问题域的主题.主题数目7个左右,则进一步精练主题.如何精练主题如何精练主题依赖于模型自身复杂性小系统:不需引入主题;中等系统:先标识类及对象,然后引入主题;大系统:先标识主题,对问题域进行 划分,分给不同的任务组;何时引入主题何时引入主题中小型系统可只设一层主题,最多不超过两层;大型系统可只设两层主题,最多不超过三层。主题层次的控制主题层次的控制中央计算机总行通信ATM拥有分行计算机出纳工作站远程业务现金卡分行帐户储户出纳员出纳业务通信授权存取拥有拥有持有组成拥有拥有雇佣进入被进入修改修
45、改进入把ATM系统划分为三个主题2311112223333帐册帐册前班节余前班节余销售事件表销售事件表收入累计收入累计上交款上交款本班节余本班节余接班接班计帐计帐报帐交班报帐交班上级系统接口上级系统接口帐目目册帐目目册消息发送消息发送查帐查帐报帐报帐价格更新价格更新种类增删种类增删供货员供货员缺货登记表缺货登记表缺货登记缺货登记供货供货销售事件销售事件收款人收款人购物清单购物清单应收款应收款销售计划销售计划入帐入帐商品商品编号编号名称名称单价单价架上数量架上数量下限下限售出售出补充补充价格更新价格更新特价商品特价商品开始日期开始日期结束日期结束日期计量商品计量商品*单价单价计量单位计量单位计价
46、方式计价方式*售出售出*补充补充*价格更新价格更新1 1mm商品一览表商品一览表商品目录商品目录检索检索种类增删种类增删1 1mm(关系层关系层,完整的类图完整的类图)收款机收款机本班收款员本班收款员开始时间开始时间结束时间结束时间登录登录 售货售货 结帐结帐1 11 11 11 13 33 33 33 32 22 22 22 2 移动电话系统的功能:移动电话系统的功能:用手机做移动通讯用手机做移动通讯 下载铃声下载铃声 下载图案下载图案 管理电话簿管理电话簿范例:移动电话系统范例:移动电话系统移动电话系统的使用用例图移动电话系统的使用用例图 定义移动电话系统的对象(简化)定义移动电话系统的对
47、象(简化)手机包括的对象:手机包括的对象:手机屏幕手机屏幕 手机按钮手机按钮 手机(屏幕、按钮以外的部件)手机(屏幕、按钮以外的部件)其它对象:其它对象:基站基站MButtonMDisplqyMmobileStationMmobileHandset移动电话系统的类图移动电话系统的类图 移动电话系统对象间的通信移动电话系统对象间的通信 MButtonMDisplqy:MMobileStation :MMobileHandset1:pushDigButton()3:pushSendButton()2:displayButtonNumber()4:connectStation()7:displayC
48、onnectSuccess()6:connectSuccess()5:createConnection()移动电话系统移动电话系统的协作图的协作图 移动电话系统的顺序图移动电话系统的顺序图 :MButton:MDisplqy :MMobileHandsetpushSendButton()displayButtonNumber()displayConnectSuccess()connectSuccess()createConnection()pushDigButton()connectStation():MMobileStation MButtonMDisplqyMmobileStationMmobileHandset移动电话系统的类图之二移动电话系统的类图之二pushDigButton()pushSendButton()pushDisconnectButton()createConnection()destoryConnection()responseError()displayError()displayButtonNumber()displayConnectSuccess()displayIncomingCall()connectStation()disconnectStation()connectSuccess()Diaconnectsuccess()