软件工程技术与应用案例面向对象的设计思想课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程技术与应用案例面向对象的设计思想课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 技术 应用 案例 面向 对象 设计 思想 课件
- 资源描述:
-
1、软件工程技术与应用案例软件工程技术与应用案例面向对象的设计思想面向对象的设计思想本讲内容UML类图设计权衡面向对象设计的基本概念设计模式怎样解决问题类图类是面向对象技术的基础,是面向对象程序设计的基本单元。类图描述软件系统的静态结构。类图不仅定义了系统中的类,表示了类与类之间的关系(关联、依赖、继承),而且也描述了类的内部结构(类的属性和操作)。类图描述的是系统的一种稳定的静态关系,在系统的整个生命期内都是有效的。UML参考书:Grady Booch,James Rumbaugh,Ivar Jacobson著,The Unified Modeling Language User Guide,机
2、械工业出版社。类图类可以进一步划分为实体类、边界类和控制类。实体类保存系统中的信息。一个实体类的对象对应关系数据库中的一条记录。边界类是系统与用户的接口。用户通过边界类与系统进行交互。控制类协调和控制其他类的对象以实现用例规定的行为,它封装了实现用例行为所需要的事件流。在系统分析阶段,主要考虑的是实体类。在设计和实现阶段,除了对实体类进一步细化之外,还要着重考虑边界类和控制类。UML中类的基本表示方法类的封装性及其表示封装性表现为类成员的可见性。可见性分为公开的(public)、受保护的(protected)和私有的(private)三种。在UML中分别用“+”,“#”和“-”表示。“+”表示
3、完全公开;“#”表示对同一个包中的类公开,对不同包中的类隐藏;“-”表示对外完全隐藏,仅仅对定义该成员的类的内部可见。封装性的表示可见性也被分为:公开的,受保护的,默认的,私有的四类。其中“受保护的”对同一个包的其它类及不在同一个包的子类可见;“默认的”对同一个包的其它类可见。类之间的关系表示类之间的关系可以分为继承和关联,关联可以进一步分为组合、聚集和依赖。UML中继承关系表示如下:类之间关联关系的表示关联用于泛指两个类之间概念上的联系。例如公司类和雇员类之间就存在联系,雇员为公司工作,公司雇佣雇员。在关联关系的两端,可以标注关联约束,还可以标注关联在数量上的对应关系(关联的多重性)。上图说
4、明Employee是因为工作而与Company关联,任何一个雇员只为一个公司工作;Company因为雇佣而与Employee关联,一个公司可以雇佣一个以上(1.*)的雇员。关联关系的细分关联关系可以进一步划分为组合、聚集和依赖。组合关系是一种紧密而稳定的关联关系。如公司与部门是一种组合关联关系,因为如果没有公司,部门也将不存在。有时组合关系也用于描述一个类的对象包含另一个类的确定个数的对象作为成员,例如:一辆汽车包含一台发动机、四个轮胎,则汽车类与发动机类和轮胎类的关系是组合关联关系。关联关系的细分聚集(聚合)关系是一种较为松散的关系。例如:雇员与公司和部门之间的关系不是一种稳定的关系,因为即
5、使公司或者部门不在了,雇员仍然存在,而且公司中雇员的人数不是固定的,雇员可以在部门之间或者公司之间流动。所以雇员与公司和部门之间的关系是聚合关系。在面向对象的程序设计中,聚合关系表现为一个类中声明另一个类的集合变量作为类成员。组合与聚合关系的表示关联关系的细分依赖关系是一种更为松散的关系。例如汽车和加油站的关系就是依赖关系。汽车类依赖加油站类,只有汽车加油时才会与加油站发生关联,而且在哪一个加油站加油也是不固定的。依赖关系中,被依赖的类的对象是依赖类的操作所要使用的一种工具。在面向对象的程序设计中,依赖关系表现为依赖类的某个方法或者函数的参数类型是被依赖类的类型。依赖关系的表示对象图对象是类的
6、实例,对象图描述在某一瞬间系统中存在的对象及对象间的关系。UML中对象的表示对象图对象图示例设计过程中的权衡正确性资源结构工程用法解的完全性和正确性;安全性;容错性处理能力;保密性和鲁棒性。执行效率:时间复杂度、消息数、带宽要求等;空间消耗:包括存储单元、对象、线程、过程、通信通道。处理器等的使用情况;增加的资源,一些随选信息;动态策略,包括公正性、平衡性、稳定性等。模块性:封装、耦合、独立性;可延展性:包括子类、可协调性、可维护性等;可重用性、开放性、可组合性。便携性、可插入性;前后依赖性;互用性;等等。可理解性、简单、高雅;执行中的容错性;与其他软件的共存性;系统可维护性;对开发过程的影响
7、;对开发队伍结构及动态特性的影响;对用户参与的影响;对生产力、时间安排、成本的影响;等等。使用规范;人为因素,如可学习性、恢复能力等;对不断变化的环境的适应性;艺术性;对医学和环境的影响;对社会、经济、政治的影响;等等。设计过程中,针对设计目标约束冲突给出的非功能性需求判断准则。设计模式核心思想核心思想原则:重点解决软件系统的可维护性和复用性问题。普遍的问题基本的问题重现的问题可维护性可维护性好的系统应有的性质:可扩展性容易加入新的性能灵活性代码修改尽量不波及其他模块可插入性容易抽出和加入类传统复用传统的复用代码的剪贴复用算法的复用数据结构的复用程序程序程序程序代码/算法/数据结构可维护性和复
8、用的矛盾传统的复用的风险:影响可扩展性过于僵硬 修改多个软件成分中的复用源代码时,需要独立地修改检测每一拷贝。很难在一个软件系统里加入一个新功能。影响灵活性过于脆弱 对一个地方的修改会导致另一个地方发生故障,难以跟踪代码的变异和使用。模块 A 和 B 同时使用模块 C 的功能。那么当 A 需要 C 增加一个新的行为的时候,B 有可能不需要、甚至不允许 C 增加这个新行为。影响可插入性粘度过高 代码、函数、模块对系统相互依赖,改动意味着破坏原始意图和框架面向对象的可维护性复用面向对象设计的重要语言特性数据抽象继承封装多态性实现了概念和定义的复用,提高系统的可维护性。基本概念接口、类接口(接口(i
9、nterface)interface):对象的操作特征的集合。操作指对象可以处理的所有请求操作的特征包括操作的名称、参数和返回值类:声明对象的类型(Type)包括:变量及其类型的声明方法及其参数的类型声明方法的返还类型声明方法的实现等基本概念接口、类接口和类的区别:接口只描述方法的特征,而不给出方法的实现,接口把方法的特征和实现分割开来。类不仅给出方法的特征,面且给出方法的实现。接口常常代表一个角色(接口常常代表一个角色(role)role),它包装与该角色相关的操作,它包装与该角色相关的操作和属性,而实现这个接口的类使是扮演这个角色的演员。一个和属性,而实现这个接口的类使是扮演这个角色的演员
10、。一个角色可以由不同的演员来演而不同的演员之间除了扮演一个角色可以由不同的演员来演而不同的演员之间除了扮演一个共同的角色之外,并不要求有任何其他的共同之处。共同的角色之外,并不要求有任何其他的共同之处。基本概念接口、类类、类型和对象之间的区别和联系:类(class)定义了一类对象的共性实现,即对象的内部数据与其操作的实现。类型(type)只涉及接口(即对象能作出反应的请求的集合)。类定义了一类对象可执行的操作,也定义了对象的类型。一个对象是一个类的实例,这个对象支持该类定义的接口。基本概念接口、类同一种类型的对象共享接口部分 同一类型接口的对象可以有不同实现,即不同类的对象可以有相同的类型。一
11、个角色可以由不同一个角色可以由不同的演员来演的演员来演一个对象可以有多种类型类型。一个类可以同时实现几个接口。一个演员可以演不同的角色一个演员可以演不同的角色子类型包含(继承)了超类型的接口接口是实现构件可插入性的关键接口是实现构件可插入性的关键。基本概念抽象类抽象类为子类定义通用接口定义通用接口。接口的实现由子类定义的操作完成。可以有实例变量,以及一个或多个构造子(函数、方法)。构造子不能被调用来创建实例,抽象类不可以实例化抽象类不可以实例化。构造子可以被子类调用,所有子类都可以有共有的实现抽象类通常代表一个抽象概念提供一个继承的出发点。由于抽象类不可以实例化,因此一个抽象类一定是用来继承的
12、。基本概念抽象类和接口抽象类和接口的区别抽象类允许实现所有派生类公共的状态和行为。是一种相关相关实体聚集的方式。关注如何设计实现并封装这些具体实体(规定派生类的接口并提供公共的实现),而又可以避免与某些特定于实现的细节相耦合(抽象类的抽象部分)。接口关注实现类的对象的使用使用。实现类的对象为了完成其功能应该有什么样的接口。没有实例变量和构造子(函数)基本概念抽象类的作用用较少的冗余实现一组具有公共状态或行为的对象设计一个接口找出已定义对象的公共状态或行为用一个抽象类实现该接口从这个抽象类派生具有公共状态或行为的对象优点:使实现类更简单,更容易维护。基本概念抽象类和具体类具体类非抽象的类称为具体
13、类,实现由自身完成。具体类可以实例化,给出了一个有逻辑实现的对象模版。具体类不是用来继承的。(可以继承)基本概念抽象类和具体类假设蛋代表抽象,而鸡代表具假设蛋代表抽象,而鸡代表具体。蛋决定鸡的性状,鸡是蛋体。蛋决定鸡的性状,鸡是蛋的的“实现实现”,蛋的类型决定了,蛋的类型决定了鸡的类型。从这个角度来讲,鸡的类型。从这个角度来讲,先有蛋,后有鸡。先有蛋,后有鸡。基本概念继承类继承和接口继承:继承:一个类是另一个类的子类类继承(实现继承):根据某个原有对象的实现来定义另一个新的对象的实现。从已有类继承必要的需求。共享编码和表示方法。共享编码和表示方法。接口继承:是一个类实现了另一个类的一个接口可用
14、一个对象替换另一个对象可用一个对象替换另一个对象。共享类型。共享类型。只继承抽象类。只继承抽象类。基本概念动态插入问题:如何实现具体类的动态插入?如:加入一个新的类,与现有具体类的行为有不同的实现,希望系统能够使用这个新类。1.使用超类继承:在类结构中增加一个超类,声明出子类要提供的行为为这个抽象超类提供多个具体子类,以不同的方法实现了超类所声明的行为。客户端动态地决定使用哪一个具体子类。基本概念动态插入单继承的语言,一个类只能有一个超类。当具体类已经有一个超类,则不可能加上新的超类。加新的超类到已有的超类上面,形成超超类。或者继续向上移动,直到类等级结构的最顶端。具体类超类新超超类新具体类。
展开阅读全文