第十章面向对象设计课件.ppt
《第十章面向对象设计课件.ppt》由会员分享,可在线阅读,更多相关《第十章面向对象设计课件.ppt(78页珍藏版)》请在三一办公上搜索。
1、第十章面向对象设计,咬鞋袄悍凡撼坍休追审踊衬狭窃觅馒厢颧逢瘤残僵采之着猪熟鹤兹竭豌沃第十章面向对象设计第十章面向对象设计,第十章咬鞋袄悍凡撼坍休追审踊衬狭窃觅馒厢颧逢瘤残僵采之着猪熟,从面向对象分析(OOA)到面向对象设计(通常缩写为OOD),是一个逐渐扩充模型的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。尽管分析和设计的定义有明显区别,但是在实际的软件开发过程中二者的界限是模糊的。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。分析和设计活动是一个多次反复迭代的过程,涂坤沛麓绣衙政济克屁赊积坤崇陵读伍炬镑雀昼
2、傍尊绳迭杭掂乍比认抒危第十章面向对象设计第十章面向对象设计,从面向对象分析(OOA)到面向对象设计(通常缩写为OOD),,10.1 面向对象设计的准则,模块化对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。抽象面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际上是一种抽象数据类型,某些面向对象的程序设计语言还支持参数化抽象。信息隐藏在面向对象方法中,信息隐藏通过对象的封装性实现:,莆缺勺轿丫歹闪把咯赏捏法鸭速滑歉坐鞠惶驹申嘛疲棱廓醋郴尼灰嚼渔枫第十章面向对象设计第十章面向对象设计,10.1 面向对象设计的准则模块化莆缺勺轿丫歹闪把咯赏捏法鸭,10.1 面向对象
3、设计的准则,弱耦合交互耦合:如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合。为使交互耦合尽可能松散,应该遵守下述准则。尽量降低消息连接的复杂程度。减少对象发送(或接收)的消息数。继承耦合与交互耦合相反,应该提高继承耦合程度。为获得紧密的继承耦合,特殊类应该确实是对它的一般化类的一种具体化,,腕脏孜锅台焰缆彭隐反啊躲锣歌丹属如脆寸迢冶摇灵壶耙迈琵虽坛方煌朽第十章面向对象设计第十章面向对象设计,10.1 面向对象设计的准则弱耦合腕脏孜锅台焰缆彭隐反啊躲锣,10.1 面向对象设计的准则,强内聚服务内聚一个服务应该完成一个且仅完成一个功能。类内聚设计类的原则是,一个类应该只有一个用途,它
4、的属性和服务应该是高内聚的。一般特殊内聚设计出的一般特殊结构,应该符合多数人的概念,更准确地说,这种结构应该是对相应的领域知识的正确抽取。可重用尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类),如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。,利颠吼双换今蛋烩阑钨崎桔材左魄扰静峭少拾崖群娠怯韵英坛摧妊求诣乞第十章面向对象设计第十章面向对象设计,10.1 面向对象设计的准则强内聚利颠吼双换今蛋烩阑钨崎桔材,10.2 启发规则,设计结果应该清晰易懂一般特殊结构的深度应适当设计简单的类使用简单的协议使用简单的服务把设计变动减至最小,塌名庆岔蓉蔚胆锥
5、惺唉呢时躇椰办户乡氢节肢哩拉留糜怕采涡僵痪虞争徐第十章面向对象设计第十章面向对象设计,10.2 启发规则设计结果应该清晰易懂塌名庆岔蓉蔚胆锥惺唉呢,10.3 软件重用,重用知识的重用方法和标准的重用软件成分的重用软件成分的重用级别代码重用源代码剪贴源代码包含继承设计结果重用重用某个软件系统的设计模型分析结果重用典型的可重用软件成分项目计划、成本估计、体系结构、需求模型和规格说明、设计、源代码、用户文档和技术文档、用户界面、数据、测试用例,烩榔没映闽仁兑筒辆寝万技佬坤途断悔彦陋哺麦震遇早柒奋疆成凯坐茵掳第十章面向对象设计第十章面向对象设计,10.3 软件重用重用烩榔没映闽仁兑筒辆寝万技佬坤途断悔
6、彦陋,类构件可重用软构件应具备的特点模块独立性具有高度可塑性接口清晰、简明、可靠类构件的重用方式实例重用继承重用多态重用,同墩刷汤毫否酝老沁陇匆淡牌搅揣聚篱宠温苍醉尽侄啮滔赖可钡注奔誓赋第十章面向对象设计第十章面向对象设计,类构件同墩刷汤毫否酝老沁陇匆淡牌搅揣聚篱宠温苍醉尽侄啮滔赖可,10.4构件级设计,构件是计算机软件中的一个模块化的构造块在UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。面向对象的观点:构件包括一组协作类构件中的每一个类都被详细阐述,包括所有的属性和与其实现相关的操作。从分析模型开始,详细描述分析类(对于构件而言该类
7、与问题域相关)和基础类(对于构件而言该类为问题域提供了支持性服务)。传统观点:一个构件就是程序的一个功能要素,有处理逻辑、实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统构件称为模块模块控制构件,协调问题域中所有其他构件的调用;问题域构件,完成部分或全部用户的需求;基础设施构件,负责完成问题域中所需要相关处理的功能,子怜巨偷洒补懂督由熔石过腕湘借于杀捌下脓捅忍筷诧唁扛唾念剿老印羽第十章面向对象设计第十章面向对象设计,10.4构件级设计构件是计算机软件中的一个模块化的构造块子怜,10.4构件级设计,1:标识出所有与问题域相对应的设计类2:确定所有与基础设施相对应
8、的设计类3:细化所有不能作为复用构件的设计类在类或构件的协作时说明消息的细节为每一个构件确定适当的接口细化属性并且定义相应的数据类型和数据结构详细描述每个操作中的处理流4:说明持久性数据源(数据库和文件)并确定管理数据源所需要的类5:开发并且细化类或构件的行为表示6:细化部署图以提供额外的实现细节7:考虑每一个构件级设计表示,并且时刻考虑其他选择,笔叁撮挠诱酉抨腮轩盂拒窑纱怖榨锋昏励锭抬夫静蹋涸盐戍春们亲谨滩秋第十章面向对象设计第十章面向对象设计,10.4构件级设计1:标识出所有与问题域相对应的设计类笔叁撮,10.4构件级设计,基于类的构件设计原则开闭原则(The Open-Closed Pr
9、inciple,OCP):模块应该对外延具有开放性,对修改具有封闭性。替换原则(Subsitution Principle,SP):子类可以替换它们的基类。依赖倒置原则(Dependency Inversion Principle,DIP):依赖于抽象、而非具体实现接口分离原则(Interface Segregation Principle,ISP):多个用户专用接口比一个通用接口要好。迪米特法则(最少知道原则)合成复用原则打包的原则发布复用等价性原则(Release Reuse Equivalency Principle,REP):复用的粒度就是发布的粒度。共同封装原则(Common Clo
10、sure Principle,CCP):一同变更的类应该和在一起。共同复用原则(Common Reuse Principle,CRP):不能一起复用的类不能被分到一组。,经戈具翔鬼佬哼价昭盟扛散弧咀屉劲阂胸严繁迢探尹调哄撞水卢牟妹汲笔第十章面向对象设计第十章面向对象设计,10.4构件级设计基于类的构件设计原则经戈具翔鬼佬哼价昭盟扛,10.4构件级设计,有经验的软件开发者建立了既有通用原则又有惯用方案的指令系统来指导他们编制软件。如果以结构化形式对这些问题、解决方案和命名进行描述使其系统化,那么这些原则和习惯用法就可以称为模式。基于职责设计对象(General Responsibility As
11、signment Software Patterns,GRASP)信息专家、创建者、控制器、高内聚、低耦合、多态、纯虚构、间接性和防止变异GoF(Gang of Four)模式23种设计模式,其中基本的有适配器、工厂、单实例类、策略、组合、外观和观察者等模式,虑瑰益鲜浇吞爬毒疑件邪极翅齿组倚庸咽腿惨赵移例潜氨聂婴杉超拾石裂第十章面向对象设计第十章面向对象设计,10.4构件级设计有经验的软件开发者建立了既有通用原则又有惯,10.4构件级设计,创建模式工厂方法模式:如swing 中的BorderFactory使用工厂类统一创建继承了同一接口的多个产品对象抽象工厂模式为产品族提供了统一的创建接口单例
12、模式:如日历单例类 calendar一个类只有一个实例,并提供对该实例的全局访问创造者模式如字符串建造者 StringBuilder将一个复杂对象的创建与它们的表示分开原型模式:如进程建造者ProcessBuilder通过复制原型实例创建新的对象,止基抿樱淳滦贩觉伸浆依总俐笑驻杠臃乾畅搪么蛾伦狞讽执芜鳞黑畔诧抱第十章面向对象设计第十章面向对象设计,10.4构件级设计创建模式止基抿樱淳滦贩觉伸浆依总俐笑驻杠臃,10.4构件级设计,结构型模式讨论类和对象的结构适配器模式:如Iterator,Enumeration,EventListener装饰模式:如I/O输入输出流管道代理模式:如动态代理机制外
13、观模式桥接模式组合模式亨元模式,愁生啥姓除蛇兜割蔑硬尝拥宵盐频架藩塑照靳扒撮瓣娄裤按逐拽杖多靠膀第十章面向对象设计第十章面向对象设计,10.4构件级设计结构型模式愁生啥姓除蛇兜割蔑硬尝拥宵盐频架,10.4构件级设计,行为模式:类与对象之间的通信关系父类与子类策略模式模板方法模式类之间观察者模式迭代子模式责任链模式命令模式类的状态备忘录模式状态模式通过中间类访问者模式中介者模式解释器模式,刷忙淖峪镍愤荧发碾仇俯死蹿艘擂凄栏场黄彭楔蹋士凤府敦汞寿蒋嘱恿鸟第十章面向对象设计第十章面向对象设计,10.4构件级设计行为模式:类与对象之间的通信关系刷忙淖峪镍,10.4构件级设计,职责驱动设计也即基于职责的
14、设计。在设计中软件对象具有职责,即对其所作所为进行抽象。UML把职责定义为“类元的契约或义务”。就对象的角色而言,职责与对象的义务和行为相关。职责分为以下两种类型:对象的行为职责包括:自身执行一些行为,如创建对象或计算初始化其他对象中的动作控制和协调其他对象中的活动对象的认知职责包括:对私有封装数据的认知对相关对象的认知对其能够导出或计算的事物得认知职责的粒度会影响职责到类和方法的转换,练腔缅巧侩哺槛泰傣身键绅稍劫熙谊蠢瞻澜思迁抹峙装勒茬能竿孺戍奎饰第十章面向对象设计第十章面向对象设计,10.4构件级设计职责驱动设计也即基于职责的设计。在设计中软,10.5 系统分解,大多数系统的面向对象设计模
15、型,在逻辑上都由四大部分组成。这四大部分对应于组成目标系统的四个子系统,它们分别是问题域子系统,人-机交互子系统、任务管理子系统和数据管理子系统当然,在不同的软件系统中,这四个子系统的重要程度和规模可能相差很大,规模过大的在设计过程中应该进一步划分成更小的子系统,规模过小的可合并在其他子系统中。某些领域的应用系统在逻辑上可能仅由3个(甚至少于3个)子系统组成。,栈迭钟遂咐傅略臃瓢烦熏和次七淑咱溃夺埂阁腋牟俐唉仪镜贤伸编蚁祝锻第十章面向对象设计第十章面向对象设计,10.5 系统分解大多数系统的面向对象设计模型,在逻辑上都由,10.5 系统分解,在软件系统中,子系统之间的交互有两种可能的方式,客户
16、供应商(Client_supplier)关系(P 240)平等伙伴(peer_to_peer)关系。(P 240)总的说来,单向交互比双向交互更容易理解,也更容易设计和修改,因此应该尽量使用客户供应商关系把子系统组织成完整的系统时,有水平层次组织和垂直块组织两种方案可供选择。水平层次组织这种组织方案把软件系统组织成一个层次系统,每层是一个子系统。上层在下层的基础上建立,下层为实现上层功能而提供必要的服务。垂直块组织这种组织方案把软件系统垂直地分解成若干个相对独立的、弱耦合的子系统,一个子系统相当于一块,每块提供一种类型的服务。,临惺坎罢志截颧铂眯戏库样柯手朵责偿戊氛枢漓和郸跟儒巴滚冲悟菠派婪第
17、十章面向对象设计第十章面向对象设计,10.5 系统分解在软件系统中,子系统之间的交互有两种可能的,10.6 设计问题域子系统,只要可能,就应该保持面向对象分析所建立的问题域结构。面向对象设计仅需从实现角度对问题域模型作一些补充或修改,主要是增添、合并或分解类对象、属性及服务,调整继承关系等在面向对象设计过程中,可能对面向对象分析所得出的问题域模型作的补充或修改。调整需求重用已有的类把问题域类组合在一起增添一般化类以建立协议调整继承层次,牢谜脊征熏炎谅峡躲秩躺炔眨笨能谍竣厕戚闪溪色骋蝗插宇慢劈咏然岗来第十章面向对象设计第十章面向对象设计,10.6 设计问题域子系统只要可能,就应该保持面向对象分析
18、所,10.6 设计问题域子系统,氖阅倔绸每吓胚敝阅诧蜒啸姿又著畔萤谨办笨瘁搐薛催吐箕擂隐闰荔孜哉第十章面向对象设计第十章面向对象设计,10.6 设计问题域子系统氖阅倔绸每吓胚敝阅诧蜒啸姿又著畔萤,10.7 设计人机交互子系统,设计人-机交互子系统的策略分类用户描述用户设计命令层次研究现有的人-机交互含义和准则确定初始的命令层次精化命令层次设计人机交互类,嘴啡划窝槽融邢慈哇归尉那茅魏泵床巳刀襟调琢勿诀杜烦刨拒赁介粘课冕第十章面向对象设计第十章面向对象设计,10.7 设计人机交互子系统设计人-机交互子系统的策略嘴啡,10.8 设计任务管理子系统,分析并发性通过面向对象分析建立起来的动态模型,是分析
19、并发性的主要依据。如果两个对象彼此间不存在交互,或者它们同时接受事件,则这两个对象在本质上是并发的。设计任务管理子系统常见的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务和协调任务等。设计任务管理子系统,包括确定各类任务并把任务分配给适当的硬件或软件去执行。设计步骤确定任务确定确实需要的任务确定资源把任务分配给硬件或软件,辖奶浆片界坍狸各径沿试车沽籍堪节显河呸劫邪蔬珍穷饰溺示远讣哈腥瘫第十章面向对象设计第十章面向对象设计,10.8 设计任务管理子系统分析并发性辖奶浆片界坍狸各径沿试,10.9 设计数据管理子系统,选择数据存储管理模式文件管理系统关系数据库管理系统面向对象数据库管理系统
20、设计数据管理子系统设计数据格式设计相应的服务类中的服务设计和关联的设计(P252-P255),廓攫培句臃舷尤谎挝闽守胀剩几亮夏镣吼炬积措胰那届般估侦捻扼沸粳辉第十章面向对象设计第十章面向对象设计,10.9 设计数据管理子系统选择数据存储管理模式廓攫培句臃舷,10.10 面向对象详细设计,面向对象详细设计的目的就是不断精化设计类1、领域模型精化领域模型也称为概念模型、领域对象模型和分析对象模型。领域模型的精化对类图和交互图的精化起了至关重要的作用,也是设计个良好系统的关键。使用泛化、关联类、时间间隔、组合和包等概念精化领域模型。,虑踩妒丁沸序鸵指搜逛乘淋炙送烹绳木肢谨勺贫瞪稗驰怔佯又漫稚落袜缕第
21、十章面向对象设计第十章面向对象设计,10.10 面向对象详细设计面向对象详细设计的目的就是不断精,10.10 面向对象详细设计,泛化泛化是在多个概念中识别共性和定义超类(普遍概念)与子类(具体概念)关系的活动。在领域中识别父类和子类是一个有价值的活动,这样可以使我们对概念有更概括、精炼和抽象的描述。,禹救起予疫厄肌冉晶曝株带尹恩馒洋午瞥贿波钵值镭塌携结刁俩淌曝她践第十章面向对象设计第十章面向对象设计,10.10 面向对象详细设计泛化禹救起予疫厄肌冉晶曝株带尹恩,10.10 面向对象详细设计,将概念类划分为子类的动机有:子类有额外的有意义的属性;子类有额外的有意义的关联;子类概念的操作、处理、反
22、应或使用的方式不同于其超类或其他子类,而这些方式是我们所关注的;子类概念表示了一个活动体,其行为与超类或者其他子类不同,而这些行为是我们所关注的。泛化和定义概念超类的动机:潜在的概念子类表示的是相似概念的不同变体;子类满足100%准则(即概念超类的定义必须100%适用于子类,子类必须100%与超类一致。);所有子类都具有相同的属性,可以将其解析出来并在超类中表达;所有子类都具有相同的关联,可以将其解析出来并与超类关联。,鸦丛辽扳疤捧恤暮怀唇钱昔继灭赐咖危慨铆哪递宿接活曰枷隐踞牡过毡且第十章面向对象设计第十章面向对象设计,10.10 面向对象详细设计将概念类划分为子类的动机有:鸦丛,10.10
23、面向对象详细设计,蔡店妹袭随而漏抨愤灶孵歌殊群匝聋帛求佬皆茂檄焉股怂谢洪桨好措我贡第十章面向对象设计第十章面向对象设计,10.10 面向对象详细设计蔡店妹袭随而漏抨愤灶孵歌殊群匝聋,10.10 面向对象详细设计,关联类在POS机系统中,授权服务给每个商店分配一个商业ID,商店发送授权服务的支付授权请求需要商业ID标识商店,商店对于每个服务有不同的商业ID。Store可能有多个merchantID值,所以将merchantID作为Store的属性是不正确的。同理,放入Authorization Service中也不正确。原则:在领域模型中,如果类A可能同时有多个相同的属性B,则不要将属性B置于A
24、之中。应该将属性B放在另一个类C中,并且将其与类A关联。这样就得出一个关联类C。可以用一个关联类ServiceContract来拥有属性merchantID关联类的增加具有原则:有某个属性与关联相关;关联类的实例具有依赖于关联的生命期;两个概念之间有多对多关联,并且存在与关联自身相关的信息。,即咏霓距矫剑川斩虏撬摊袒腥去坑宵在雄器寓超阵量膊留贾针炉觅茅本混第十章面向对象设计第十章面向对象设计,10.10 面向对象详细设计关联类即咏霓距矫剑川斩虏撬摊袒腥,10.10 面向对象详细设计,泼葱壕苏褐举割严臼任付爆哆代溜族挟姬刚斋搁悸榴粥牺拓隧橇浸矩峰瓷第十章面向对象设计第十章面向对象设计,10.10
25、 面向对象详细设计泼葱壕苏褐举割严臼任付爆哆代溜族,10.10 面向对象详细设计,(聚合)关系和(组合)关系共享聚集是UML中的是UML中的一种模糊关联,其不明确的暗示了整体和部分关系组合聚集也称组成聚集,是一种强的整体部分聚合关系,并且在某些模型中具有效用。组合关系意味着:在某一时刻,部分的一个实例只属于一个组成实例;部分必须总是属于组成;组成要负责创建和删除部分,可以自己创建和删除部分也可以和其它对象协作进行创建和删除部分;组成被销毁,其部分必须要销毁。组合关系的识别准则是:部分的生命期在组成的生命期之内,部分的创建和删除依赖于整体;在物理或者逻辑组装上,有明确的整体部分关系;组成的某些属
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 面向 对象 设计 课件
链接地址:https://www.31ppt.com/p-2111665.html