《06第六章面向对象设计方法软件工程教案海南大学(共15章).ppt》由会员分享,可在线阅读,更多相关《06第六章面向对象设计方法软件工程教案海南大学(共15章).ppt(113页珍藏版)》请在三一办公上搜索。
1、软件工程(第二版)齐治昌、谭庆平、宁洪 编著 高等教育出版社,主讲:陈明锐 教授,省级精品课程,第六章 面向对象设计方法,面向对象设计概述系统设计对象设计领域对象设计,面向对象设计概述,与传统的结构化设计相比:相同点:将需求分析模型转变为软件设计模型不同点:OOA和OOD之间没有明显界限 OOA和OOD都是迭代过程,开发过程模型,瀑布式分析设计编程,开发过程模型,螺旋式分析,原型开发,风险管理设计,原型开发,风险管理编程,原型开发,风险管理,开发过程模型,增量式少量的分析少量的设计重复,面向对象设计的步骤,面向对象设计过程的步骤 1.系统设计 系统整体结构的设计 2.对象设计 对OOA模型中类
2、/对象模型的具体化和细化 3.消息设计 从对象关系模型,设计出消息模型 4.设计模型复审,结构化方法中软件设计的基本原理在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关的新特点,从而具体化为面向对象设计准则。,OOD遵循的原则,OOD遵循的原则,(一)模块化对象就是模块,把数据和方法结合在一起(二)抽象过程抽象数据抽象参数化抽象(某些PDL),OOD遵循的原则,(一)模块化对象就是模块,把数据和方法结合在一起(二)抽象过程抽象数据抽象参数化抽象(某些PDL),OOD遵循的原则,(三)信息隐藏通过对象的封装性实现(四)弱耦合降低交互耦合提高继承耦合,信息隐藏的实例,信息隐藏的实
3、例,OOD遵循的原则,(五)强内聚服务内聚类内聚一般-特殊内聚(六)可重用尽量使用已有的类创建新类时,考虑将来的可重用性,(一)模块化面向对象软件开发模式,很自然地支持了把系统分解成模块的设计原理:类就是模块。它是把数据结构和对数据的操作紧密地结合在一起所构成的模块。,面向对象设计的的原则详解,(二)抽象面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(即协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类实例中包含的数据进行操作。使用者无须知道这些操作符的实现算法和类中数据元素的具体表示方法,就可以通过这些操
4、作符使用类中定义的数据。通常把这类抽象称为规格说明抽象。,(三)信息隐藏在面向对象方法中,信息隐藏通过对象的封装来实现。对于用户来说,类中的属性的表示方法和操作的实现算法都应该是隐藏的。,(四)弱耦合结构化方法中耦合是指在系统中的各个模块之间的相互连接或相互依赖的强度。在面向对象方法中,耦合主要指不同对象之间通过消息相互关联的紧密程度。应该遵守下列准则使这种耦合尽量松散:,1.尽量降低消息连接的复杂程度。应该尽量减少消息中包含的参数个数,降低参数的复杂程度。2.减少对象发送(或接收)的消息数。,(五)强内聚内聚用于描述系统内组成部分中各元素彼此结合的紧密程度,应尽量避免低内聚。在面向对象设计中
5、,从三个层次来考察内聚性。1.单个方法的内聚性:方法是指操作的实现过程,一个操作由一个或多个方法实现。对方法的内聚性的评价与结构化设计中的相同,具有高内聚的方法应当只执行一个功能。,2.类的内聚性:设计类的原则是,一个类应该只有一个用途,类中的属性和操作应该全都是完成该类的任务所必需的,其中不包括无用的属性和操作。如果某个类有多个用途,通常应该把它分解成多个专用的类。3.层次结构的内聚性:对象之间通过继承关系而构成的层次结构,特殊类应该确实是对它的一般化类的一种具体化。如果一个派生类摒弃了它基类的许多属性和服务,那就是一个低内聚的。,(六)可重用软件重用是提高软件开发生产率和目标系统质量的重要
6、途径。重用基本上从设计开始。重用有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,以及以往开发类似系统是创建的类);二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。,用例,对象-关 系模型,CRC索引卡片,属性、,子 系 统 设 计,类及对象设计,消息设计,责任设计,分析模型,设计模型,操作、,协作者,对象-行为模型,将OO分析模型转换为OO设计模型,OOD的四个层次:,子系统层:包含每个子系统的表示类和对象层:包含类层次和每个对象 的设计表示消息层:包含使得每个对象能够和其 协作者通信的细节,建立系 统的外部和内部接口责任层:包含针对每个对象的所有
7、属性 和操作的数据结构和算法的设计,用例图类 图交互图状态图,方法描述:if A then Calculate Sales Tax Calculate Total Amount End if,设计带方法的类图,由OO分析模型转换到OO设计模型,包图,系统内部,保险单,包图示例,客户,保险单填写界面,数据库界面(abstract),Oracle界面,Sybase界面,客户支持系统,客户维护子系统,包图示例,库存管理子系统,订单输入子系统,目录维护子系统,订单执行子系统,客户支持系统,包括设计类的包图示例,客户维护子系统,订单输入子系统,目录维护子系统,订单执行子系统,客户,目录,包,订单条目,订
8、单交易,订单,退货条目,发运人,运输,Fichman和Kemerer提出的10种设计建模成分模块层次的表示数据定义规约过程逻辑的规约端到端处理序列的指明对象状态和变迁的表示类及层次的定义操作到类的赋予详细的操作定义消息连接的规约排它服务的标识,结构化方法所不支持的,6.2系统设计过程,划分子系统;确定需要并发运行的子系统并为它们分配处理器;描述子系统之间的通信;确定系统资源的管理和控制;确定人机交互构件;选择实现数据管理和任务管理的基本策略。,系统设计的四种主要子系统(组件),1.问题域直接负责实现客户需求的子系统2.人机交互实现用户界面的子系统(包括可复用的GUI子系统)3.任务管理负责控制
9、和协调并发任务的子 系统,任务可能被包装在一个 子系统中或不同的子系统间;4.数据管理负责对象的存储和检索的子系统,系统组成观点的OOD模型,主体层,结构层,属性层,服务层,问题域 部分(PDC),人机交互部分(HIC),任务管理部分(TMC),数据管理部分(DMC),OOD阶段建立,OOA 阶段模型修改,OOD由四个活动组成:,类及对象层,1.问题域部分(PDC)的设计概述,OOA的模型直接放到OOD的问题域部,OOD阶段对OOA结果进行改动和增补。根据需求变化,对OOA产生模型的类与对象、结构、属性、操作进行组合与分解,增加必要的类、属性和关系。,对OOA结果加以增补要考虑的因素,重用设计
10、把问题域专用类组合在一起通过增添一般类而建立协议调整继承的支持级别改进性能增加低层的类和对象,2.人机交互部分(HIC)的设计概述,虽然好的人机交互部分不可能挽救一个功能很差的软件,但性能很差的人机交互部分将使一个功能很强的产品变的不可接受!,3.任务管理部分(TMC)的设计概述,为什么要有任务管理部分?系统中有许多并发行为时,需要按照各个行为的协调和通信关系,划分各种任务(进程),简化并发行为的设计和编码。根据动态模型分析、定义并发性;选择软件实现的控制方法。,怎样设计任务管理部分?任务管理主要包括任务的选择和调整识别事件驱动任务识别时钟驱动任务识别优先任务和关键任务识别协调者审查每个任务定
11、义每个任务,3.任务管理部分(TMC)的设计概述,4.数据管理部分(DMC)的设计概述,数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响(不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式。)如何设计数据管理部分(1)数据存放方法设计(2)相应服务的设计 为每个需存储其对象的类增加一个属性和服务,6.2.2 子系统设计问题(领)域部分,子系统描述实现客户需求的组件实现客户需求所必需的支持环境子系统可看作高层次的模块,通过外部接口与系统通信子系统来源OOA模型中的类、关系和行为的映射,问题域子系统(PDC)的设计,一般来说,基于问题域的总体组织框
12、架是长时间保持稳定的(当然,细节是会变的,这里加一个类说明,那里加一个属性或服务)。例如银行储蓄系统中分行、终端、储户这个组织结构会长期保持稳定,虽然如储户的属性可能会发生变化。正是基于这种稳定,面向对象的分析和设计模型按问题域本身的样子来组织系统,也能从容适应变化的需求,能保持稳定性。,OOD中,OOA的结果恰好就是OOD的问题域部分。这也正是面向对象的设计和分析方法的一个最优良的特点。但是可能要作些改动,这种改动不是否定OOA的分析结果,而是完善。,这些改动基于以下几个原因:(1)由于需求的变化;(2)分析员对问题域的理解可能有误解或欠缺,需要对此加以修正;(3)分析与设计毕竟是性质不同的
13、两类开发工作,分析可以而且应该与具体实现无关,而设计在很大程度上受具体实现环境的约束。,对OOA的改动准则(一)依照面向对象设计的准则审核每个类优秀的设计能够权衡各种因素,从而使得系统在其整个生命周期中的总开销最小。对大多数软件系统而言,60%以上的软件费用都用于软件维护,因此,优秀软件设计的一个主要特点就是容易维护。在问题域系统中,仔细对照面向对象设计的准则,审查OOA中的每个类。,(二)重用设计和编程的类根据需要重用现成的类,现成类是已用OO语言或非OO语言编写的可用源程序。例如图(a)是OOA结果中有一个类“交通工具”,设计者发现有一个类似的现成类“交通工具1”(图(b),那么他就可以按
14、以下步骤重用现成类(图(c)。,PDC中重用类例子,(三)通过增添超类而建立协议将问题域许多不同的类聚集在一起,这时可建立一个新的父类超类,将这许多类作为该超类的子类。这样一方面有助于改进模型的可理解性,同时可以在超类中给出一个公共的协议,用来与其它子系统或与外部系统部件进行通信。通信的细节在子类中定义。,(四)考虑语言调整继承支持级别如果OOA模型依赖于多重继承而设计者发现最终用于实现系统的程序设计语言只能支持单继承或不具备继承机制。这时就需要修改原来的类层次结构。(五)修改设计以提高性能如果开发的系统在执行速度上要求严格,我们就需对问题域部分加以修改,例如合并那些消息频繁连接的类。,例:银
15、行储蓄系统的PDC储蓄系统中,为了提高整个系统的性能,增加“终端控制器”来控制和协调柜员及终端的所有动作,它和“事务”对象协同工作;此外,增加了“事务记录器”,用一个独立的对象记录柜员的操作过程,当需要时能复查柜员的操作过程。以下是银行储蓄系统的PDC部分,为简单起见,以简单的类表示方式描述。,储户,帐户,事务,1+,1+,1+,1+,1+,存款事务,取款事务,总行,分行,储蓄所,1+,柜员,终端控制器,事务记录器,银行储蓄系统的PDC,终端,1+,1+,1+,确定子系统需要考虑的问题,哪个子系统负责什么客户需求?OOA中定义的对象分配到哪个子系统 中?哪些子系统必须并发运行,以及由什么系统构
16、件协调和控制它们?全局资源如何被子系统管理?,划分子系统时应考虑的原则,模块化、独立性、信息隐藏等等同一个子系统的类是否拥有共同特性?同一个子系统的类是否具有相同的目的?同一个子系统的类是否提供相似的服务类型?同一个子系统的类之间是否具有高耦合性?,组织系统的两种方案,水平层次组织上层在下层的基础上建立,下层为上层提供必要的服务垂直块状组织把软件系统垂直地分解成若干个相对独立、弱耦合的子系统,典型应用系统的组织结构,纠正课本错误:P128,例6.1P129,例6.2,处理并发操作,并发的对象(子系统)从对象行为模型中查找分析同时异步作用于同一事件处理方案将并发子系统分配到不同处理器将并发子系统
17、分配到同一处理器并由系统提供同步控制,描述子系统间的通信,子系统协作模型客户/服务器端对端,客户端子系统,端子系统,服务器端子系统,端子系统,请求,请求,请求,合约,合约,确定子系统间交互方式的步骤,列出所有可能接收到的请求,按子系统组织这些请求,并在一个或多个合约中定义对每个合约,列出完成每个请求所需的操作,将操作和子系统内的特定类相关联对每个合约创建子系统协作表(P130),资源管理构件,多个子系统竞争共享资源为每个资源设置一个“保护者对象”保护者对象控制对资源的访问协调对资源请求的冲突,6.2.3 人机交互设计(HIC),OOA阶段通过用例图给出了用户和系统的交互情况,确定了人机交互的属
18、性和外部服务OOD阶段给出有关人机交互的所有系统成分,人机交互设计(HIC),分类分析用户特点,设计不同界面增加用户界面专用的类和对象利用快速原型演示,改进界面设计,对任何一个系统来说,良好的界面是保证其成功的基本条件。面向对象方法在设计阶段考虑HIC,目的是在开发OOA模型时集中对问题的分析,可以避免了依赖于实现的细节,如窗口和屏幕等。OOD中将用户界面技术从系统其它部分分离出来,目的是如果将来决定该改变用户的界面,那么只需修改HIC类,而系统的其它部分可以保持不变。HIC包括屏幕、报告、调制解调器连接、网络接口、控制面板(如按钮、指示灯和仪表等)。,人机交互设计的策略,分类用户描述用户设计
19、命令层次设计详细的交互设计人机交互的类设计原型,策略1:分类用户,分类的原则按技能层次分类按职务分类按不同组的成员身份分类,策略2:描述用户,用户类型使用系统欲达到的目的特性关键的成功因素技能水平完成本职工作的脚本,策略3:设计命令层次,研究现有的人-机交互含义和准则确定初始的命令层次优化命令层次,为用户设计命令形式,研究现有的人机交互含义和准则。如果在微机上使用,现在windows已成了微机上图形用户界面事实上工业标准,应该仔细研究。同时结合本系统与用户的特点,设计出最友好的人机界面。,策略4:设计详细的交互,为每一个命令设计详细的交互,在设计交互过程中要遵循以下规则:一致性(一致的术语、一
20、致的步骤、一致的活动)操作步骤少趣味浓,有吸引力(不要“哑播放”)提供撤销命令最大限度减少记忆易学易董,策略5:设计人机交互的类,人机交互类的设计很大程度上依赖于所用的操作系统和编程语言。例如在windows环境下,从主窗口和部件的人机交互开始,以分类或组装的结构设计出各层的窗口类,每个类中封装了菜单条、下拉菜单、弹出菜单的定义;定义了用来创建菜单、加亮选择项、引用相应的响应所需的服务、所有的物理对话、窗口的实际显示。设计人员可以重用现成的类,例如Visual C+语言提供的MFC类库。,策略6:设计原型,在对人机交互部分的设计中,有时设计人机交互原型是非常必要的。这样,用户可对提出的交互活动
21、进行体验和操作,从而找出不足。这对于完善交互设计系统起到了监督和促进作用,使将来设计的界面更令人满意。,例:银行储蓄系统的HIC,下图是储蓄系统的HIC,由各种窗口组成,实际上,每个窗口对象可以进一步分解为各种文本域、选择按钮、图符等。当然如果有现成的构成GUI的类库,那么可以直接利用,只需提供合适的参数就行。,例:银行储蓄系统的HIC,银行系统窗口,存款窗口,取款窗口,初次存款窗口,一般存款窗口,事务窗口,验卡窗口,验密码窗口,6.2.4 任务管理(TMC)设计,功能:负责控制和协调并发任务的子系统重要工作:分析并发性设计任务管理子系统,分析并发性,来源:OOA中建立起来的动态模型并发对象两
22、个对象彼此间不存在交互两个对象同时接受事件控制线:是一条遍及状态图集合的路径,在这条路径上每次只有一个对象是活动的任务:是进程的别名,用于实现控制线,并发行为的处理,不同的任务标识了必须同时发生的不同行为处理方案在不同处理器上实现在单个处理器上利用多任务操作系统仿真实现,有的系统中存在着许多并发行为,例如银行储蓄系统中,每个时刻多个柜员同时都在请求系统处理着各项事务,因此存在着许多并发行为。当系统中有许多并发行为时,需要依照各个行为的协调和通信关系,划分各种任务,以简化并发行为的设计和编码。任务是进程的别称,是执行一系列活动的一段程序。不同的任务标识了同时发生的不同行为。这种并发行为既可以在不
23、同的处理器上实现,也可以在单个处理器上利用中断机制实现。,任务管理主要包括任务的选择和调整,为此,在任务管理子系统中需要标识一些新类,这些类建立以后将主要负责处理并发问题、中断、操作系统一级的调度以及有关特定平台的一些问题。正如HIC所做那样,TMC把有关特定平台的处理机制与系统其它部分隔离开来。这样,如果决定将系统移植到另一个平台,那么只需替换TMC的类就可以了。,设计任务管理子系统的策略,确定任务的特性定义一个协调者任务和与之关联的对象集成其他任务和协调者,设计任务管理子系统的步骤,1、识别事件驱动任务通常负责与设备,其他处理器或其他系统的通信工作流程:任务处于睡眠状态,等待事件;一旦接到
24、事件触发的中断就唤醒改任务,接收数据并执行相应的操作;该任务重新回到睡眠状态。有些任务是事件驱动的,而事件常常是当数据到来时发出一个信号。在系统运行时,这种任务的工作过程是:任务睡眠(不消耗CPU时间),等待一个来自数据线或其它数据源的中断;当接到中断时,任务唤醒,接收数据并把数据放入内存缓冲区或其它目的地,通知需要知道这件事的对象;然后该任务又回到睡眠状态。,设计任务管理子系统的步骤,2、识别时钟驱动任务按特定的时间间隔被触发去进行某些处理工作流程:任务设置一个唤醒时间,然后去睡眠;任务睡眠,等待来自系统的一个时间中断;当接收到这个中断后,任务醒来,进行必要处理;该任务重新回到睡眠状态。例如
25、某些设备需要周期性地获得数据;某些人机界面、子系统、任务、处理机或与其它系统需要周期性的通信。在这些场合往往需要使用时钟驱动型任务。,设计任务管理子系统的步骤,3、识别关键任务、优先任务和协调者关键任务:对整个系统成败起重要作用的任务 这类处理通常都有严格的可靠性要求。在设计过程中可能用额外的任务把这类关键处理分离出来,以满足高可靠性处理的要求。对高可靠性处理应该精心设计和编码,并且应严格测试。,设计任务管理子系统的步骤,3、识别关键任务、优先任务和协调者优先任务:根据需要调节实时处理的优先级次序 系统中,对每个任务的时间要求不同,可以通过设置优先级来安排各个任务。某些操作必须在很强的时间限制
26、内完成,应该把它分离成独立的任务,设置高优先级,执行时优先执行。,设计任务管理子系统的步骤,3、识别关键任务、优先任务和协调者协调者:用于管理和协调其他任务的任务可增加的任务 当有三个或更多的任务时,应当增加一个附加任务,起协调者的作用。进一步仔细分析和选择每个确实需要的任务,应该使系统中包含的任务数尽量少。,设计任务管理子系统的步骤,4、定义任务说明任务:为任务命名,并简要说明该任务如何协调任务:定义每个任务如何协调工作是事件驱动还是时钟驱动?对于事件驱动的任务,描述触发该任务的事件;对于时钟驱动的任务,描述在触发之前所经过的时间间隔如何通信:定义每个任务如何通信任务从哪里去数据?任务往哪里
27、送数据?,例:银行储蓄系统的(TMC)任务管理设计,下图中,储蓄系统中,通过读卡器将存折的帐号读入,密码也由储户从密码输入器输入,那么可以设计两个任务,“读卡中断”、“密码中断”分别接收读卡器的数据和密码输入器的数据。,中断,读卡中断,密码中断,读卡器和密码输入器如何接收数据的过程被封装在相应“读卡中断”和“密码中断”类中,接收数据之后,将它进行相应的处理并送到有关的对象中。图86以读卡为例,表明了银行储蓄系统中TMC、PDC、HIC之间如何工作。银行储蓄系统中TMC、PDC、HIC相互隔离,每一子系统内部的信息对系统其它部分是隐藏的,它们相互之间通过消息进行联系。,银行系统TMC的“读卡中断
28、”平常处于睡眠状态,当读卡器开始工作时,“读卡中断”被唤醒,获得数据,向PDC的“分行”类发送消息,要求检验帐号,“分行”类接收消息后,执行相应的服务,将结果发给HIC的“验卡窗口”类,“验卡窗口”类接到消息,将相应的检验结果以一定的方式显示在屏幕上。,很明显,在这个过程中,需要做许多工作。但这样做的好处是:提高系统的可维护性和可修改性,系统只需要修改一小部分就能适应一个新的环境。例如读卡器的读卡方式发生变化或验卡窗口的显示方式发生变化,只需修改相应的读卡中断或验卡窗口而不影响系统其它部分。,HIC(人机交互)、PDC(问题域)、TMC(任务管理)的联系,6.2.5 数据管理设计(DMC),将
29、目标软件系统中依赖开发平台的数据存取部分与其他功能分离,使数据存取可通过一般的数据管理系统实现 当系统中的数据需要长期保存时,需要对数据管理进行设计。设置DMC部分的主要原因,和OOD的其它部分一样,将特定的数据库管理技术与其它部分隔离开来,避免数据存储管理模式的改变对系统的影响。,选择数据存储管理模式,文件管理系统关系数据库管理系统面向对象数据库管理系统扩展的关系数据库管理系统增加了抽象数据类型和继承机制,还增加了创建和管理类和对象的通用服务扩展的面向对象程序设计语言增加了在数据库中存储和管理对象的机制“永久对象”,设计数据格式,文件系统定义第一范式表为每个第一范式表定义一个文件测量性能和需
30、要的存储容量修改原设计的第一范式,以满足性能和存储需求 关系模式的规范化“第几范式”请参考有关“数据库原理”的书,设计数据格式,关系型数据库管理系统定义第三范式表为每个第三范式表定义一个数据库表测量性能和需要的存储容量修改原设计的第三范式,以满足性能和存储需求,设计相应的操作,对于对象需要存储的类,应增加一个属性和操作属性:说明对象所属类操作:说明对象如何存储自己隐式地在对象的定义中说明,文件系统,被存储的对象需要知道:打开哪个(些)文件,怎样把文件定位到正确的记录上,怎样检索出旧值,怎样用现有值更新定义ObjectServer类通知对象保存自身检索存储的对象,关系型数据库管理系统,被存储的对
31、象需要知道:访问哪些数据库表,怎样访问所需要的行,怎样更新定义ObjectServer(对象服务器)类通知对象保存自身检索存储的对象,面向对象数据库管理系统,扩展的关系数据库途径使用关系数据库管理系统相同的方法扩展的面向对象程序设计语言途径无须增加操作,总之,分析是提取和整理用户需求,并建立问题域精确模型的过程。设计则把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计是一个逐渐扩充模型的过程。OOD扩充、完善和细化OOA模型。为简化系统,同时考虑了每一次变动使系统的修改程度最小,将OOD分成了四个子系统:PDC、HIC、TMC、DMC。,可以
32、说,面向对象设计就是用面向对象观点建立求解域模型的过程。尽管分析和设计的定义有明显区别,但是在实际的软件开发过程中两者的界限是模糊的。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。因此,分析和设计是一个多次反复迭代的过程。,6.3 对象设计,系统设计相当于大楼的建筑平面图,规定了每个房间的用途,以及房间与房间之间、房间与外部环境之间的连接机制。对象设计着重于每个房间的内部细节。对象设计的主要任务是:定义对象完整的接口协议描述 设计对象内部结构实现描述 算法设计 重组与优化 程序构件与接口 系统分析确定了问题域对象,以及它们之间的关
33、系、相关的属性、操作。系统设计确定了子系统和大多数重要的求解域对象。对象设计要精细这些对象(这里的对象包括子系统),并可能定义其他的求解域对象。,6.3 对象设计,在对象设计过程中将分析模型转换为设计模型,对象描述,在OOA阶段的对象模型基础上,有对象间的接口(消息)入手,从实现的角度详细描述对象的各个方面1、协议描述2、实现描述,1、协议描述,定义对象可以接收的每个消息和当对象接收到消息后完成的相关操作来建立对象的接口对拥有很多消息的大型系统,还可以创建消息类别例:课本P134,例6.4,2、实现描述,对象接收到某个消息后所执行的操作的实现细节的描述包含信息(1)类对象的名字的定义(2)私有
34、数据结构的数据项和类型的定义(3)每个操作的过程描述或执行这样的过程描述的指针例:课本P135,例6.5,算法设计,数据结构和算法并行地设计类的操作(1)以某种方式操纵数据的操作(2)执行计算的操作(3)为控制事件出现监控对象的操作例:课本P136,例6.6或其他,对象模型的优化,复审对象-关系模型以保证已实现的设计对资源使用高效并容易实现;优化属性数据结构和对应的操作算法以提高处理效率创建新的属性以存放导出的信息,以避免重复计算,程序构件和接口,体现模块化的重要手段描述对象整体结构以及对象和其它构件相互的连接,6.4 领域对象设计,设计目的-支持软件复用OOA阶段已经建立领域分析模型OOD阶
35、段从实现角度对领域模型作一些补充或修改,1.调整需求,两种情况用户需求或外部环境可能会发生变化系统分析员可能对领域理解不透彻或缺乏领域专家帮助简单地修改OOA结果,再把这些修改反映到领域对象设计中,2.复用已有的组件,选择有可能被复用的已有类,尽量复用那些能使无用的属性和服务降到最低程度的类在被复用的已有类和领域类之间添加归纳关系标出领域类中从已有类继承来的属性和服务,无需再在领域类内定义修改与领域类相关的关联,必要时改为与被复用的已有类相关的关联,3.引入父类,分组管理领域类,引入根类把领域类组合在一起提高软件结构的清晰度,便于在类库中组织管理相关类,支持软件复用,4.添加一般化类以建立协议,引入附加父类标识存在的共性,提供所有公共操作的协议,5.调整OOA模型,对于只支持单继承的语言,将多重继承结构平板化合并相互通信频繁的类或对象在类和对象中增加某些属性或专门设置一些低级类用于保存中间结果,领域对象的设计模板,目的:识别系统共性使用设计模板的两种方法继承复合原则:复合优先于继承,设计复审,是否遵循软件设计原理对OOA所作修改是否合理是否满足需求的变化,作 业,习 题 P1421.2.3.另:将原来各小组的面向对象分析模型利用面向对象设计方法进行设计(不提交),
链接地址:https://www.31ppt.com/p-2218145.html