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