面向对象软件设计课件.ppt
《面向对象软件设计课件.ppt》由会员分享,可在线阅读,更多相关《面向对象软件设计课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、面向对象软件设计,设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。你必须找到相关的对象,以适当的粒度将它们归类,再定义类的接口和继承层次,建立对象之间的基本关系。你的设计应该对手头的问题有针对性,同时对将来的问题和需求也要有足够的通用性。,经验,你也希望避免重复设计或尽可能少做重复设计。有经验的面向对象设计者会告诉你,要一下子就得到复用性和灵活性好的设计,即使不是不可能的至少也是非常困难的。一个设计在最终完成之前常要被复用好几次,而且每一次都有所修改。有经验的面向对象设计者的确能做出良好的设计,而新手则面对众多选择无从下手,总是求助于以前使用过的非面向对象技术。,好的解决方案,
2、内行的设计者知道:不是解决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案。当找到一个好的解决方案,他们会一遍又一遍地使用。这些经验是他们成为内行的部分原因。因此,你会在许多面向对象系统中看到类和相互通信的对象的重复模式。这些模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更好。它们帮助设计者将新的设计建立在以往工作的基础上,复用以往成功的设计方案。,面向对象软件设计的目的,我们都知道设计经验的重要价值。你曾经多少次有过这种感觉你已经解决过了一个问题但就是不能确切知道是在什么地方或怎么解决的?如果你能记起以前问题的细节和怎么解决它的,你就可以复用以前的经验而不需要重新发现
3、它。然而,我们并没有很好记录下可供他人使用的软件设计经验。面向对象软件设计的目的就是将设计经验作为设计模式记录下来。将每一个设计模式系统地命名、解释和评价,展现面向对象系统中重要和重复出现的设计。目标是将设计经验以人们能够有效利用的形式记录下来,将一些最重要的设计模式以编目分类的形式展现出来。,设计模式,设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式帮助你做出有利于系统复用的选择,避免设计损害了系统复用性。通过提供一个显式类和对象作用关系以及它们之间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管
4、理和系统维护的有效性。简而言之,设计模式可以帮助设计者更快更好地完成系统设计。,设计模式定义,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。,一个模式有四个基本要素,1.模式名称(pattern name)一个助记名,它用一两个词来描述模式的问题、解决方案和效果。2.问题(problem)描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。3.解决方案(solution)描述
5、了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。4.效果(consequences)描述了模式应用的效果及使用模式应权衡的问题。,程序设计语言的选择,程序设计语言的选择非常重要,它将影响人们理解问题的出发点。我们的设计模式采用了Smalltalk 和C+层的语言特性,这个选择实际上决定了哪些机制可以方便地实现,而哪些则不能。若采用过程式语言,可能就要包括诸如“继承”、“封装”和“多态”的设计模式。相应地,一些特殊的面向对象语言可以直接支持我们的某些模式。,描述设计模式,怎样描述设计模式呢?图形符号虽然很重要也很有用,却还远远不够,它们只是将设计过程的结果简单记录为类和对象之间的关系
6、。为了达到设计复用,必须同时记录设计产生的决定过程、选择过程和权衡过程。用统一的格式描述设计模式,每一个模式根据模板被分成若干部分。模板具有统一的信息描述结构,有助于更容易地学习、比较和使用设计模式。,模式名和分类,模式名简洁地描述了模式的本质。一个好的名字非常重要,因为它将成为你的设计词汇表中的一部分。意图是回答问题的简单陈述:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题?别名:模式的其他名称。动机:用以说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情景。该情景会帮助你理解随后对模式更抽象的描述。适用性:什么情况下可以使用该设计模式?该模式可用来
7、改进哪些不良设计?你怎样识别这些情况?协作:模式的参与者怎样协作以实现它们的职责。效果:模式怎样支持它的目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变?实现:实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否存在某些特定于实现语言的问题。,寻找合适的对象,面向对象程序由对象组成,对象包括数据和对数据进行操作的过程,过程通常称为方法或操作。对象在收到客户的请求(或消息)后,执行相应的操作。面向对象设计最困难的部分是将系统分解成对象集合。因为要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的
8、。,决定对象的粒度,对象在大小和数目上变化极大。它们能表示下自硬件或上自整个应用的任何事物。,指定对象接口,对象声明的每一个操作指定操作名、作为参数的对象和返回值,这就是所谓的操作的型构。对象操作所定义的所有操作型构的集合被称为该对象的接口(i n t e r f a c e)。对象接口描述了该对象所能接受的全部请求的集合,任何匹配对象接口中型构的请求都可以发送给该对象。,运用复用机制,理解对象、接口、类和继承之类的概念对大多数人来说并不难,问题的关键在于如何运用它们写出灵活的、可复用的软件。,设计应支持变化,为了设计适应变化、且具有健壮性的系统,你必须考虑系统在它的生命周期内会发生怎样的变化
9、。一个不考虑系统变化的设计在将来就有可能需要重新设计。这些变化可能是类的重新定义和实现,修改客户和重新测试。重新设计会影响软件系统的许多方面,并且未曾料到的变化总是代价巨大的。,怎样使用设计模式,1)大致浏览一遍模式特别注意其适用性部分和效果部分,确定它适合你的问题。2)回头研究结构部分、参与者部分和协作部分确保你理解这个模式的类和对象以及它们是怎样关联的。3)看代码示例部分,看看这个模式代码形式的具体例子研究代码将有助于你实现模式。4)选择模式参与者的名字,使它们在应用上下文中有意义设计模式参与者的名字通常过于抽象而不会直接出现在应用中。5)定义类声明它们的接口,建立它们的继承关系,定义代表
10、数据和对象引用的实例变量。识别模式会影响到的你的应用中存在的类,做出相应的修改。6)定义模式中专用于应用的操作名称这里再一次体现出,名字一般依赖于应用。使用与每一个操作相关联的责任和协作作为指导。7)实现执行模式中责任和协作的操作实现部分提供线索指导你进行实现。代码示例部分的例子也能提供帮助。,设计模式的使用限制,,设计模式不能够随意使用。通常通过引入额外的间接层次获得灵活性和可变性的同时,也使设计变得更复杂并/或牺牲了一定的性能。一个设计模式只有当它提供的灵活性是真正需要的时候,才有必要使用。当衡量一个模式的得失时,它的效果部分是最能提供帮助的。,编写需求文档,可以用三种方法编写软件需求规格
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 软件设计 课件
链接地址:https://www.31ppt.com/p-4068083.html