《软件工程引论教学课件》第6章面向对象设计.ppt
《《软件工程引论教学课件》第6章面向对象设计.ppt》由会员分享,可在线阅读,更多相关《《软件工程引论教学课件》第6章面向对象设计.ppt(76页珍藏版)》请在三一办公上搜索。
1、图:活动图,统一建模语言UML,图:活动图,统一建模语言UML,图:组件图,统一建模语言UML,图:部署图,统一建模语言UML,图:部署图,统一建模语言UML,面向对象的设计,面向对象设计的过程,系统设计,设计系统的体系结构,识别设计元素,定义数据的存储策略,部署子系统,检查系统设计,9,什么是面向对象设计,面向对象的设计(OOD)概述,OOD按实现条件对OOA模型进行调整,并补充几个新的组成部分(也是由对象构成)与实现有关的因素:图形用户界面系统硬件、操作系统及网络数据管理系统其他编程语言、可复用的类库,OOA模型,10,OOA与OOD的关系:,1、从OOA到OOD不是转换;是调整和增补,问
2、题域部分,OOA模型,将OOA模型搬到OOD;进行必要的调整,作为OOD模型的问题域部分;,人机交互部分,数据管理部分,构件部署部分,增补其它部分,成为完整的OOD模型。,控制驱动部分,11,2、采用一致的概念和表示法不存在分析与设计之间的鸿沟,3、有不同的侧重点和不同的策略 OOA主要针对问题域,识别有关的对象以及它们之间的关系,产生一个满足用户需求,独立于实现的OOA模型。OOD主要解决与实现有关的问题,基于OOA模型,针对具体的软、硬件条件(如机器、网络、OS、GUI、DBMS等)产生一个可实现的OOD模型。,OOD模型从两个侧面来描述,OOD模型和过程,从另一侧面观察OOD模型每个部分
3、如何用OO概念表达采用OOA的概念及模型组织方式,从一个侧面观察OOD模型包括几个主要部分一个核心部分加几个外围部分,13,OOD过程模型问题域部分的设计人机交互部分的设计控制流管理部分的设计数据管理部分的设计构件部署部分的设计,前4项不强调次序 每个部分均采用与OOA一致的概念、表示法及活动,但具有自己独特的策略。进行构件部署设计要在其前面四个部分完成后进行。,MiniLibrary:软件体系结构,MiniLibrary:软件体系结构,MiniLibrary:软件体系结构,识别设计元素,识别设计元素,确定设计元素的基本原则,MiniLibrary:识别设计元素,MiniLibrary:识别设
4、计元素,识别子系统接口,数据文件,数据存储策略,关系数据库,面向对象数据库,何时选择文件,数据存储策略,何时选择数据库,何时选择关系数据库,何时选择面向对象数据库,部署图反映了系统中软件和硬件的物理架构,表示系统运行时的处理节点以及节点中组件的配置,部署子系统,MiniLibrary系统的部署图,详细设计需要细化分析和系统设计产生的模型,确定新的设计对象,消除问题域与实现域之间的差距,详细设计,详细设计的主要任务,详细设计模型可以分割成类的集合,通常由单个开发人员实现,详细设计,边界类的设计策略,实体类的设计策略,控制类的设计策略,定义操作,定义操作的过程,定义操作,举例:BorrowerIn
5、fo类,定义属性,定义属性,基本原则,定义属性,在详细设计阶段,状态建模一般只发生在依赖状态展示不同行为的类上,定义状态,在详细设计阶段,需要进一步确定详细的关联关系、依赖关系和聚合关系等,定义关系,不同对象之间的可能连接,在有些情况下,关联关系本身也可能具有属性,可以使用“关联类”将这种关系建模,定义关联类,举例:选课表Schedule与开始课程CourseOffering,33,问题域部分的设计要对OOA结果按实现条件进行补充与调整。即,要继续运用OOA的方法,包括概念、表示法及一部分策略。,问题域部分的设计,不但要根据实现条件进行OOD设计,而且由于需求变化或新发现了错误,也要对OOA的
6、结果进行修改。,34,(1)为复用设计与编程的类而增加结构,如果OOA识别和定义的类是本次开发中新定义的,那么需要进行编程。如果已存在一些可复用的类,而且这些类既有分析、设计时的定义,又有源程序,那么,复用这些类即可提高开发效率与质量。可复用的类可能只是与OOA模型中的类相似,而不是完全相同,因此需对二者进行修改。目标:尽可能使复用成分增多,新开发的成分减少,35,不同程度的复用,当前所需的类的信息比可复用类定义的信息,直接复用 通过继承复用 删除可复用类的多余信息删除多余信息,通过继承而复用,36,步骤:(1)把要复用的类加到问题域,(2)标以“复用”,划掉(或标出)不用的属性与操作(3)建
7、立从复用类到问题域原有的类之间的泛化关系(4)由于问题域的类继承了“复用”类的特征,所以有些属性和操作不需要了划掉。,第四种情况的的具体处理:可复用类定义的信息 当前所需的类的信息,37,把需要频繁交换信息的对象,尽量地放在一台处理机上。增加属性或类,以保存中间结果提高或降低系统的并发度,可能要人为地增加或减少主动对象。合并通讯频繁的类,流速控制器指定流速当前流速流速调节流速探测,合并后,(2)提高性能,38,用聚合关系描述复杂类,帧,显示,39,为编程方便增加底层成分细化对象的分类,例:将几何图形分成多边形、椭圆、扇形等特殊类,几何图形,绘图,40,(3)增加一般类以建立共同协议增加根类:将
8、所有的具有相似协议的类组织在一起 提供通用的协议例如:提供创建、删除、复制等服务增加其他一般类:提供局部通用的协议例如:提供永久存储及恢复功能,41,(4)按编程语言调整继承 起因:OOA强调如实地反映问题域,OOD考虑实现问题,所用语言不支持多继承,甚至不支持继承,多继承模式示例,狭义菱形,广义菱形,42,因为聚合和泛化是不同的概念,这种方法并不是通用的(按定义)。在大多数情况下,需要考虑形成多继承的原因,将本来在特殊类中显式定义的信息离出来,作为部分对象,以原来的一般类作为整体对象。,把多继承调整为单继承,43,方法1:采用聚合,创建“雇主”对象,创建“职员”对象,创建“雇主职员”对象,4
9、4,公司人员,雇主身份,职员身份,1,0.1,0.1,1,45,方法2:压平,公司人员,顾主,职员,顾主职员,问题:有什么缺点?,问题:改成继承?,46,方法3:不支持泛化,顾主,职员,顾主职员,问题:有什么缺点?,47,对多态性的调整,48,供货商,客户,0.*,1.*,供需合同卖方买方.,1,1,供货商,0.*,1.*,把多对多关联转化为一对多关联,(5)对复杂关联的转化并决定关联的实现方式,49,项目,人员,语言,把多元关联转化为二元关联,公司,雇员,*,1.*,工作,薪水,把关联类转化为二元关联,51,对关联进行调整后,要考虑关联的实现方式。(1)聚合 决定在整体类中指出部分类时,是用
10、部分类直接作为整体类中的属性的数据类型,还是把部分类用作指针或对象标识的基类型,再用这样的指针或对象标示定义整体类的属性。如果是组合,最好用第1种方式,否则就需要在程序中保证整体对象与部分对象的生命周期的一致性。,Class AClass B A a;/组合 A*a;/聚合,B的对象管理A的对象组合void combination(),(2)关联 通常,通过在对象中设立指针或对象标识以指向或记录另一端的对象的方法,来实现关联。(1)如果是单向关联,就在源端的类中设立属性,用来标记另一端的类将来创建的对象(2)如果是双向关联,就在两端类中各设立属性,用来标记对方将来创建的对象。(3)如果关联中对
11、方类的多重性是1,那么可在本方设立一个指向对方对象的指针,或设立一个记录对方对象引用的属性。(4)如果对方类的多重性大于1,那么可在本方设立一个指向对方对象的指针集合或引用集合。(5)若关联的某端有角色名,最好把其作为另一端类的属性名,以访问与角色名相邻的类。,1oldest,1.*,0.1,Provider*toProviderproviderSet*head,struct providerSet Provider p;struct providerSet*next;,Consumer oldest,53,(6)调整与完善属性,按照语法:可见性 属性名:类型=初始值 对属性的定义进行完善。每
12、一个属性或者包含单个值,或者包含作为一个整体的密切相关的一组值,若要给出对属性的性质的约束,如“工龄60”或“0英语成绩100”等,也要看语言是否对其直接支持,否则要在算法上考虑如何实现。,为了维护数据的完整性,必须要考虑需要一起更新的多个相关联的数据值。特别是,当基本的数据发生变化时,需要更新导出属性的值。通过下列方法可以做到这一点:1)显式的代码 在更新基本对象属性的操作中插入更新导出属性的代码,使得基本属性与导出属性的值同步。2)批处理性的重计算 当基本数据以批处理的方式改变时,可能在所有的基本数值改变之后,再重新计算所有的导出属性的值。3)触发器 凡是依赖基本属性的属性,都必须将它自己
13、向基本属性注册。当基本属性的值被更新时,由专门设置的触发器更新导出属性的值。,55,(7)构造和优化算法,对于需要设计的操作,要从如下几方面进行详细地定义:(1)按照操作格式:可见性 操作名(参数列表):返回类型 完善操作的定义。(2)从问题域的角度,根据其责任,考虑实现操作的算法,即对象是怎样提供操作的。(3)若操作有前后置条件或不变式,考虑编程语言是否予以支持。若不支持,在操作的方法中要予以实现。(4)建议进一步地分析特定类的对象相关的所有交互图,找出其所有与之相关的消息。一个对象所要响应的每个消息都要由该对象的操作处理,其中的一个操作也可能要使用其他操作。如果类拥有状态图,还可根据内部转
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程引论教学课件 软件工程 引论 教学 课件 面向 对象 设计
链接地址:https://www.31ppt.com/p-5904459.html