欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《软件工程引论教学课件》第6章面向对象设计.ppt

    • 资源ID:5904459       资源大小:1.03MB        全文页数:76页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《软件工程引论教学课件》第6章面向对象设计.ppt

    图:活动图,统一建模语言UML,图:活动图,统一建模语言UML,图:组件图,统一建模语言UML,图:部署图,统一建模语言UML,图:部署图,统一建模语言UML,面向对象的设计,面向对象设计的过程,系统设计,设计系统的体系结构,识别设计元素,定义数据的存储策略,部署子系统,检查系统设计,9,什么是面向对象设计,面向对象的设计(OOD)概述,OOD按实现条件对OOA模型进行调整,并补充几个新的组成部分(也是由对象构成)与实现有关的因素:图形用户界面系统硬件、操作系统及网络数据管理系统其他编程语言、可复用的类库,OOA模型,10,OOA与OOD的关系:,1、从OOA到OOD不是转换;是调整和增补,问题域部分,OOA模型,将OOA模型搬到OOD;进行必要的调整,作为OOD模型的问题域部分;,人机交互部分,数据管理部分,构件部署部分,增补其它部分,成为完整的OOD模型。,控制驱动部分,11,2、采用一致的概念和表示法不存在分析与设计之间的鸿沟,3、有不同的侧重点和不同的策略 OOA主要针对问题域,识别有关的对象以及它们之间的关系,产生一个满足用户需求,独立于实现的OOA模型。OOD主要解决与实现有关的问题,基于OOA模型,针对具体的软、硬件条件(如机器、网络、OS、GUI、DBMS等)产生一个可实现的OOD模型。,OOD模型从两个侧面来描述,OOD模型和过程,从另一侧面观察OOD模型每个部分如何用OO概念表达采用OOA的概念及模型组织方式,从一个侧面观察OOD模型包括几个主要部分一个核心部分加几个外围部分,13,OOD过程模型问题域部分的设计人机交互部分的设计控制流管理部分的设计数据管理部分的设计构件部署部分的设计,前4项不强调次序 每个部分均采用与OOA一致的概念、表示法及活动,但具有自己独特的策略。进行构件部署设计要在其前面四个部分完成后进行。,MiniLibrary:软件体系结构,MiniLibrary:软件体系结构,MiniLibrary:软件体系结构,识别设计元素,识别设计元素,确定设计元素的基本原则,MiniLibrary:识别设计元素,MiniLibrary:识别设计元素,识别子系统接口,数据文件,数据存储策略,关系数据库,面向对象数据库,何时选择文件,数据存储策略,何时选择数据库,何时选择关系数据库,何时选择面向对象数据库,部署图反映了系统中软件和硬件的物理架构,表示系统运行时的处理节点以及节点中组件的配置,部署子系统,MiniLibrary系统的部署图,详细设计需要细化分析和系统设计产生的模型,确定新的设计对象,消除问题域与实现域之间的差距,详细设计,详细设计的主要任务,详细设计模型可以分割成类的集合,通常由单个开发人员实现,详细设计,边界类的设计策略,实体类的设计策略,控制类的设计策略,定义操作,定义操作的过程,定义操作,举例:BorrowerInfo类,定义属性,定义属性,基本原则,定义属性,在详细设计阶段,状态建模一般只发生在依赖状态展示不同行为的类上,定义状态,在详细设计阶段,需要进一步确定详细的关联关系、依赖关系和聚合关系等,定义关系,不同对象之间的可能连接,在有些情况下,关联关系本身也可能具有属性,可以使用“关联类”将这种关系建模,定义关联类,举例:选课表Schedule与开始课程CourseOffering,33,问题域部分的设计要对OOA结果按实现条件进行补充与调整。即,要继续运用OOA的方法,包括概念、表示法及一部分策略。,问题域部分的设计,不但要根据实现条件进行OOD设计,而且由于需求变化或新发现了错误,也要对OOA的结果进行修改。,34,(1)为复用设计与编程的类而增加结构,如果OOA识别和定义的类是本次开发中新定义的,那么需要进行编程。如果已存在一些可复用的类,而且这些类既有分析、设计时的定义,又有源程序,那么,复用这些类即可提高开发效率与质量。可复用的类可能只是与OOA模型中的类相似,而不是完全相同,因此需对二者进行修改。目标:尽可能使复用成分增多,新开发的成分减少,35,不同程度的复用,当前所需的类的信息比可复用类定义的信息,直接复用 通过继承复用 删除可复用类的多余信息删除多余信息,通过继承而复用,36,步骤:(1)把要复用的类加到问题域,(2)标以“复用”,划掉(或标出)不用的属性与操作(3)建立从复用类到问题域原有的类之间的泛化关系(4)由于问题域的类继承了“复用”类的特征,所以有些属性和操作不需要了划掉。,第四种情况的的具体处理:可复用类定义的信息 当前所需的类的信息,37,把需要频繁交换信息的对象,尽量地放在一台处理机上。增加属性或类,以保存中间结果提高或降低系统的并发度,可能要人为地增加或减少主动对象。合并通讯频繁的类,流速控制器指定流速当前流速流速调节流速探测,合并后,(2)提高性能,38,用聚合关系描述复杂类,帧,显示,39,为编程方便增加底层成分细化对象的分类,例:将几何图形分成多边形、椭圆、扇形等特殊类,几何图形,绘图,40,(3)增加一般类以建立共同协议增加根类:将所有的具有相似协议的类组织在一起 提供通用的协议例如:提供创建、删除、复制等服务增加其他一般类:提供局部通用的协议例如:提供永久存储及恢复功能,41,(4)按编程语言调整继承 起因:OOA强调如实地反映问题域,OOD考虑实现问题,所用语言不支持多继承,甚至不支持继承,多继承模式示例,狭义菱形,广义菱形,42,因为聚合和泛化是不同的概念,这种方法并不是通用的(按定义)。在大多数情况下,需要考虑形成多继承的原因,将本来在特殊类中显式定义的信息离出来,作为部分对象,以原来的一般类作为整体对象。,把多继承调整为单继承,43,方法1:采用聚合,创建“雇主”对象,创建“职员”对象,创建“雇主职员”对象,44,公司人员,雇主身份,职员身份,1,0.1,0.1,1,45,方法2:压平,公司人员,顾主,职员,顾主职员,问题:有什么缺点?,问题:改成继承?,46,方法3:不支持泛化,顾主,职员,顾主职员,问题:有什么缺点?,47,对多态性的调整,48,供货商,客户,0.*,1.*,供需合同卖方买方.,1,1,供货商,0.*,1.*,把多对多关联转化为一对多关联,(5)对复杂关联的转化并决定关联的实现方式,49,项目,人员,语言,把多元关联转化为二元关联,公司,雇员,*,1.*,工作,薪水,把关联类转化为二元关联,51,对关联进行调整后,要考虑关联的实现方式。(1)聚合 决定在整体类中指出部分类时,是用部分类直接作为整体类中的属性的数据类型,还是把部分类用作指针或对象标识的基类型,再用这样的指针或对象标示定义整体类的属性。如果是组合,最好用第1种方式,否则就需要在程序中保证整体对象与部分对象的生命周期的一致性。,Class AClass B A a;/组合 A*a;/聚合,B的对象管理A的对象组合void combination(),(2)关联 通常,通过在对象中设立指针或对象标识以指向或记录另一端的对象的方法,来实现关联。(1)如果是单向关联,就在源端的类中设立属性,用来标记另一端的类将来创建的对象(2)如果是双向关联,就在两端类中各设立属性,用来标记对方将来创建的对象。(3)如果关联中对方类的多重性是1,那么可在本方设立一个指向对方对象的指针,或设立一个记录对方对象引用的属性。(4)如果对方类的多重性大于1,那么可在本方设立一个指向对方对象的指针集合或引用集合。(5)若关联的某端有角色名,最好把其作为另一端类的属性名,以访问与角色名相邻的类。,1oldest,1.*,0.1,Provider*toProviderproviderSet*head,struct providerSet Provider p;struct providerSet*next;,Consumer oldest,53,(6)调整与完善属性,按照语法:可见性 属性名:类型=初始值 对属性的定义进行完善。每一个属性或者包含单个值,或者包含作为一个整体的密切相关的一组值,若要给出对属性的性质的约束,如“工龄60”或“0英语成绩100”等,也要看语言是否对其直接支持,否则要在算法上考虑如何实现。,为了维护数据的完整性,必须要考虑需要一起更新的多个相关联的数据值。特别是,当基本的数据发生变化时,需要更新导出属性的值。通过下列方法可以做到这一点:1)显式的代码 在更新基本对象属性的操作中插入更新导出属性的代码,使得基本属性与导出属性的值同步。2)批处理性的重计算 当基本数据以批处理的方式改变时,可能在所有的基本数值改变之后,再重新计算所有的导出属性的值。3)触发器 凡是依赖基本属性的属性,都必须将它自己向基本属性注册。当基本属性的值被更新时,由专门设置的触发器更新导出属性的值。,55,(7)构造和优化算法,对于需要设计的操作,要从如下几方面进行详细地定义:(1)按照操作格式:可见性 操作名(参数列表):返回类型 完善操作的定义。(2)从问题域的角度,根据其责任,考虑实现操作的算法,即对象是怎样提供操作的。(3)若操作有前后置条件或不变式,考虑编程语言是否予以支持。若不支持,在操作的方法中要予以实现。(4)建议进一步地分析特定类的对象相关的所有交互图,找出其所有与之相关的消息。一个对象所要响应的每个消息都要由该对象的操作处理,其中的一个操作也可能要使用其他操作。如果类拥有状态图,还可根据内部转换以及外部转换上的动作,设计算法的详细逻辑。可用自然语言或进行了一定结构化的自然语言描述算法,也可以使用程序框图或活动图描述算法。在算法中还要考虑对例外和特殊情况的处理。如考虑对输入错误、来自中间件或其它软硬件的错误的消息以及其它例外情况的处理。在系统较为复杂或需要处理大批量的数据的情况下,若系统在性能上有要求,就要对系统的体系结构和算法进行优化。,56,(8)决定对象间的可访问性(M)从类A的对象到类B的对象有4种访问性属性可见性:B是A的一个属性(关联、聚合)class A;B b;参数可见性:B的对象是A的一个方法的参数(依赖)A.amethod(B b)/间接地找到一个对象,并赋给b。局部声明可见性:B的对象是在A的一个方法中声明的一个局部变量(依赖)class A:amethod;B b;全局可见性:B的对象在某种程度上全局可见(依赖)声明B的全局实例变量 对于后三种情况而言,从类A到类B间存在着依赖关系,在程序运行期间A的对象与B的对象存在着临时性的连接(临时链),而第一种情况中的链是由从类A到类B间的关联实例化而来的。,57,(9)定义对象实例,在逻辑上,一个类是对一组对象的抽象描述。在物理上,一个类所创建的各对象,要么在内存中(用一个变量记录对象的标识);要么在外存中(把对象保存在一个文件中或一个数据库表中)根据不同的实现条件和实现策略,可以按如下的方式定义对象:(1)用相应的类定义内存中的全局性对象,包括静态声明和动态创建两种方式。可以一次针对一个对象定义一个变量,也可以成批地定义对象。例如,可以定义一个数组,它的每个元素是一个对象变量,以此来成批地定义对象。,Class AClass B A a10;A*a10;,58,(2)当系统需要通过从外存读取数据来创建一个对象时,先创建该对象,再从外存中读取这个对象数据,把数据赋值给对象的相应属性。,按照一定的策略,内存中的永久对象要保存到外存中,请参看数据管理部分。无论那种方式,都需要在OOD文档中加以说明。按如下格式在类描述模板的定义对象部分进行描述:处理机:,;内存对象:(n元数组);外存对象:;,对象属性1属性n,外存,内存,59,(10)其它 在OOD的问题域部分应该根据具体问题考虑使用设计模式。在OOD的问题域部分,还有一些其它需要考虑的问题:考虑加入进行输入数据验证这样的类;考虑加入对来自中间件或其它软硬件的错误进行处理的类;考虑加入对其它例外情况进行处理的类。有些作法是在OOD阶段不把读写属性的操作放在类中,而认为这是一种约定,编程人员能理解。有些作法也不把诸如创建和复制对象这样的操作放在OOD模型中。注意:包容器/集合类(如JAVA的Vector,Hash table),是已经预定义的类库的一部分,一般不在类图中重新定义,可进行引用或继承。不要错把包容器/集合类中方法(如JAVA的find),在其他类中重新定义,可进行引用或继承。,60,控制接口部分,问题域部分,数据管理部分,把人机交互部分作为系统中一个独立的组成部分,进行分析和设计,有利于隔离界面,支持系统的变化对问题域部分的影响.,什么是人机交互部分,人机交互部分的设计,人机交互部分的需求分析,对使用系统的人进行分析以便设计出适合其特点的交互方式和界面表现形式;对人和机器的交互过程进行分析核心问题是人如何命令系统,以及系统如何向人提交信息。,1、分析与系统交互的人人员参与者 人对界面的需求,不仅在于人机交互的内容,而且在于他们对界面表现形式、风格等方面的爱好。前者是客观需求*,对谁都一样;后者是主观需求,因人而异。(1)列举所有的人员参与者(2)调查研究(3)区分人员类型(4)统计(或估算)各类人员的比例(5)了解使用者的主观需求(6)按照一定的准则进行折中与均衡,2、对人和机器的交互过程进行分析 从use case分析人机交互use case的构成 参与者的行为和系统行为按时序出现,形成交叉排列的段落。每个段落至少含有一个输入语句或输出语句;有若干纯属参与者自身或系统自身的行为陈述;可能包含一些控制语句或括号。抽取方法:删除所有与输入、输出无关的语句和不再包含任何内容的控制语句与括号,剩下的就是对一个参与者(人)使用一项系统功能时的人机交互描述。,63,收款员收款(use case)输入开始本次收款的命令;作好收款准备,应收款总数置为0,输出提示信息;for 顾客选购的每种商品 do 输入商品编号;if 此种商品多于一件 then 输入商品数量 end if;检索商品名称及单价;货架商品数减去售出数;if 货架商品数低于下限 then 通知供货员请求上货end if;计算本种商品总价并打印编号、名称、数量、单价、总价;总价累加到应收款总数;end for;打印应收款总数;输入顾客交来的款数;计算应找回的款数,打印以上两个数目,收款数计入账册。(a)一个use case的例子,从use case提取人机交互描述,人机界面的设计准则易学、易用、操作方便 尽量保持一致性 及时提供有意义的反馈 使用户的注意力集中在当前的任务上而不是界面上*尽量减少用户的记忆 具有语境敏感的帮助功能 减少重复的输入和操作*对用户的操作具有容错性,如UNDO防止灾难性的错误*其它:如艺术性、趣味性、风格、视感等,65,一、输入与输出设计(1)输入的细化输入步骤的细化输入设备的选择输入信息表现形式的选择(命令,数据)(2)输出的细化输出步骤的细化输出设备的选择输出信息表现形式的选择,人机界面的OO设计,66,二、命令的组织不受欢迎的命令组织方式:(1)一条命令含有大量的参数和任选项(2)系统有大量命令,不加任何组织和引导基本命令:使用一项独立的系统功能的命令提取后的用况命令步:在执行一条基本命令的交互过程中所包含的具体输入步骤。高层命令:如果一条命令是在另一条命令的引导下被选用的,则后者称作前者的高层命令。命令的组织措施分解与组合(1)分解:将一条含有许多参数和选项的命令分解为若干命令步(2)组合:将基本命令组织成高层命令,从高层命令引向基本命令,67,(a)线性结构,基本命令及其命令步的结构,68,高层命令及其结构,按功能组织:如文件下有:创建、打开、关闭、打印、删除等。按子系统组织:如文本编辑子系统、编译自系统。,69,两层命令之间的输出信息结构,反馈信息,处理结果,提示信息,反馈信息,处理结果,处理结果,提示信息,提示信息,处理结果,提示信息,提示信息,70,反馈信息:需较长时间执行命令*。,处理结果,可能不需要。,提示信息:对下一步可输入的命令的提示。,71,在建立命令树时,应遵循如下策略:把使用最频繁的命令放在前面,按照用户的工作步骤进行排列。在命令中发现整体-部分模式,以帮助对命令的组织与分块。每层命令的个数应遵循7+2原则,命令的层次深度尽量要控制在三层以内。,72,1、选择界面支持系统(窗口系统、图形用户界面、可视化编程环境)2、设计报表及报告.对要生成的报表和报告格式等进行设计。每一种报表或报告应对应于一个类。3、设计诸如安全/登录、设置和业务功能之类的窗口。每一种窗口对应于一个类。4、在窗口中,按照命令的逻辑层次,部署所需要的元素,如菜单、工作区和对话框等。窗口中的部件元素对应窗口类的部分类,部分类与窗口类形成聚合关系。5发现窗口类间的共性以及部件类间的共性,定义较一般的窗口类和部件类,分别形成窗口类间以及部件类间的泛化关系。6.用类的属性表示窗口或部件的静态特征,如尺寸、位置、颜色和选项等。7.用操作表示窗口或部件的动态特征,如选中、移动和滚屏等。有的操作要涉及到问题域中的类。8.发现界面类之间的联系,在其间建立关联。必要时,进一步地绘制用户与系统会话的顺序图。,三、用OO概念表达所有的界面成分*,在可视化的编程环境下,能节省很多界面设计工作,9.建立界面类与问题域类之间的联系。有些界面对象要与问题域中的对象进行通讯,故要对二者之间的通讯进行设计。(a)人机界面只负责输入与输出和窗口更新这样的工作,并把所有面向问题域部分的请求转发给问题域部分,即在界面对象中不应该对业务逻辑进行处理。(b)一种常见的作法是,问题域部分的对象不应该主动发起与界面部分对象之间的通讯,而只能对界面部分对象进行响应,也就是说,只有界面部分的对象才能访问问题域部分的对象。通常把界面对象向问题域部分对象传输的信息或发布命令看作是“请求”,而把从问题域部分对象向界面部分对象传输的信息看作是“回应”或“通知”。(c)尽量减少界面部分与问题域部分的耦合。由于界面是易变的,从易于维护和易于复用的角度出发,问题域部分和界面部分应该是低耦合的。,也可以通过在人机交互部分和问题域部分之间增加控制器或协调类的方式解决这种问题,如可采用下面将要讲述的出版-订阅模式,还有一些相关的模式.,74,例题:出版-订阅模式(观察者模式),解决问题域中的对象 对界面层对象的访问问题。,展示,计算,Observer(观察者)模式用于定义对象间的一对多的依赖关系,当一个对象发生变化并对外发布消息时,所有依赖它的对象都将得到通知并可进行更新。后一句话中的那组对象是观察者,它们要在发布消息的对象中进行登记(订阅),以便在发布消息时能找到它们。该模式也称为发布订阅(Publish-Subscribe)模式。,采用观察者模式,要在发布消息的对象中设立增减观察者对象的操作,对于观察者对象要建立一个统一的用于接收消息的接口。益处:观察者发生变化时,只须在发布消息的对象中增减对象标识即可,而不需进行其他改动,76,Observer模式的通用结构图,

    注意事项

    本文(《软件工程引论教学课件》第6章面向对象设计.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开