第章面向对象设计与实现PPT课件下载推荐.pptx
- 文档编号:15040498
- 上传时间:2022-10-27
- 格式:PPTX
- 页数:123
- 大小:914.38KB
第章面向对象设计与实现PPT课件下载推荐.pptx
《第章面向对象设计与实现PPT课件下载推荐.pptx》由会员分享,可在线阅读,更多相关《第章面向对象设计与实现PPT课件下载推荐.pptx(123页珍藏版)》请在冰豆网上搜索。
integer+findonTitle()+findonid()+findonReservation()create()destroyLoan-id:
integer-borroweddate:
date-returndate:
date-borrowerid:
integercreate()destroybeloanedinaBorrower-borrowerid:
integer-name:
string-borrowednum:
integer-fine:
number+find()create()destroyhashasbereservedinaTitle-bookid:
integer-reservatednum:
integer+finde()create()destroyReservation-reserveddate:
date-noticedate:
integer-isbn:
string+find()create()destroycopyof包图子系统图书流通子系统图书维护子系统信息查询图书流通子系统交互界面管理所有的与外部通信子系统标识图书子系统标识借阅标识借阅者并更新信息对象接口描述对象接口描述接口设计中应该避免涉及接口的具体表示正确的方式是将具体的接口实现方法隐藏起来,只提供对象操作来访问对象和修改数据接口可以用UML中的类图形式来描述UML的格式标记“interface”中必须包含名字部分图书馆系统中借书者的接口interfaceborrowerpublicvoidborrower(intborrowerid,intbookid);
publicvoidsetborrower(intborrowerid);
publicvoidaddload(Loadloaditem);
publicvoidgetload();
publicvoidgetnoload();
publicvoidremoveload();
publicvoidwrite();
publicvoidread();
/borrower11.2构件级设计构件级设计构件级设计定义了数据结构、算法、接口特征和分配给每个软件构件的通信机制。
每个构件的类定义或者处理叙述都转化为一种详细设计。
设计采用图形或基于文本的形式来详细说明内部的数据结构、局部接口细节和处理逻辑。
设计符号包括UML图和一些辅助表示。
通过一系列结构化编程结构来说明程序的设计。
构件类构件类构件是计算机软件中的一个模块化的构造块在OMGUML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。
面向对象的观点:
构件中的每一个类都被详细阐述,包括所有的属性和与其实现相关的操作。
从分析模型开始,详细描述分析类(对于构件而言该类与问题域相关)和基础类(对于构件而言该类为问题域提供了支持性服务)。
传统观点:
模块控制构件,协调问题域中所有其他构件的调用;
问题域构件,完成部分或全部用户的需求;
基础设施构件,负责完成问题域中所需要相关处理的功能。
构件级设计步骤构件级设计步骤步骤1:
标识出所有与问题域相对应的设计类步骤2:
确定所有与基础设施相对应的设计类步骤3:
细化所有不能作为复用构件的设计类在类或构件的协作时说明消息的细节为每一个构件确定适当的接口细化属性并且定义相应的数据类型和数据结构详细描述每个操作中的处理流步骤4:
说明持久性数据源(数据库和文件)并确定管理数据源所需要的类步骤5:
开发并且细化类或构件的行为表示步骤6:
细化部署图以提供额外的实现细节步骤7:
考虑每一个构件级设计表示,并且时刻考虑其他选择基于类的构件设计原则基于类的构件设计原则开关原则(TheOpen-ClosedPrinciple,OCP):
模块应该对外延具有开放性,对修改具有封闭性。
替换原则(SubsitutionPrinciple,SP):
子类可以替换它们的基类。
依赖倒置原则(DependencyInversionPrinciple,DIP):
依赖于抽象、而非具体实现接口分离原则(InterfaceSegregationPrinciple,ISP):
多个用户专用接口比一个通用接口要好。
发布复用等价性原则(ReleaseReuseEquivalencyPrinciple,REP):
复用的粒度就是发布的粒度。
共同封装原则(CommonClosurePrinciple,CCP):
一同变更的类应该和在一起。
共同复用原则(CommonReusePrinciple,CRP):
不能一起复用的类不能被分到一组。
11.3确定并发性系统设计的一个重要目标就是识别必须是并发获得的那些对象和具有互斥获得的对象。
可以将具有互斥获得的对象叠加在单线程控制或任务中。
状态机模型可以帮助我们识别并发性。
如果两个对象在不交互的情况下,在同一时刻可以接受事件,它们就是内在并发的。
如果事件不同步,我们就不能将这两个对象叠加在单线程控制中。
不能将两个内部并发的构件实现成一个独立的硬件单元ATM并发实例分析在ATM机系统中,当银行校验账户或处理银行交易时,ATM机就会闲置。
如果中心计算机直接控制ATM机,可以把ATM对象与银行交易对象合并成单项任务。
将每一个并发子系统分配给一个硬件单元,可以是通用处理器或者是特定的部件。
ATM机本身比较简单,处理的活动基本都是用户界面和一些本地处理,因此单CPU就已经足够。
对于中心计算机,由于要接受多个ATM机的请求,并将请求分配给相应的银行计算机,因此需要多个CPU来解决瓶颈问题。
银行计算机执行数据处理操作,并包含相对简单的数据库应用,可根据所需的吞吐率和可靠性来选择数据库版本。
硬件和软件的选择对于硬件和软件的选择,我们必须确定要用硬件和软件分别实现哪些子系统。
ATM机应用没有迫切的性能需求,通用的计算机就可以满足了。
系统设计必须将不同软件子系统的任务分配给处理器。
给处理器分配任务要考虑特定动作、通信限制和计算限制等。
ATM机系统没有任何通信和计算限制的问题。
如果ATM必须要有自主性,当通信网络出现故障时还可以运行,那么它就必须要有自己的CPU和程序设计。
确定物理部件之间的配置和连接形式确定物理部件之间的配置和连接形式,包括连接拓扑、重复部件和通信。
比如,进程间的通信调用连接的单个操作系统内部的任务,这种调用要比同一个程序中的子程序要慢得多,对于时间要求比较严格的时候是不实用的。
简单的做法是合并任务,运用子程序来建立连接。
ATM机系统中,多个ATM客户机连接到中心计算机,然后路由到相应的银行计算机。
拓扑结构是星型的,中心计算机来仲裁通信。
11.4使用设计模式使用设计模式有经验的软件开发者建立了既有通用原则又有惯用方案的指令系统来指导他们编制软件。
如果以结构化形式对这些问题、解决方案和命名进行描述使其系统化,那么这些原则和习惯用法就可以称为模式。
基于职责设计对象(GeneralResponsibilityAssignmentSoftwarePatterns,GRASP)信息专家、创建者、控制器、高内聚、低耦合、多态、纯虚构、间接性和防止变异GoF(GangofFour)模式23种设计模式,其中基本的有适配器、工厂、单实例类、策略、组合、外观和观察者等模式基于职责的设计基于职责的设计职责驱动设计也即基于职责的设计。
在设计中软件对象具有职责,即对其所作所为进行抽象。
UML把职责定义为“类元的契约或义务”。
就对象的角色而言,职责与对象的义务和行为相关。
职责分为以下两种类型:
对象的行为职责包括:
自身执行一些行为,如创建对象或计算初始化其他对象中的动作控制和协调其他对象中的活动对象的认知职责包括:
对私有封装数据的认知对相关对象的认知对其能够导出或计算的事物得认知职责的粒度会影响职责到类和方法的转换GRASP职责不同于方法,职责是一种抽象,而方法实现了职责。
绘制UML交互图时,就是在决定职责的分配。
通过GRASP中的基本原则来指导如果分配职责给一个对象。
五种基本的GRASP模式:
创建者模式信息专家模式控制器模式低耦合模式高内聚模式职责与方法创建者模式问题:
一个对象由谁(哪个对象)创建?
指导原则是:
将创建一个对象A的职责分配给对象B的条件是B“包含”或组成聚集了A、B记录A、B紧密地使用A或者B具有A初始化数据并且在创建A时会将这些数据传递给A。
简而言之,就是一个对象要由拥有或者使用其信息的、与其有密切关系的另一个已存在的对象创建。
例如在POS机系统中的Sale对象是由那个对象类创建?
对于对象Sale由谁创建,分析一下领域模型就会发现,可以认为Register是记录Sale的类。
因此Register对象是创建Sale对象的合理选择。
POS机系统中谁创建Sale对象信息专家模式信息专家(通常称为专家)模式是最基本的职责分配原则之一。
创建者是对象的行为职责,而信息专家常常指的是对象的认知职责。
给对象分配职责时,应该把职责分配给具有完成该职责所需要信息的那个类。
例如在POS机系统中,销售的总额该如果确定?
决定总额的一些元素应该是属于哪些对象的信息?
按照信息专家的建议,这里应当寻找具有确定总额所需信息的那个对象类。
分析领域模型和设计模型得到,要计算总额应该知道销售的所有SalesLineItem实例及其小计之和。
Sale实例包含了上述信息。
为了确定商品的小计,这里需要SalesLineItem.quantity、和ProductDescription.price。
SalesLineItem知道其数量和与其关联的ProductDescription。
计算销售总额控制器模式根据MVS(ModelViewSeparation)原则,UI对象不应当包含应用逻辑或业务逻辑。
应该把UI层的操作或者请求委派给一个协调者,由协调者把任务转发给领域层的领域对象。
控制器就是这样一个协调者。
例如在POS机系统中,enterItem和endSale这样的系统事件,应使用谁作为控制器?
控制器是UI层之上的第一个对象,它负责接收和处理系统操作消息。
控制器的选择原则是:
代表全部“系统”、“根对象”、运行软件的设备或主要的子系统(如,外观控制器);
代表发生系统操作的用例场景(如,会话控制器)。
在用例场景中发生的系统事件通常命名为Handler、Coordinator或Session。
对于用同一用例场景的所有系统事件使用相同的控制器类。
控制器类低耦合模式低耦合模式是一个评价模式。
低耦合原则适用于软件开发的很多方面,它是构件软件最重要的目标之一。
分配职责以使耦合保持在较低的水平。
在真实世界领域中,Register记录了Payment,所以创建者模式建议将Register作为创建Payment的候选者。
Register实例会把addPayment消息发送给Sale,并把新的Payment作为参数传递给它。
这种职责分配使Register类和Payment类之间产生了耦合,即Re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)