面向对象的系统分析与设计课件.ppt_第1页
面向对象的系统分析与设计课件.ppt_第2页
面向对象的系统分析与设计课件.ppt_第3页
面向对象的系统分析与设计课件.ppt_第4页
面向对象的系统分析与设计课件.ppt_第5页
已阅读5页,还剩228页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2009.11.28,面向对象的系统分析与设计,面向对象的系统分析与设计,王庆江计算机科学与技术系qjwang,2009.11.28,面向对象的系统分析与设计,参考书麻志毅,邵维忠.面向对象方法基础教程.高等教育出版社,2004年第1版.邵维忠,杨芙清.面向对象的系统分析.清华大学出版社,2006年第1版.,2009.11.28,面向对象的系统分析与设计,1概述传统软件开发方法中存在的问题60年代,崇尚个人编程技巧;汇编语言、Fortran、COBOL;GOTO语句。70年代,出现结构化方法;软件按功能组织;数据和操作结合得不紧密;适合功能稳定的科学计算,但不适合功能随市场变化的企业和商业软件。,2009.11.28,面向对象的系统分析与设计,70年代,出现信息建模方法;以信息实体为构造块,以数据结构为中心来开发软件;对功能的处理较弱。80年代,出现面向对象方法(OOM)。对信息建模方法进行了发展;软件模型是问题域的完整和直接映射;分析、设计和编程采用一致的概念和表示。是一种运用“对象”、“类”、“继承”、“封装”、“聚合”、“关联”、“消息”、“多态性”等概念和原则来构造系统的软件开发方法。,被开发系统的应用领域,2009.11.28,面向对象的系统分析与设计,OOM的基本思想客观世界中的事物都是对象,对象间存在一定关系,复杂对象由简单对象组成;具有相同属性和操作的对象属于一个类,对象是类的一个实例;类之间可以有层次结构,子类继承父类的全部属性和操作,且可有自己的属性和操作;类有封装性,隐藏或公开自己的属性或操作;对象只能通过消息请求其他对象或自己的操作;强调运用人类日常思维方法。,2009.11.28,面向对象的系统分析与设计,2009.11.28,面向对象的系统分析与设计,对象(Object)是系统中用来描述客观事物的一个实体,它是构成系统的基本单位,由一组属性和施加于这组属性的一组操作构成。对象中的属性(Attribute)用来描述对象静态特征的一个数据项。对象中的操作(Operation)用来描述对象动态特征(行为)的一个动作序列。,2009.11.28,面向对象的系统分析与设计,类(class)相同属性和操作的一组对象属于同一个类,它为属于该类的全部对象提供了统一的抽象描述,由一个类名、一组属性和一组操作构成,同一个类的对象之间,属性值可不同,操作完全相同。类的作用用于创建对象,对象是类的实例。,2009.11.28,面向对象的系统分析与设计,继承(inheritance)特殊类自动拥有其一般类的全部属性和操作,称为特殊类对一般类的继承,也称一般类对特殊类的泛化。,2009.11.28,面向对象的系统分析与设计,继承的层次与抽象、分类原则的运用,运输工具,轮船,车辆,飞机,火车,汽车,卡车,轿车,较多地忽略事物之间的差别,得到较一般的类,较多地注意事物之间的差别,得到较特殊的类,继承有传递性,简化了人们对事物的认识和描述,有益于软件复用。,2009.11.28,面向对象的系统分析与设计,关联(association)类之间的静态关系;类实例为对象,对象之间用链连接。链是关联的实例。,2009.11.28,面向对象的系统分析与设计,聚合(aggregation)一个(较复杂)对象由其他若干(较简单)对象作为其构成成分,这种对象间关系称为聚合;是关联的一种。,2009.11.28,面向对象的系统分析与设计,面向对象的基本原则抽象从事物中舍弃个别的、非本质的特征,保留共同的、本质特征的做法。分类较多地注意事物之间的差别,把具有相同属性和操作的对象划分一类。,2009.11.28,面向对象的系统分析与设计,封装(encapsulation)用对象把属性和操作包装起来,形成一个独立的实体单位,并尽量对外隐蔽内部细节。,2009.11.28,面向对象的系统分析与设计,消息(message)对象通过它提供的操作在系统中发挥作用;其他对象向这个对象发请求,该对象响应并执行指定操作;向一个对象发送的操作请求,称为消息;对象之间通过消息进行通信,实现对象之间的动态联系。在c+中是函数调用,在Java中是方法激活。,2009.11.28,面向对象的系统分析与设计,多态性(polymorphism)特殊类可定义同名的属性或操作,来代替继承来的属性或操作;一般类中的属性或操作,在不同特殊类中可有不同的定义。,2009.11.28,面向对象的系统分析与设计,动态行为分析用对等(关联)和层次(继承和聚合)描述类间关系,称为静态模型(或结构模型);按属性值,可把对象划分为不同的状态,请求对象操作会引起状态变化,用状态转化图表示;对象间发送消息,协同完成某项功能,用交互图(即写作图和顺序图)表示;用主动对象和被动对象表示并非行为。,2009.11.28,面向对象的系统分析与设计,永久对象(persistentobject)生存期可以超越程序执行时间而长期存在的对象;目前大多数OOPL(OO编程语言)是不支持永久对象的;采用文件或数据库存储;读出后进行必要的格式转换,恢复对象。面向对象数据库管理系统(OODBMS)OO语言和数据结合,支持对象永久性。,2009.11.28,面向对象的系统分析与设计,主动对象(activeobject)至少有一个操作不需要接收消息就可主动执行的对象。所有操作必须接收消息才能执行的对象,称为被动对象。在多任务并发执行的系统中,存在多个主动对象。,2009.11.28,面向对象的系统分析与设计,复杂性控制系统分为若干“包(package)”,把类图中按模型元素之间关系的紧密程度,把模型元素组织到各个包中。,2009.11.28,面向对象的系统分析与设计,面向对象方法的优点与人们认识世界的方法相对应;对象对应问题域中的事物;其属性和操作刻画事物的静态和动态特征。继承、聚合、依赖和关联关系如实反映问题域事物之间的关系。使客观世界到计算机语言的鸿沟变窄面向对象语言比非面向对象语言更接近问题域。,2009.11.28,面向对象的系统分析与设计,面向对象方法使问题域和计算机的鸿沟变窄易于维护和复用提高软件质量和生产效率,问题域,需求分析,总体设计,详细设计,编程,测试,计算机,分析与设计的鸿沟,自然语言,编程语言,问题域,OOA,OOD,OOP,OOT,自然语言,OO语言,计算机,OO的软件工程方法,结构化的软件工程方法,2009.11.28,面向对象的系统分析与设计,易于维护和复用提高软件质量和生产效率,数据结构,数据结构,数据结构,算法,算法,算法,关系,结构化方法中的数据结构、算法及其间关系,数据结构+算法,数据结构+算法,数据结构+算法,数据结构+算法,关系,OO方法中的数据结构、算法及其间关系,2009.11.28,面向对象的系统分析与设计,面向对象方法的发展史雏形阶段60年代,挪威Simula67首次使用类和继承概念;70年代,CLU、并发Pascal、Ada、Modula-2开始支持数据和操作的封装;72年,Smalltalk-72使用“面向对象”这一术语。,2009.11.28,面向对象的系统分析与设计,完善阶段81年,Smalltalk-80具备了面向对象的大多数基本概念和支持机制,被认为是第一个完善的、能够实际应用的面向对象语言(OOPL)。繁荣阶段80年代中期至90年代,出现了C+、Object-C、ObjectPascal、Eiffel、Actor、Java;目前,普遍采用语言、类库、可视化编程环境相结合的方法,如VisualC+、VisualBasic、Delphi等。,2009.11.28,面向对象的系统分析与设计,2面向对象分析(ObjectOrientedAnalysis)OO方法的三个阶段面向对象分析(OOA)不考虑实现,只找出所需对象及对象间关系,一般会确定对象有哪些属性和操作。面向对象设计(OOD)根据与实现有关的因素,定义对象中操作的实现,对OOA模型修改和补充,得OOD模型。面向对象编程(OOP)按OOD模型,进行编程实现。OOA和OOD的界限有时是模糊的。,2009.11.28,面向对象的系统分析与设计,OOA面临的主要的问题问题域和系统责任的复杂性日益增长。问题域被开发系统的应用领域,即系统的业务范围。系统责任所开发的系统应该具有的功能。,2009.11.28,面向对象的系统分析与设计,交流问题开发人员与领域专家交流;开发人员之间的交流;开发人员与管理人员交流。需求的不断变化软件复用的要求,2009.11.28,面向对象的系统分析与设计,需求分析:研究问题域,产生一个满足用户需求的系统分析模型。OOA模型如下:,静态模型,动态模型,需求模型,文档,图,2009.11.28,面向对象的系统分析与设计,OOA过程,2009.11.28,面向对象的系统分析与设计,3用况图(usecasediagram)对一个系统的参与者、用况以及它们之间的关系进行可视化表示的模型图,称为用况图。以直观形式展示了系统的用户需求;是系统的需求模型。,2009.11.28,面向对象的系统分析与设计,系统边界是一个系统所包含的所有系统成分与系统以外各事物的分界线。,2009.11.28,面向对象的系统分析与设计,现实事物的四种情况位于系统边界内;如超市商品销售系统中的商品参与者,且系统中没有相应成分与之对应;收款员既有系统内成分作为其抽象描述,又在系统外与系统交互;收款员属于问题域,但与系统责任无关。保安员、保洁员注意:已开发的软件系统,位于边界外。,2009.11.28,面向对象的系统分析与设计,参与者是在系统之外(透过系统边界)与系统进行交互的任何事物。定义了一组在功能上密切相关的角色;收款员(参与者)有“收款”、“验货”、“验信誉卡”等角色。与系统的关系向系统发出请求,系统以某种形式响应;系统也可向参与者发出请求,参与者予以响应。,2009.11.28,面向对象的系统分析与设计,参与者之间的继承关系特殊参与者可继承一般参与者放出请求的能力。,2009.11.28,面向对象的系统分析与设计,识别参与者人员从可直接使用系统的人员中发现参与者外部系统外部已开发投入使用的应用系统设备监视器、键盘通常不被看做参与者;外部传感器、马达则可能是参与者。,2009.11.28,面向对象的系统分析与设计,用况(usecase)对用户需求的规范化描述;为开发人员提供认识和理解系统的技术;为领域专家、最终用户和开发者提供一种相互交流的手段;可作为人机界面的设计基础,也可用于制作测试用例。,2009.11.28,面向对象的系统分析与设计,一个用况描述系统级的一项功能,把这样的功能描述为一组动作序列,系统执行该动作序列,为参与者产生一个可观察的结果值;其中的每个序列表示参与者与系统的一次交互。强调参与者和系统彼此为对方做了什么,不关心怎么做,也不关心间接做了什么;既表达了系统的功能需求,也表达了系统的功能划分;描述的系统功能是相对完整的,而不是其中的小片段,但也不要过于综合。,用况名,2009.11.28,面向对象的系统分析与设计,用况与参与者之间的关系一个参与者可以和多个用况交互;对每个用况,参与者扮演一种角色。一个用况可以和多个参与者交互;关联是参与者和用况的唯一关系。意味着两者可以通信。,2009.11.28,面向对象的系统分析与设计,用况之间的关系有下列情况之一,可考虑增加新用况。一个用况中有重复使用的动作序列;几个用况中有重复使用的动作序列;一个用况中的主要动作序列过于冗长或复杂,而且分离它们有助于理解和管理。,2009.11.28,面向对象的系统分析与设计,用况之间的包含(include)把两个或多个用况中重复的行为放在一个新用况中,原有用况中某一位置引入新用况;基用况使用被包含用况的结果。,2009.11.28,面向对象的系统分析与设计,用况之间的扩展(extend)在一个或多个用况中存在可选的行为片段;把该片断抽取出来,形成新片段;在原用况中删除片段的位置(即扩展点)对新片段进行扩展。,2009.11.28,面向对象的系统分析与设计,用况之间的继承与类的继承一样,特殊用况继承一般用况的行为和含义,而且可增加行为或覆盖一般用况的行为;特殊用况可出现在一般用况出现的任何位置。,2009.11.28,面向对象的系统分析与设计,发现用况利用参与者发现用况;从系统功能角度发现用况;角色扮演。,2009.11.28,面向对象的系统分析与设计,用况图,参与者,参与者,参与者,用况,基用况,用况,基用况,被包含用况,基用况,延伸用况,2009.11.28,面向对象的系统分析与设计,订单处理系统的用况图,2009.11.28,面向对象的系统分析与设计,例:学生学籍管理系统有登录、选课、查看学分三项功能。方法一,2009.11.28,面向对象的系统分析与设计,方法二:让所有用况都包含“登录”,2009.11.28,面向对象的系统分析与设计,方法三:使用扩展设计“登录”用况,2009.11.28,面向对象的系统分析与设计,方法四:用况“登录”独立于其他用况必须在其他用况中指定“前置条件”:只有登录成功才能继续执行自己。,2009.11.28,面向对象的系统分析与设计,4类图在OO方法中,类图是最重要的图!它描述了系统中各对象的类型和它们之间的关系;注重表达系统的静态结果。,2009.11.28,面向对象的系统分析与设计,对象对象是具有明确语义边界并封装了状态和行为的实体;对象是系统中描述客观事物的一个实体,是系统的基本单位;有一组属性和作用在属性上一组操作组成。类对具有相同属性、操作、关系和语义的对象集合的抽象;对属于该类的全部对象提供统一的描述。,2009.11.28,面向对象的系统分析与设计,类和对象的表示法因为一个类的各对象拥有相同的操作,故对象内部的操作不要表示出来。,2009.11.28,面向对象的系统分析与设计,识别对象和类考虑问题域侧重于客观事物与系统中对象的映射。考虑系统边界发现与参与者交互的系统对象。考虑系统责任利用名词、代词和名词短语,2009.11.28,面向对象的系统分析与设计,审查与筛选舍弃无用的对象对象中的属性是否是系统有用的?对象中提供的操作是否是系统有用的?精简对象只有一个属性的对象;只有一个操作的对象,没有属性,且系统只有一个类的对象请求该操作。推迟到OOD考虑的对象。,2009.11.28,面向对象的系统分析与设计,抽象出类,并进行调整对象分类对类进行调整类的属性或操作不适合该类的所有对象;汽车和乘客限量现实中迥然不同的事物,即使属性和操作都一样,可合并为一类(当有各式的类名时);作为商品的计算机软件和吸尘器属性和操作相似,提出相同部分,建立一般类。轿车和货车,提取相同属性和操作,构成新类“汽车”,2009.11.28,面向对象的系统分析与设计,认识对象的主动行为,并识别主动对象主动对象是拥有线程或进程,并启动控制活动的对象;主动对象是线程或进程中最先开始执行的对象;被动对象除了不能拥有线程或进程,与主动进程没有区别。主动类是其实例为主动对象的类。,2009.11.28,面向对象的系统分析与设计,主动类的表示粗边框,或加“active”修饰词。,2009.11.28,面向对象的系统分析与设计,怎么识别主动对象?从问题域考虑,主动行为是对象主动呈现的,而不是外因导致的;检查与系统边界外互动的对象;根据系统功能层次,完成最外层功能的对象是否是主动的;进行操作执行流程的逆向追踪。注意:OOD阶段可能还会增加主动对象。,2009.11.28,面向对象的系统分析与设计,类的命名应恰好反映该类及其子类所含的任何对象;例:类及子类的对象有“汽车”、“摩托车”,则可用“机动车”;若还有“马车”,则可用“车辆”。应反映个体,而非群体;例:用“学生”,而不用“学生们”。用名词或带定语的名词,并用规范词汇;用适当的语言文字。,2009.11.28,面向对象的系统分析与设计,建立类图的对象层根据已找到的类,建立对象层的方法:用类符号表示每个类,有条件的可使用软件工具(如rose)把它们画出来,就是OOA基本模型(即类图)中的对象层;在类描述模板填写每个类的详细说明;在类符号中填写能够认识到的属性和操作;能认识到的关系也在类符号之间画出。,2009.11.28,面向对象的系统分析与设计,定义属性和操作属性是类的构成元素,用于描述类所对应的事物的一个性质。格式:可见性属性名:类型=初始值约束串可见性公有的(+)受保护的(#)私有的(-),2009.11.28,面向对象的系统分析与设计,类属性:描述一个类的所有对象的共同性质的一个数据项,对于该类的所有对象,其值是一样的。C+、Java中用static修饰。实例属性:对于类的不同对象,属性值可以不同的属性。,2009.11.28,面向对象的系统分析与设计,识别属性按一般常识认识对象的属性;如“人”应该有“姓名”、“职业”、“住址”等在当前问题域,对象应该有哪些属性;在超市这类问题域,条形码应该是商品的属性根据系统责任,对象还应有哪些属性;建立该对象,是为了保存哪些信息?对象完成一个操作需要哪些属性?对象有哪些状态,需要属性来区别?用什么属性表示聚合和关联?需求说明中的定语词汇,如红色的汽车。,2009.11.28,面向对象的系统分析与设计,审查和筛选客观事物的属性很多,应剔除与系统责任无关的属性;属性应该是描述对象本身的特征;“课程”应该有“主讲教师”属性,但不应该有教师的“住址”、“电话”等属性。属性不能破坏对象特征的“原子性”。“人”有“通信地址”,而不该有“省”、“市”、“邮编”的属性。凡在一般类中定义的属性,不在特殊类中出现;,2009.11.28,面向对象的系统分析与设计,审查和筛选(续)如果一个属性可直接由另一个属性导出,则应删除;如有“出生年月”,则应删除“年龄”。与实现条件有关的属性应该推迟到OOD再考虑。属性的定位属性应放在它直接描述的那个对象的类符号中;属性必须适合这个类及其全部特殊类。,2009.11.28,面向对象的系统分析与设计,描述属性用名词或带定语的名词命名;在类描述模板中,给出属性的详细描述。,2009.11.28,面向对象的系统分析与设计,定义操作操作是类的构成元素,是类的对象被要求执行的服务。格式:可见性操作名(参数列表):返回类型约束串可见性:公共的(+)受保护的(#)私有的(-),2009.11.28,面向对象的系统分析与设计,操作可看作是为其他对象或自己所做的工作。内部操作只供对象内部其他操作调用,即私有操作外部操作可由其他对象发来的请求消息激活的操作;也可由对象内部其他操作调用。接口由对象的所有外部操作组成。操作的具体实现一般放在OOD进行。,2009.11.28,面向对象的系统分析与设计,类范围的操作仅用于操纵类属性的操作,称为类范围的操作。在C+中,加static修饰词其他操作,称为实例范围的操作。在UML中,操作的具体实现,称为方法。,2009.11.28,面向对象的系统分析与设计,识别操作首先看有相同或类似问题域的OOA模型,尽量复用其中的类及其操作的定义;操作分为系统行为把对象视为整体的行为,如对象创建、复制或删除。对象自身行为算法上简单的行为读或写对象的某个属性,OOA模型中可暂不考虑。算法上复杂的行为(OOA模型中需要指出)对数据进行较复杂的加工处理。,2009.11.28,面向对象的系统分析与设计,发现操作的一些策略考虑系统责任,看功能由哪些对象提供;考虑问题域有哪些行为,并且与系统责任有关;分析对象的状态,根据状态转换图,找出状态转换由什么行为引起的;追踪操作的执行路线,发现遗漏的操作;根据动词或动词短语来识别操作(这是简单但不准确的方法);查看属性,因为属性是由对象操作来操纵的。,2009.11.28,面向对象的系统分析与设计,审查和筛选首先看每个操作是否真的有用;检查每个操作是不是高内聚的;完成明确、完整、单一的功能。操作的定位应放在拥有此操作的对象中;“售货”放在“售货员”中,“售出”应放在“货物”中。通用的操作放在一般类中,专用操作放在特殊类中。,2009.11.28,面向对象的系统分析与设计,描述操作用动词或动名词命名;每个对象的操作都应填到对应的类符号中;在类描述模板中,写操作的解释、特征标记等。,2009.11.28,面向对象的系统分析与设计,建立关系定义好类的属性和操作,就完成了特征层;就该建立OOA基本模型(类图)的关系层。类之间的继承;类之间的聚合;类之间的关联;类之间的依赖。这样,各个类就构成了一个有机整体。,2009.11.28,面向对象的系统分析与设计,继承如果类A具有类B的全部属性和操作,且还有自己特有的一些属性和操作,则A称为B的特殊类,B称为A的一般类。A与B之间是继承关系,UML中称泛化关系。,2009.11.28,面向对象的系统分析与设计,继承的数学性质非对称性类A继承类B,则类B不继承类A。例:“职员”是一种“人”,但不是所有“人”都是“职员”。传递性类A继承类B,类B继承类C,则类A继承类C。例:“销售员”是一种“职员”,“职员”是一种“人”,则“销售员”是一种“人”。,2009.11.28,面向对象的系统分析与设计,单继承只继承一个一般类。多继承继承了多个一般类。抽象类包含至少一个操作,没有定义其怎么实现;一般类的抽象操作的特征标记在特殊类中出现,且不是抽象的,则称特殊类实现了该操作。不同特殊类有不同的对抽象操作的实现,称为“多态”现象。含有抽象操作的类,不能被实例化。,2009.11.28,面向对象的系统分析与设计,继承的表示,2009.11.28,面向对象的系统分析与设计,抽象操作的表示用斜体的特征标记;或者,在操作名后加上abstract。抽象类的表示用斜体的类名表示;或者,在类名后加上abstract。,2009.11.28,面向对象的系统分析与设计,多继承的实现,在职研究生类的对象的内存映像,2009.11.28,面向对象的系统分析与设计,特殊类中使用的另外两个符号*放在属性或操作前,表示对一般类中的同名属性或操作进行重新定义;表示“多态”。拒绝继承一般类中同名的属性或操作。,2009.11.28,面向对象的系统分析与设计,识别继承学习问题域的分类知识;按常识考虑事物的分类;使用继承的定义;把类看作是对象的集合;如果一个类是另一个类的子集,则前者是子类,继承后者。考察类的属性和操作;若属性和操作不适合该类的全部对象,则应该找出一个特殊类。例:属性“股份”不是所有“公司人员”都有的。,2009.11.28,面向对象的系统分析与设计,2009.11.28,面向对象的系统分析与设计,审查调整问题域是否需要这样的分类;在图书分类学中,“书”有“善本书”,但实际图书馆中根本没有“善本书”。系统责任是否需要这样的分类;“职员”有“生产人员”和“销售人员”之分,但系统不需要区分。是否符合分类学的常识;例:“飞机”的属性只比“汽车”增加了“高度”。是否构成了继承关系?,2009.11.28,面向对象的系统分析与设计,简化特殊类没有自己特殊的属性或操作;特殊类一定有不同于一般类的特征。某些特殊类之间的差别可由一般类的某个或某些属性的值来体现,且除此之外没有其他更多的不同。,2009.11.28,面向对象的系统分析与设计,简化一个一般类之下只有一个特殊类,且这个一般类不用于创建对象;取消一般类,把属性和操作放入特殊类;,2009.11.28,面向对象的系统分析与设计,简化不要过分利用继承,适当减少继承层次。,2009.11.28,面向对象的系统分析与设计,一般类应符合下列条件之一它有两个或两个以上的特殊类;需要用它创建对象实例;它的存在有助于软件复用;其他为了更自然地反映问题域;避免把过多的属性和操作集中在一个类中。,2009.11.28,面向对象的系统分析与设计,关联静态关系最终可通过对象属性来表示的一个对象与另一个对象的联系。例:“教师”为“学生”“指导论文”,两个“城市”之间“存在航线”。动态关系对象之间在行为(操作)上的联系。类之间的静态关系,称为关联!,2009.11.28,面向对象的系统分析与设计,如果一个类的对象与另一个类的对象之间有语义连接关系,则这两个类之间的语义关系称为关联。,单向关联(访问是单向的),2009.11.28,面向对象的系统分析与设计,链是关联的实例,是对象之间的语义连接。两个对象间有链,则一个对象可访问另一个对象。,2009.11.28,面向对象的系统分析与设计,多重性(multiplicity)关联的另一端上的多重性,是指本端的一个对象需要另一端对象的个数。,2009.11.28,面向对象的系统分析与设计,分裂为两个类,消除数据冗余,2009.11.28,面向对象的系统分析与设计,关联角色在关联的每一端可有名字,表示与该端连接的类扮演的角色;当需要强调类在关联中的确切含义时,使用关联角色;使用了关联角色,关联名可省略!,对象图,2009.11.28,面向对象的系统分析与设计,关联类(目前的编程语言不支持)兼有关联和类双重特征的建模元素。增加类,把关联类转化为普通类。,2009.11.28,面向对象的系统分析与设计,N元关联三个或三个以上类的关联。,2009.11.28,面向对象的系统分析与设计,指导建立关联的几个策略认识各类对象之间的静态联系;若系统责任不要求,则不必建立。认识关联的属性和操作;“指导论文”是否要给出“论文名称”、“答辩时间”和“成绩”等属性?用关联类容纳这些属性和操作。分析关联的多重性。,2009.11.28,面向对象的系统分析与设计,对象层、特征层的增补及关联说明建立关联时,可能增进了一些新的类;对每个关联,在描述模板中给出详细说明。思考题:“计算机”、“服务器”、“客户机”、“系统操作员”、“用户”之间的关联。“人”、“学生”、“教授”之间的关联。,2009.11.28,面向对象的系统分析与设计,聚合是表示整体的类和表示部分的类之间的“整体-部分”关系。组合是聚合的一种,且整体管理部分的生存期。,组合(紧密聚合、复合聚合),聚合(松散聚合、共享聚合),2009.11.28,面向对象的系统分析与设计,2009.11.28,面向对象的系统分析与设计,聚合也是一种关联,含义相同,2009.11.28,面向对象的系统分析与设计,识别聚合物理上为整体和部分的事物;组织机构与它的下级组织或部门;团体(组织)与成员;空间上的包含关系;抽象事物的整体与部分;具体事物和它的抽象方面。,2009.11.28,面向对象的系统分析与设计,对聚合的审查与筛选是否属于问题域?当整体和部分都属于问题域,才行。是不是系统责任需要的?部分对象是否有一个以上的属性?如只有一个,取消部分对象,收缩至整体对象中。是否有明显的整体-部分关系?调整对象层和属性层定义聚合关系时,可能发现一些新的对象/类,需要对对象层增补。,2009.11.28,面向对象的系统分析与设计,依赖(关系)UML中,依赖可用于多种建模元素之间;对目标元素的改变,可能需要改变该关系的源元素。,2009.11.28,面向对象的系统分析与设计,接口抽取类的公共操作,构成一个或多个接口,称该类对这个或这些接口提供了实现;Java中的接口更纯粹,接口中只有操作声明,而没有实现;一个类可实现一个或多个接口,也称该类提供了一个或多个接口。,2009.11.28,面向对象的系统分析与设计,2009.11.28,面向对象的系统分析与设计,抽象类和接口的区别是OOA中不同的建模元素;抽象类中可包含属性和一些方法的实现,而接口中没有属性,且不含任何方法的实现。,2009.11.28,面向对象的系统分析与设计,5顺序图类图(对象层、特征层和关系层)没有描述对象操作的动态使用;UML中的交互图是顺序图和协作图的统称。顺序图是强调消息时间顺序的交互图;协作图是强调接收和发送消息的对象的结构组织的交互图。画顺序图,有助于进一步弄清对象间的动态行为,可能会发现对象需要新的操作。,2009.11.28,面向对象的系统分析与设计,顺序图是一种详细描述对象间以及对象与参与者之间交互的图;它由一组协作的对象(或参与者)以及它们之间的消息组成;强调消息的发送顺序。二维画法垂直向下为时间方向,水平表示不同对象或参与者。,2009.11.28,面向对象的系统分析与设计,2009.11.28,面向对象的系统分析与设计,建立顺序图一个顺序图只描述一个控制流;可把大而复杂的控制流分几部分放在多个图中。建立顺序图的策略:按照交互意图,确定需要的对象或参与者;为每个对象或参与者设置生命线,一般把发起交互的放在左边;对那些在交互期间创建和销毁的对象,在适当时刻用消息箭线显式指明;,需要为哪些交互建立顺序图?,2009.11.28,面向对象的系统分析与设计,建立顺序图的策略(续)确定消息的顺序;在各对象生命线上,按操作的活动时间长短画棒形条;同一控制线程中,接收者操作的执行应该在发送者发出消息之后开始,并在发送者结束之前先结束;如需要,增加对操作的功能、时间或空间约束进行描述;如需要,可画消息的迭代或分支。,2009.11.28,面向对象的系统分析与设计,协作图(UML支持的一种交互图)是一种强调发送和接收消息的对象结构组织的交互图;显示绕着对象以及对象之间的链而组织的交互。,2009.11.28,面向对象的系统分析与设计,顺序图和协作图可互相转换,2009.11.28,面向对象的系统分析与设计,建立协作图的方法设置交互的语境;通过找出对象在交互中扮演的角色,将对象作为图的顶点,放在协作图中;若类之间有关联,则对象之间有链;从引起交互的消息开始,把消息附在相应的链上,并标出顺序号;一张协作图只描述一个控制流。,2019/12/16,117,可编辑,2009.11.28,面向对象的系统分析与设计,状态图客观世界里,事物都有生命期;在生命期里,事物经历多个状态;在任一时刻,事物精确位于某一状态;有事件引起事物状态的变化;事物状态变化是即时的(瞬间的);事件发生时,事物可能需要采取一些动作。,2009.11.28,面向对象的系统分析与设计,状态图描述了一个对象在其生命期内响应事件所经历的状态序列,以及对这些事件所做的反应。一般仅对这样的对象建立状态图:有清晰的生命期;对其语境外部的事件能做出反应;且它当前的行为受它过去行为的影响。考虑清楚了一个类的所有对象的状态图,就可综合出该类的状态图。,2009.11.28,面向对象的系统分析与设计,事件指可引起状态转换的事情。信号事件一个对象收到另一个对象的信号。调用事件一个对象收到操作调用的请求消息。时间事件在指定事件后一段时间或指定时刻发生的时间。改变事件由布尔表达式为真代表的事件。,2009.11.28,面向对象的系统分析与设计,状态是对象生命期的一个阶段;在该阶段,对象满足一定条件、从事特定活动或等待某个事件。,2009.11.28,面向对象的系统分析与设计,动作是在状态内或状态转换时所做的操作;它是原子的和即时的(不可中断、瞬间的)。可以是:修改对象属性,或执行本对象其他操作;向一个对象发送信号;调用另一个对象的操作;创建或删除对象;发回一个值或值集;,2009.11.28,面向对象的系统分析与设计,状态转换当一个特定事件发生,且满足一定的条件,对象从第一个状态(源状态)进入第2个状态(目标状态),并执行一定的动作。,2009.11.28,面向对象的系统分析与设计,从“deFCAccount;”中提取“ejb-name”和“Account”的字符流分析器的状态图,2009.11.28,面向对象的系统分析与设计,建立状态图对于不是基于控制的应用系统,多数对象不会经历有意义的状态变迁;因此,只有少数对象需要用状态图描述。遵循的策略:设置状态机的语境(考虑父类、关联类);建立初始和终止状态;研究属性值的稳定范围,确定中间状态;确定对象生命期中状态的一个有意义的偏序;根据对象的接口,确定可能发生的事件;识别各状态的进入或退出的动作及内部转换。,2009.11.28,面向对象的系统分析与设计,包图包是对OOA模型元素分组的机制;对每一组作为一个集合进行命名和处理;用于类图,可以把一组类打包;用于用况,可以把一组用况打包;一个模型元素只能被一个包拥有。如果包被撤销了,元素也被撤销了。,2009.11.28,面向对象的系统分析与设计,包的层次性包中还可以有包;所有包构成一棵严格的“树”;但最好避免深度嵌套。包中元素的命名一个包形成一个命名空间;在同一包中,同一类型的元素的名字必须唯一,不同类型的元素可以同名。包Vision中有类Camera,而包Vision又位于包Sensor中,则类Camera的全名是Sensor:Vision:Camera,2009.11.28,面向对象的系统分析与设计,包之间的关系引入包后,包中元素被添加到客户包的名空间中。,2009.11.28,面向对象的系统分析与设计,包中元素的可见性可见性分为公共的(+):对引入或访问它所位于包的包及其特殊包可见;私有的(-):包内可见;受保护的(#):只对特殊包可见。引入关系没有传递性Client引入Policy,Policy引入GUI,并不意味着Client引入了GUI。,2009.11.28,面向对象的系统分析与设计,如何划分包语义相近且倾向于一起变化的元素放在一个包里;结构良好的包应该是高内聚、松耦合的。划分包的基本策略:识别底层包;合并包;每个包最好包含72个内层元素。组织包的层次;确定包中元素的可见性;建立包间关系(引入依赖、访问依赖或泛化关系),2009.11.28,面向对象的系统分析与设计,7什么是面向对象设计ObjectOrientedDesign在OOA模型的基础上,考虑与实现系统有关的因素(计算机设备、操作系统、网络、数据库、编程语言),进一步运用OO方法对系统进行设计,产生一个可实现的设计模型即OOD模型。,2009.11.28,面向对象的系统分析与设计,OOD的发展史早期的OOD(80至90年代)不是基于OOA的,多数基于结构化分析的结果直接进行OOD;是OOP(ObjectOrientedProgramming)的延伸,多数OOD方法与编程语言有关;不是纯面向对象的;不是只针对软件周期的设计,通常包含了分析,但又不完善。,2009.11.28,面向对象的系统分析与设计,现今的OOD(90年代至今)从结构化分析识别对象并非良策,应该用OO方法,于是出现了OOA方法;OOA和OOD构成OOABb;B的对象被声明为全局的(即全局可见)。,2009.11.28,面向对象的系统分析与设计,9人机交互部分的设计人如何命令系统,系统如何向用户提交信息;窗口系统XWindow、MS-Windows图形用户界面OSF/Motif、OpenLook可视化开发环境VC+、VB、Delphi、VisualAge,2009.11.28,面向对象的系统分析与设计,设计人员和用户协作设计用户界面的过程,2009.11.28,面向对象的系统分析与设计,人机交互部分的分析人机交互部分的设计不仅包括设计和实现,还包括分析!解决的核心问题:人如何命令系统,系统如何向人提交信息。以用况图为基础,继续分析。,2009.11.28,面向对象的系统分析与设计,分析与系统交互的人员参与者列举所有的人员参与者;对人员参与者进行调查研究;区分人员类型;统计(或估算)出各类人员的比例;了解各类人员的需求;按一定准则进行折中和均衡。,2009.11.28,面向对象的系统分析与设计,从用况分析人机交互用况描述中:参与者的行为和系统行为按时序交替出现;每个段落至少有一个输入或输出语句;有若干纯属参与者或系统自身的行为陈述;可能包含控制语句或括号。,2009.11.28,面向对象的系统分析与设计,从用况描述中提取人机交互的描述,收款(usecase)输入开始本次收款命令:做好收款准备,应收款置0输出提示信息;for顾客挑选的每件商品do输入商品编号;if此商品不止1件then输入商品数量;endif检索商品名称及单价;货架商品数减去售出数;if货架商品数低于下限then,通知供货员上货;endif计算本种商品总价并打印编号、数量、单价及总价;总价累加到应收款上;endfor打印应收款额;输入顾客交款额计算应找回的余款;打印以上两个数目;,2009.11.28,面向对象的系统分析与设计,提取出的人机交互描述,收款(人机交互)输入开始本次收款命令:输出提示信息;for顾客挑选的每件商品do输入商品编号;if此商品不止1件then输入商品数量;endif打印商品编号、数量、单价及总价;endfor打印应收款额;输入顾客交款额打印以上两个数目;,2009.11.28,面向对象的系统分析与设计,人机界面的设计准则易学、易用、操作方便;尽量保持一致性;及时提供有意义的反馈;使用户的注意力集中在当前任务上,而不是在界面上;尽量减少用户的记忆工作;具有语境敏感的帮助功能;减少重复的输入和操作;对用户的操作具有容错性;放置灾难性的错误;其他,2009.11.28,面向对象的系统分析与设计,人机交互的面向对象设计设计输入确定输入设备键盘鼠标属于标准设备,不必考虑;磁卡阅读器、条码阅读器、光电字符识别阅读器等。设计输入界面菜单对话框图标滚动条控制板按钮剪辑板,2009.11.28,面向对象的系统分析与设计,人机交互的面向对象设计设计输出确定输出设备打印机、显示器、绘图仪、文件、数据库表等。确定输出的形式和内容文本、表格、图形、图像、声音、视频片断等。输出步骤的细化用户参与下的分步骤输出。,2009.11.28,面向对象的系统分析与设计,命令的组织系统可能有大量的命令,每个命令可能有大量的参数和任选项;分解将一条含有许多参数和选项的复杂命令分解为若干较简单的命令。组合当系统命令很多时,按功能或所属子系统组合成若干命令组,每组只含几条命令。命令间形成层次结构。,2009.11.28,面向对象的系统分析与设计,基本命令使用一项独立的系统功能的命令。一个用况对应一项独立的系统功能;基本命令就是开始使用该系统功能的命令。命令步在执行一个基本命令的交互过程中,所包含的具体输入步骤。用况中提取的人机交互的各项输入都是命令步。,2009.11.28,面向对象的系统分析与设计,高层命令如果一条命令是在另一条命令的引导下被选用的,则后者成为前者的高层命令。高层命令是对基本命令的组织,相当于一个命令索引目录。高层命令并不涉及某一具体的系统功能,只是显示下一层可选的系统功能,供用户选择。设计方式图标、主菜单条和下拉菜单等。,2009.11.28,面向对象的系统分析与设计,基本命令及其命令步的结构,2009.11.28,面向对象的系统分析与设计,基本命令过多,就需要用高层命令组织。按功能相似性;如高层命令“文件”下,有“创建”、“打开”、“保存”、“关闭”等基本命令。按子系统结构;如“编辑子系统”、“编译子系统”,2009.11.28,面向对象的系统分析与设计,建立命令树,应遵循的策略:使用频繁的命令放在前面,按用户工作步骤排列;在命令中发现“整体-部分”模式,以帮助命令的组织和分块;每层命令的个数应遵循72原则,层次深度尽量控制在3层以内。,2009.11.28,面向对象的系统分析与设计,用面向对象概念表达所有的界面元素以窗口作为基本的类;窗口中,按命令逻辑次序部署所需元素,如菜单、工作区、对话框等;部件元素和窗口是聚合关系;发现窗口类的共性和部件类的共性,定义较一般的窗口类和部件类,形成窗口类间的泛化关系,和部件类之间的泛化关系;,2009.11.28,面向对象的系统分析与设计,用面向对象概念表达所有的界面元素(续)用属性表示窗口或部件的静态特征,如尺寸、位置、颜色等;用操作表示窗口或部件的动态特征,如移动、滚屏等;发现界面类之间的关联;建立界面类和问题域类之间的联系。,2009.11.28,面向对象的系统分析与设计,还应注意:人机界面只负责输入、输出和窗口更新,不含应用逻辑或业务的处理;界面部分的元素向问题域对象发送请求消息,后者给予响应;尽量减少界面部分与问题域部分的耦合。界面易变。,2009.11.28,面向对象的系统分析与设计,10控制驱动部分的设计控制驱动部分是OOD模型的一个组成部分;由系统中全部的主动类构成;每个主动类所创建的一个主动对象是系统中一个控制流的驱动者;控制流是一个在处理机上顺序执行的动作序列;在目前的实现技术中,控制流就是进程或线程;在顺序系统中,只有一个控制流。一个时刻只有一个执行点。,2009.11.28,面向对象的系统分析与设计,很多系统是并发系统,存在不止一个控制流。负责设备的数据采集及控制的系统;多用户系统;有多个子系统并发工作的系统;单处理机上运行的含多进程或线程的系统;多处理机上运行的含多进程或线程的系统;在网络计算机中运行的含多进程的系统。,2009.11.28,面向对象的系统分析与设计,控制流控制流是进程或线程的通称。进程具有一定独立功能的程序的一次执行过程;是处理机和其他资源的分配单位;单处理机上,各进程轮流占用处理机。线程进程内定义的一些能分别占用处理机的执行单位;所有线程竞争整个进程内部提供的所有资源。,2009.11.28,面向对象的系统分析与设计,2009.11.28,面向对象的系统分析与设计,控制流在面向对象方法中,每个独立的控制流被建模为主动对象;该主动对象驱动进程或线程,它是控制流的根;当创建一个主动对象后,其中第1个被执行的操作的执行就开始一个控制流;当撤销这个主动对象时,就终止了相关的控制流,它所代表的进程或线程就终止了。建造多控制流系统,要求正确划分主动对象的控制范围,以及主被动对象间的通信和并发机制。,2009.11.28,面向对象的系统分析与设计,如何设计控制驱动部分识别控制流系统分布方案所要求的多控制流;每个计算机至少一个控制流,即至少一个主动对象。系统的并发需求所要求的多控制流;多任务并行,要求每个任务对应一个控制流;例:统计和销售并行。为方便实现而设立的控制流例:实现计算机与设备通信的控制流,被动唤醒,或定时醒来。,2009.11.28,面向对象的系统分析与设计,识别控制流(续)OOA中定义的主动类为提高性能而增设的控制流为优先完成的任务,单独设立控制流;为非优先完成的任务,也单独设立控制流,以后台进程实现;为紧急任务单独设立控制流。对异常事件的处理实现并行计算为支持多个控制流间交互而设的控制流,2009.11.28,面向对象的系统分析与设计,审查多余的控制流会降低系统效率。不要人为增加控制流。按控制流的高内聚、控制流间的低耦合原则调整控制流之间的职责划分。,2009.11.28,面向对象的系统分析与设计,定义控制流对控制流进行描述和说明;对控制流进行命名;将设计部分中的每个操作指定所属的控制流。确保一个操作只属于一个控制流;若一个操作属于多个控制流,应修改操作;否则,多个控制流执行同一操作,需要同步机制!按事件驱动或时钟驱动,描述控制流的触发条件或事件间隔;描述其他细节。,2009.11.28,面向对象的系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论