【文档说明】面向对象的概念面向对象的分析面向对象的设计面向对象的实课件.ppt,共(127)页,402.627 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44872.html
以下为本文档部分文字说明:
面向对象的概念面向对象的分析面向对象的设计面向对象的实课件•软件可重用性差•软件可维护性差•开发出来的软件不能满足用户的需要传统开发方法存在的问题•人们认识世界的三个构造法则•区分对象及其属性,如一棵树和树的大小。•区分整体对象及其组成部分,如区分一棵树和树枝。•不同对象类的
形成及其区分,如所有树的类和所有石头的类的形成和区分。面向对象方法学的四要点•软件系统由对象组成,软件中的任何元素都是对象,复杂的对象由较简单的对象组合而成•把所有对象都划分成各种对象类,每个对象都定义了一组数据和
一组方法•按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(类等级)•对象之间仅能通过传递信息互相联系面向对象方法学的主要优点•可重用性好•可维护性好•稳定性较好•易修改•易理解•易测试和调试•稳定性好
•软件结构是根据问题域的模型建立起来•与人类习惯的思维方法一致•较易开发大型软件产品面向对象是软件方法学的返朴归真面向对象的主要概念•对象(Object)•类(Class)—实例(Instance)•封装(Encapsulation)•有一个清晰的边界、有确定的接口、受保护的内部实
现•继承(Inheritance)•消息(Message)(如,MyCircle.Show(RED))•多态性(Polymorphism)•重载(Overloading)•结构(一般-特殊结构、整体-部分结构)•连接(实例连接、消息连接)面向对象建模•模型•对事物的一种抽
象和无歧义的一种书面描述•由一组图示符号和组织这些符号的规则组成•建模的目的•抽象目标系统的特性,减少系统的复杂性•三种模型•对象模型:描述系统数据结构——用类图描述•动态模型:描述系统控制结构——用状态图描述•功能模型:描述系统功能——用DFD
描述对象模型•表示静态的、结构化的系统的“数据”性质•是对象以及对象彼此间关系的映射•是动态模型、功能模型的基础•包含下列符号:•表示类的符号(既表示属性,又表示服务)•表示对象(类的实例)的符号•表示结
构关系的符号(一般-特殊、整体-部分)•表示类和(或)对象间其他关系的符号实例(P143图6.12)动态模型•表示瞬时的、行为化的系统的“控制”性质•规定了对象模型中对象的合法变化序列•用状态图描述对象的状态、触发状态转换的事件、对象的行为(对事件的响应)•每个类的动态行为用一张状态
图描绘,各个类的状态图通过共享事件合并起来构成整个系统的动态模型•相关概念•事件:引起对象状态转换的控制信息,瞬间完成。•状态:对象在某个特定阶段具有的行为模式,有持续性。•行为:对象所做的一系列操作状态转换图的画法•参见
P38(3.6节)功能模型•指明系统应该“做什么”•由一组数据流图组成•画法:参见第3章DFD的画法•相互补充、相互配合,从不同的侧面反映系统的内容,综合起来则全面地反映了对目标系统的需求•功能模型指明了系统应该“做什么”;•动态模型规定了“什么时候做”;•
对象模型则定义了“谁来做”•功能模型中的“处理”对象模型中的“服务”•动态模型中的“行为”•功能模型中的“数据存储”、“数据源/终点”•对象模型中的“对象”•功能模型中的“数据流”对象模型中的“属性”三种模型的关系需求分析面临的主要问题•对问题域和系统责
任的理解•人与人之间的交流•需求的不断变化•功能:最易变•外部接口:很易变•属性:较易变•对象:较稳定•重用的要求OOA基本任务•运用OOM,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性与服务,以及它
们之间所形成的结构、静态联系和动态联系。最终产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。OOA关键•识别问题域中的对象•分析对象之间的相互关系•建立问题域的模型。其中,对象模型是核心OOA的主要原则•抽象•封装•继承•分类•聚合(组装)•关联•消息通信•粒
度控制•行为分析OOA过程※发现对象,建立对象类※识别对象的内部特征•定义属性和服务※识别对象的外部关系•建立结构和连接•划分主题,建立主题图•定义usecase,建立交互图•发现活动者;定义usecase;建立交互图※建立详
细说明(类的描述)※原型开发基本模型补充模型基本模型——类图给出对象的属性和服务给出所有反映问题域和系统责任的对象继承关系、组装关系、属性的静态依赖关系(实例连接)、服务的动态依赖关系(消息连接)对象层特征层关系层类图的三个层次返回OOA与OOD的关系•从软件
生命周期看,不强调严格的阶段划分•可适应多种软件生命周期模型:•瀑布模型;螺旋模型、增量模型;喷泉模型•OOA与OOD的分工•观点一•OOA:“做什么”(不考虑对象的属性和服务细节)•OOD:“怎么做”•观点二•OOA:针对问题域和系统责任(系统的完整表达),不确定的“怎么做”由OOD解决•OO
D:与实现有关的问题(如选用的编程语言、数据库、图形用户界面、操作系统等)跳转瀑布模型需求分析设计编码测试确认运行维护返回增量模型增量1增量2增量3增量开发计划需求顶层规格说明用户反馈用户反馈用户最终系统返回喷泉模型集成测试编码设计分析返回步骤1——发现对象,建立
对象类基本步骤用户需求客观事物寻找相应对象定义成类分析本质相关性非一一对应非一一对应OOA的重点OOA模型需要的结果①问题域存在的②系统责任要求的①有实例的类②无实例类但被引用类(如聚合、继承)客观事物类间的桥梁研究用户需求,明确系统责任•功能需求是分析员考虑最
多的因素•主要活动:•阅读有关材料•与用户交流,搞清疑点•现场调查•记录所得到的认识•整理出符合开发规范,并确切表达系统责任的需求文档•例•分析过程中,要始终带着这样一个问题“系统要设立哪些对象才能满足用户需求”研究问题域——发现对象的主要途径•贯穿分析工作始终的基本工作•
工作重点:•亲临现场,直接观察业务流程,掌握第一手材料•向问题域专家学习(提问-倾听-理解消化-反馈)•学习业务理论知识•借鉴相同和相似问题域已有系统的OOA文档(学习经验,发现可重用的类)•最终目的:•进一步明确用户需求•建立一个
符合问题域情况、满足用户需求的分析模型问题域与系统责任发现对象的侧重点•二者从不同的角度告诉分析员应设立哪些对象。前者侧重于客观存在的事物与系统中对象的映射;后者侧重于系统责任范围内的每一项职责都应落实到某些对象来完成。确定系统边界•作用
:•明确系统的范围以及与外部世界的接口•作为观察活动者与系统交互的着眼点(定义usecase)•划分方法:•系统内的对象:仅仅由系统管理其信息或模拟其行为的人和物•系统外的活动者:与系统进行信息交换的人、设备或外系统。系统中可能需要设立一些对象来描述它们的特征,并负责与
它们交互。如设立交互对象服务员读者服务员读者usecase——需求描述•基本思路•首先找出系统边界以外的活动者;然后从这些活动者如何与系统进行对话的角度,用usecase来描述活动者怎样使用系统以及系统向活动者提供什么功能;在建立OOA基本模型的活动中
,把活动者和usecase作为启发分析员发现对象并认识其行为的重要依据;最后以usecase为基础建立系统的交互图,以反映各个usecase所要求的系统功能是由哪些对象来完成的。usecase•定义•是对一个活动者使用系统
的一项功能时所进行的交互过程的一个文字描述序列•作用•对用户需求(主要是功能需求)规范化的描述•集中体现了系统责任usecase•内容•名称:写在第一行•格式:活动者名称﹒功能名称•行为描述:用自然语言描述交互次序自上而下的行为•活动者行为:左对齐•系统行为:右对齐•
控制语句•条件语句(if-then-else)•循环语句(for,while)•例子常用Pascal,C•收款员﹒收款输入开始本次收款的命令;作好收款准备,应收款总数置0,输出提示信息;for顾客选购的每种商品do输入
商品编号;if此种商品多于一件then输入商品数量;endif;检索商品名称及单价;货架商品数减去售出数;if货架商品低于下限then通知供货员请求上货;endif;计算本种商品总价并打印编号、名称、数量、单价、总价;总价累加到应收款
总数;endfor;打印应收款总数;输入顾客交来的款数;计算应找回的款数,打印以上两个数目;收款数计入帐册。usecase例子如何第定义usecase•穷举方式考虑:①每个活动者要求系统提供什么功能?②对活动者的
每一项输入信息,系统作出的反映和处理如何发现对象•运用抽象原则,先松后紧•找出问题域中各种可能的候选对象•审查并筛选出正确的对象•紧紧围绕系统责任进行抽象、筛选−舍弃与系统责任无关的事物−舍弃与系统责任无关的特征•舍弃判断的标准•调整或合并筛选出
的对象•好的抽象应能清晰而简练地表达问题域,并使系统的开销较少舍弃判断标准•该事物是否为系统提供了一些有用的信息,或它是否需要系统为它保存和管理某些信息•它是否向系统提供了某些服务,或它是否需要系统描述它的某些行为※同一对象在
不同系统中的有用信息可能不同,如返回例分析•图书馆MIS:•设立“书”类,每本书作为该类的一个对象(编号、借书者号、…)•书店MIS:•设立“书”类,每种书作为该类的一个对象(货源、单价、库存量…)返回对象来源•问题域•系统边界•系
统责任问题域中的启发因素•人员•需要系统保存和管理其信息的人员。如户籍管理中的每个居民•在系统中扮演一定角色(提供某些服务)的人员。•组织•在系统中发挥一定作用的组织机构。如行政单位、办事机构、业务部门、社会团体、工作班组等
•物品•需要由系统管理的各种物品。如库房的各种物资,生成所用的材料、器件,出厂的产品,经营的商品等•特别注意那些无形的事物。如学校的一门课程,企业的一项计划,贸易部门的一项业务等•设备•在系统中动态运行,由系统进行监控或供系统使用的各种设备、仪表、机器、运输工具等•事件•需要由系统长期记忆的事件,
根据其信息的复杂程度和与其它对象的相关情况决定是否为它设立一个对象•表格(单据)•先把它看作是一种用户需求,若已有对象不能满足表格要求时再设•(因表格具有可产生性/导出性、附属性、组合性,故不宜先设)•结构•根据“isa”、“hasof”关系,从已发现的对象联想到其它相关的对象例系统边界
的启发因素•发现一些与外部实体的交互,并处理系统对外接口的对象。包括:•人员:与系统进行直接交互的各类人员。如系统操作者、用户•设备:与系统相连并交换信息的设备•外系统:与系统相连并交换信息的其它系统•与从问题域中发现的人和设备的不同之处•前者:用系统中的对象模拟现实中的人和设备•后者:用系
统中的对象处理现实中的人和设备与系统的交互例系统责任的启发因素•策略:•对照每一项功能要求,查看是否可以由现有的对象完成这些功能。若某些功能在现有的任何对象中都不能提供,则可启发我们发现问题域中某些遗漏的对象。•系统责任中某些功能可能与实现环境(如数据库管理系统、图形用
户界面系统)有关,OOA对象可能无法提供这些功能,这时应推迟到OOD阶段考虑。OOA模型应独立于具体的实现环境。例审查并筛选对象•舍弃无用的对象•通过属性判断:是否提供了有用的属性?•通过服务判断:是否提供了有用的服务?例精简对象•只有一个属性的对象•考虑它被哪些别的对象引用,看看能否
合并到这些对象中。如,教学管理系统中有“班主任”对象。•只有一个服务的对象•若只有一个服务,没有属性,且系统中只有一个类的对象请求这个服务,则可以考虑合并到它的请求者对象中。如,“格式转换器”对象只有一个“文
件格式转换”服务,系统中只有“输出设备”类的对象使用这个服务。•若一个对象只有多个服务,而无属性,且每个服务各自只被一个类的对象使用,则可考虑把这些服务分别放到它的使用者(对象)中,从而取消此对象。例推迟到OOD考虑的对象•候选对象中那些与具体的实现条件密切相关的对象,如与图
形用户界面(GUI)系统、数据管理系统、硬件及操作系统有关的对象应推迟到OOD阶段考虑,不要在OOA模型中建立这些对象,这样使OOA模型可独立于具体的实现环境而只与问题域有关。定义对象类•策略:•为每一种对象定义一个类,用一个类符号表示;•把陆续发现的
属性和服务填到类符号中,得到相应对象的类•对建立的类进行修改或调整(异常情况的检查)•属性或服务不适合该类的全部对象时,考虑建立isa结构•属性及服务相同的类,考虑合并(用合乎常理的类名)•属性和服务相似的类
,考虑建立isa或整体-部分结构•对同一事物的重复描述(一事物是另一事物的附属品or一定意义上的抽象,如工作证对职员、车辆执照对车辆),考虑在原始事物中增加相应属性描述附属物例类的命名•名字应恰好符合该类(和它的特殊类)所包含的每一个对象。如类对象中既有“汽车
”又有“摩托车”,则可用“机动车”作类名;若还包括“马车”,则可用“车辆”作类名•名字应反映每个对象个体,而非整个群体。如用“书”而不用“书籍”,用“船只”而不用船舶”•采用名词,或带定语的名词;使用规范的词汇;使用问题域专家和用户习惯的词汇;避免使用毫无意义的字符和数字,如x,y,a1,b1等建
立类图的对象层1.用类符号表示每个类,把它们画出来(可用case工具,如RationalRose),便形成OOA的基本模型中的对象层2.在类描述模板中填写关于每个类的详细说明3.在发现对象的活动中能够认识的属性和服务均可随时加入类符号;能够认识的结构和连接,均可随时
在类符号之间画出。例类符号的表示类名注意:类名、对象名应富于描述性、简洁、无二义性表示一个类以及可由它创建的全部对象返回步骤2——定义属性和服务•表示方法类名属性1……属性n服务1……服务m定义属性•借
鉴以往相同或相似问题域中的OOA结果,尽可能复用其中同类对象的属性定义•针对问题域,找出所有可能的对象属性•紧紧围绕系统责任,进行抽象属性来源•一般常识的直观的属性如商品的名称编号、数量等•当前的问题域中要求的如商品的条形码•系统责任要求的
•保存和管理的信息•对象在服务时需要的属性如报警时的域值设定•用于保存对象的状态如设备的“开/关/待命”状态•表示整体-部分结构和实例连接的如嵌套对象和对象指针审查与筛选•是否与系统责任有关?•归属是否恰当?如教学MIS中,“课程”对象中设“主讲
教师”,但将教师的地址、电话作为课程对象的属性就不便理解,尽管教务员感觉这样方便•应与问题域形成良好的对应,避免概念上的混乱•属性应具有“原子性”如通信地址包括:国家、省、市、街道、门牌号和邮编等,这些内容在概念上是不可分的,在定义“人员”对象的属性时,应将”通信地址“作为一
个属性•属性既可能是简单的数据项,也可能是由多个数据项组成的数据结构•每一个属性应对应事物的一个原子特征•是否可以通过继承得到?如“研究生”与“学生”之间•是否可以从其它属性直接导出?如“出生年月”与“年龄”•对象标识由OOD考虑•有关改善性
能的属性,由OOD考虑如用“空间换时间”,提高对象服务的执行速度,可增设一些属性来保持服务的阶段性执行结果,以达到属性的命名和定位•命名:•与类的命名原则基本一致,即:使用名词或带定语的名词;使用规范的、问题域通用的词汇;避免使用毫无意义的字符和数字。•定位:•放在由它直接描述的对象的类符号中
•isa关系中,通用属性上层类专用属性下层类•一个类的属性必须适合这个类和它的全部特殊类的所有对象,并在前提下充分地运用继承例定义服务•通过分析对象的行为来发现和定义对象的服务•对象的行为往往与对象的状态有关•从一种状态转换到
另一种状态,往往需要提供相应的服务(用状态转换图表示)栈的状态/服务对照表空半满满压入可执行可执行不可执行弹出不可执行可执行可执行服务状态对象行为分类1.系统行为•系统施加于对象的行为,而非对象自身的行为。如对象的创建、
复制、存储到外存、从外存恢复、删除等•OOA一般不必为之定义相应的服务2.对象自身的行为——算法简单的服务•为实现严格封装原则而定义的服务。如,读取或设置一个属性的值•OOA一般也不必予以定义3.对象自身的行为—
—算法复杂的服务•描述所映射事物本身的固有行为,要进行某些计算或监控操作。如对某些属性值进行计算得到某种结果,对数据进行加工处理,对设备或外系统进行监控并处理输入、输出信息等•OOA中应努力发现并予以定义发现服务的策略•借鉴以往同类系统的OOA结果尽可能加以复用;研究问题域和系统责任以明确各个对象
应设立哪些服务以及如何定义这些服务。•考虑系统责任•考虑问题域•分析对象的状态(转)•追踪服务的执行路线•模拟每个服务的执行并追踪其执行路线,以发现遗漏的服务跳转分析对象的状态•找出对象生命期中可能呈现的每一种状态,画出状态转换图
(对象的状态/行为关系图)。•在每一种状态下对象可以发生什么行为?应由什么服务来描述?•对象从一种状态转换到另一种状态,是由什么操作引起的?是否已经设立了相应的服务?例栈的状态转换图空半满满压入(未满)弹出(未空)压入<报错>弹出<报错>弹出(已空)压入弹出压入(已
满)创建返回审查与调整•每个服务是否真正有用?•经过抽象之后所得到的类若没有什么可以继承的属性与服务,则不建立ISA结构。如在内河航运系统的问题域中,航标船(只需要“电池充电日期”属性)与普通船的关系•若系统责任、系统其它部分、系统边界以外的活动者都不可能请求此服务,则舍弃。•每个服务是否是高内聚
?•高内聚:一个服务只完成一项明确定义的、完整而单一的功能•分解•合并建立类图的特征层1.将每个对象的属性和服务都填写到相应的类符号中,便形成类图的特征层2.在类描述模板中填写关于每个属性和服务的详细说明例步骤3——定义结构和连接•对象
(以及它们的类)与外部的关系:•分类关系(一般-特殊):用一般-特殊结构表示•组成关系(整体-部分):用整体-部分结构表示•静态联系(属性联系):用实例连接表示•动态关系(行为关系):用消息连接表示一般—特殊结构——表示方法一般类特殊类特殊类:重定义继承的属性和服务:拒绝继承人员股东职员顾客股东
职员如何发现一般-特殊结构•学习当前领域的分类学知识•按常识从不同角度考虑事物的分类•考虑类的属性与服务•一个类的属性和服务是否适合此类的全部对象(从一般类特殊类)例•是否有两个(或更多)的类含有一
些共同的属性和服务(从特殊类一般类)例•考虑领域范围内的复用•应考虑在更高的水平上运用ISA结构,使本系统的开发能贡献一些可复用性更强的类构件。例跳转公司职员股东姓名身分证号码……股份„„职员工资„„………………公司职员姓名身分证号码股份
工资…………??从一般类发现特殊类返回股东姓名身分证号码股份„„……职员姓名身分证号码工资„„……?从特殊类发现一般类公司职员股东姓名身分证号码……股份„„职员工资„„………………返回现钞收款机ABCDE
FXYZ现钞收款机DEFZ收款机ABCXY收款机类成为可供本领域其它系统复用的领域构件为支持复用建立结构返回审查与调整•问题域是否需要这样的分类?•系统责任是否需要这样的分类?•系统责任是否要求作这样的区别?如“职员”和“生产人员”及“营销人员”之间•是否符合分类学的常
识?•只注意到属性与服务的继承,而没有注意与问题域的实际事物之间分类关系的对应•用“isakindof”关系来衡量每一对一般类与特殊类?•是否构成了继承关系?一般-特殊结构的简化•目的•减少类的数量,降低系统的复杂性•压缩类的继承层次,降低
系统的理解难度和开销•途径•取消没有特殊属性的特殊类。例•通过增加属性简化一般—特殊结构。例•取消用途单一的一般类。如,一个一般类只有唯一的特殊类,且此一般类没有可创建的对象实例。在此情况下,一般类的唯一用途就是向仅有的一个特殊类提供一些被继承的属性和服务。例跳转大学生研究生研究方向指导教师
……学生姓名学号班级„„……取消没有特殊属性的特殊类研究生研究方向指导教师……学生姓名学号班级„„……返回人员„„……男人„„……女人„„……中国人„„……美国人„„……日本人„„……人员性别国籍„„……通过增加属性简化一般-
特殊结构返回取消用途单一的一般类雷达安装地点„„监控……设备型号生成厂„„开启关闭雷达型号生成厂安装地点„„开启关闭监控返回一般类应符合的条件•有两个或两个以上的特殊类•需要用它创建对象实例•它的存在有助于软件复用(如“收款机”
)调整对象层和特征层•转例整体—部分结构——表示方法整体对象类部分对象类mn汽车发动机车轮14,60,10,1如何发现整体-部分结构•物理上的整体事物和它的组成部分•组织机构和它的下级组织及部分如公司与它的子公司、部门•团体(组织)与成员如班级与学生、公司与职员、办公室与办事员•一种事物
在空间上包容其它事物如生产车间中的机器、管理人员和工人•抽象事物的整体与部分如学科和分支学科、法律与法律条款审查与筛选1.是否属于问题域?2.是否系统责任需要?3.部分对象是否有一个以上的属性?•若只有一个属性,合并到整体对象中。如“车轮”与“汽车”4.是否有明显的整
体-部分关系?整体-部分结构的进一步运用1.简化对象的定义2.支持软件复用例3.表示数量不定的组成部分4.表示动态变化的对象特征•需要动态变化的属性与服务被组成部分对象,在系统中进行独立的处理并可方便灵活地与整体对象拼接车床„„……机床„„……刨床„„……起重机„„…
…电动机„„……钻床„„……送料车„„……用整体-部分结构实现复用0,1110,10,1返回冷藏车„„……汽车„„……制冷设备„„……冷藏车„„……汽车„„……制冷设备„„……仅用一般-特殊结构两种结构同用冷藏车„„……汽车„„……制冷设备„„……仅用整体-部分结构
两种结构的变通调整对象层和属性层•转例简单实例连接——表示方法(a)表示法类2类1(b)教师为学生指导论文学生教师10,mnm连接名称指导论文(c)城市之间有航线城市0,m0,m有航线与整体-部分结构的异同•同:•概念上,都是对象实例间的一种静态关系,通过对象的属性来体现•实现方式
上,都可通过对象指针来实现•异:•整体-部分结构的对象有明显的“has-a”语义,而实例连接对象无法区分整体和部分对象复杂实例连接——表示方法(a)表示方法连接属性……类2类1nm连接名称关联链属性(b)教师为学生指导论文学生教师0,m指导论文(
c)城市之间有航线城市0,m0,m有航线论文题目答辩时间成绩1距离每周班次增加对象类,简化复杂的实例连接学生教师0,m指导论文论文题目答辩时间成绩1教师0,m指导1毕业论文论文题目答辩时间成绩……学生11写作城市之间有航线城市0,m0
,m有航线距离每周班次城市0,m航线2距离每周班次……实例连接的表示法转换类2类1mn关联名连接属性……连接操作可缺省类2类1mn类31属性……1服务……可缺省(关联类)三元(多元)关联问题•解决方法
:•反复陈述描述多元关系的语句,分析这种陈述描述的是一种什么事物(即,找出多元关联的汇集点),将此事物抽象成类,即增设一个关联类,使多元问题转化为二元的实例连接•如,“某人员使用某种语言从事某个项目”多元
关联解决办法项目0,m1任务项项目名人员语言……语言11人员10,m如何建立实例连接1.认识对象之间的静态联系2.认识实例连接的属性和操作3.分析实例连接的多重性4.处理多元关联和多对多的实例连接多对多实例连接实现方式教师0,m讲课任务主讲教师课程……课程1,m11命
名与定位•命名•一般用动词或动宾结构•定位•当某一端是一个ISA结构时,若此实例连接适应结构中的每一个类的对象,则将连接线画到一般类上,否则画到相应的特殊类上调整对象层和特征层•转例消息连接主动对象Aa被动对象Bb被动对象Cc被动对象Dd1d2运行开
始运行结束服务执行消息发送控制点返回示意顺序系统中的消息传递主动对象A主动对象B被动对象D任务Task1线程Ta控制线程之间的消息连接控制点返回示意被动对象C被动对象E控制线程内部的消息连接任务Task2线程Tb并发系统中的消息传递并发系统与顺
序系统中消息的不同点1.消息的不同用途•发出访问请求,如客户端请求服务器端检索数据•提交数据,如传送一个文件or发一个电子邮件•发布通知或事件信息•传递同步控制信号2.消息的同步与异步3.接收者对消息
的不同响应方式4.发送者对消息处理结果的不同期待方式5.消息的接收者是否唯一•定向信息、广播消息向接收者OOA对消息的表示——消息连接•识别和表示的主要问题:•对象之间是否存在消息?•消息是同一线程内部的还是不同线程之间?•每一种消息是从发送者哪个服
务发出的?由接收者哪个服务响应处理的?•消息是同步还是异步?•发送者是否等待消息的处理结果?基本模型类的详细说明模板1.发现控制线程内部的消息连接•基本策略:“服务模拟”和“执行路线追踪”•具体做法:•人为地模拟当前服务的执行,通过考虑需要请求其它对象
的服务来发现新消息。•分析该消息的发送者与接收者在执行时是否属于同一控制线程如何建立消息连接•对每个控制线程考虑:•它在执行时是否需要请求其它控制线程中的对象为它提供服务?由哪个对象发出?由哪个对象中的服务处理?•它在执行时是否要向其它控制线程中的对象提供或索取数
据?•它在执行时是否将产生对其它控制线程的执行有影响的事件?•各个控制线程的并发执行是否要传递同步控制信号•一个控制线程在何种条件下中止执行?在它中止后在何种条件下由其它控制线程用何法唤醒?2.发现控制线程之间的消息连接例实例一——超级市场销售管理系统
•该系统是超级市场业务管理系统的一个子系统。该系统只负责前台的销售管理,而且不处理信用卡付款和会员优惠等业务。其功能需求是:1.为顾客选购的商品计价、收费、打印清单;2.记录每一种商品的编号、单价及现有数量;3.帮助供货员发现哪些商品将要脱销,以及时补充货源;4.随时按上级系统的要求报告当前的款
货数量、增减商品种类或修改商品定价;5.交接班时结算货款数目,报告上级系统。返回返回问题边界返回系统责任从问题域中发现的对象1.人员①需要系统管理其信息的收款员、服务员、供货员、经理、咨询员、管理员(姓名/工号、权限等);顾客②在系统中扮演一定角色
的收款员(收款)、服务员(上下架)、供货员(新增)2.组织:在系统中发挥一定作用的组织机构•交款处、问询处、管理处、存包处、入/出口3.物品:需要由系统管理的各种物品•商品、货架、手推车、存包牌4.设备:在系统中动态运行,由系统进行监控或供系统使用的各种设备、仪表、机器、运输工具等服
务台(条码阅读机)、空调、电风扇、打印机、灯5.事件:需要由系统长期记忆的事件销售事件、意外事件6.表格:各种单据帐册、缺货单、供货单7.结构:从已发现的对象联想到其它相关的对象•商品分类结构:普通商品、特价商品、计量商
品•人员分类结构经理、管理员、服务员、收款员、供货员、顾客•检索结构(商品编号、货源、种类)返回根据系统边界发现的对象1.人员:与系统直接交互的各类人员•收款机(员):模拟收款员的登录、售货、结算等行为•供货员:模拟供货员的行为,在增加货物时修改系统中的商品数量•顾客2.设备:与系统相
连并交换信息的设备•服务台(条码阅读机)、打印机3.外系统:与系统相连并交换信息的其它系统•上级系统接口:处理与上级系统的交互,如查账、更改商品的种类和价格返回问题描述考虑系统责任,找回遗漏的对象1.为顾客选购的商品计价、
收费、打印清单;(收款员、条码阅读机、打印机、商品目录表)2.记录每一种商品的编号、单价及现有数量;(商品)3.帮助供货员发现哪些商品将要脱销,以及时补充货源;(供货员、缺货单、供货单)4.随时按上级系统的要求报告当前的款
货数量、增减商品种类或修改商品定价;(销售事件、商品目录表)5.交接班时结算货款数目,报告上级系统。(帐册、上级系统接口)返回问题描述返回筛选问题域中的候选对象人员•收款员、服务员、供货员、经理、咨询员、安全管理员、顾客组织•交款处、问询处、管理处、存包处、入/出口
物品•商品(特价商品、计量商品)、货架、手推车、存包牌设备•服务台(条码阅读机)、空调、电风扇、打印机、灯事件•销售事件、意外事件表格•帐册、缺货单、供货单、商品目录表审查并筛选对象•舍弃与系统责任无关的对象•筛选后剩下的对象有:•收款员、供货员(人员)•商
品、特价商品、计量商品(物品)•条码阅读机、打印机(设备)•销售事件(事件)•商品目录表、帐册、缺货单、供货单(表格)•上级系统接口(外部系统)返回系统责任对象精简对象•只有一个属性的对象•只有一个服务的对象•条码阅读机•打印机•精简后剩余的对象•收款员
、供货员•商品、特价商品、计量商品•销售事件•商品目录表、帐册、缺货单、供货单•上级系统接口收款员返回建立对象类•异常情况检查•对同一事物的重复描述缺货单供货单商品返回建立OOA基本模型的对象层销售事件供货
员上级系统接口帐册收款机特价商品商品一览表计量商品商品返回定义属性和服务•收款机(员)•姓名、上班时间、下(交)班时间;上班(登录)、售货、结帐…•供货员•姓名、缺/供货商品信息、缺/供货时间(缺货登记表);缺货登记、供货…•商品•编号、名称、单价、现有数量、下限;售出、补充
、价格更新...•销售事件•收款人、购物清单、应收款数、售出日期/时间;销售计价、入帐•帐册•前账结余、上交款、本班结余、收入累计;接班、记帐、报帐、交班•上级系统接口•帐册目录;消息收发、查账、报帐、价格更新、种类增删帐册前班节
余销售事件表收入累计上交款本班节余„接班计帐报帐交班上级系统接口帐册目录消息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款„„销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始
日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新收款机本班收款员开始时间结束时间登录售货结帐商品一览表商品目录检索种类增删(特征层)返回服务返回属性帐册前班节余销售事件表收入累计上交款本班节余接班记帐报帐交班@上级系统接口帐册目录@消
息发送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款„„销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品
一览表商品目录检索种类增删1m@收款机本班收款员开始时间结束时间@登录售货结帐返回isa返回has-a(分析isa和has-a)帐册前班节余销售事件表收入累计上交款本班节余接班记帐报帐交班@上级系统接口帐册目录@消息发
送查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款„„销售计划入帐商品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售
出*补充*价格更新1m商品一览表商品目录检索种类增删1m@收款机本班收款员开始时间结束时间@登录售货结帐返回(分析实例连接)•假如按用户需求确定的系统分布方案是:把仅与一台收款机处理的业务有关的信息与功能集中在一起作为一个客户机,把所
有的客户机共享的信息集中在一起作为服务器。那么,“收款机”、“销售事件”和“帐册”三类对象将分布在一起(每台客户机上都有这样一组);其余六类对象将分布在一起(在服务器端)•按这样的分布要求,可以确定,从“收款机”发送到“商品一览表”和“商品”的消息,以及“帐册”和“上级系统接口”之间互相发送的消息
,都是不同控制线程之间的消息,其余的消息都是各个控制线程内部的分析消息连接帐册前班节余销售事件表收入累计上交款本班节余接班记帐报帐交班@上级系统接口帐册目录@消息收发查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款„„销售计价入帐商
品编号名称单价架上数量下限售出补充价格更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品一览表商品目录检索种类增删1m@收款机本班收款员开始时间结束时间@登录售货结帐(关系层,完整的类图)帐册前班节余销售事
件表收入累计上交款本班节余接班记帐报帐交班@上级系统接口帐册目录@消息收发查帐报帐价格更新种类增删供货员缺货登记表缺货登记供货销售事件收款人购物清单应收款„„销售计价入帐商品编号名称单价架上数量下限售出补充价格
更新特价商品开始日期结束日期计量商品*单价计量单位计价方式*售出*补充*价格更新1m商品一览表商品目录检索种类增删1m@收款机本班收款员开始时间结束时间@登录售货结帐(关系层,完整的类图)实例二——习题管理系统•该系统的功能需求是:
•在一个公共习题库的支持下,使各科教师可以在系统中编写习题及其标准答案,并将编写的系统及答案加入题库;或者从题库中选取一组习题,组成一份向学生布置的作业,并在适当的时候公布答案。学生可以在系统中完成教师布置的作业,也
可以从题库中选择更多的题目练习。教师可以通过系统检查学生作业,学生也可以在教师公布答案后对自己的练习进行核对。系统维持对题库的管理,并对教师及学生的权限进行检查:只有本课程的教师可以提交或修改习题,并指定哪些习题答案可以向学生公开。发现对象•教师
•系统需要模拟和支持他们的行为,包括编写习题及答案、选择习题、公布答案、检查作业等•学生•在系统上完成教师布置的作业,或自选题目练习,并核对答案•班•学生所在的组织单位。一个班每学期有若干门课程,每门课程的习题由一位教师负责•习题•在系
统中产生、管理和使用的一类重要事物•习题板(教师每次布置的作业在此公布)•考试题板•练习本•每个学生的每一门课都有一个练习本,是学生自己的工作空间,记录着学生做过的每一道习题的题目、学生本人的答案、可以得到的标准答案;通过它提供的服务使学生在系统中完成自己的工
作•题库服务器•管理大量的习题,用以提供习题入库、提取、权限管理等服务建立OOA模型的对象层习题板练习本题库服务器学生教师习题班考试题板