软件工程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 李爱萍 崔冬华 李东生 ch09

上传人:E**** 文档编号:89450681 上传时间:2019-05-25 格式:PPT 页数:77 大小:1.08MB
返回 下载 相关 举报
软件工程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  李爱萍 崔冬华 李东生 ch09_第1页
第1页 / 共77页
软件工程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  李爱萍 崔冬华 李东生 ch09_第2页
第2页 / 共77页
软件工程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  李爱萍 崔冬华 李东生 ch09_第3页
第3页 / 共77页
软件工程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  李爱萍 崔冬华 李东生 ch09_第4页
第4页 / 共77页
软件工程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  李爱萍 崔冬华 李东生 ch09_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《软件工程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 李爱萍 崔冬华 李东生 ch09》由会员分享,可在线阅读,更多相关《软件工程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 李爱萍 崔冬华 李东生 ch09(77页珍藏版)》请在金锄头文库上搜索。

1、2019年5月25日,第1页,第9章 面向对象方法学,本章内容结构,本章引言 学习目标 教学内容 本章小结 思考和练习 课堂讨论,本章引言,所谓方法学是指组织软件生产过程的一系列方法、技术和规范,是软件开发者长年成功和失败经验的理论性总结。研究方法学的目的是,使后人分享前人的成功,避开前人的失败,把注意力集中在尚未开拓领域的创造性劳动上。但没有放之四海而皆准的方法学,任何方法学都有其局限性,软件开发人员大可不必拘泥于某种特定的方法学。 本章主要包括面向对象的基本概念、面向对象的方法学、面向对象软件工程、面向对象建模工具、统一建模语言UML 及统一软件开发过程RUP 的介绍。,2019年5月25

2、日,第2页,2019年5月25日,第3页,学习目标,熟悉面向对象方法学的发展、特点和不足 理解面向对象软件工程的相关概念 理解和掌握统一建模语言UML的特点、发展及应用 理解和掌握统一软件开发过程RUP的特点和建模方法 了解面向对象软件工程的思路、方法和工具,2019年5月25日,第4页,教学内容,9.1 面向对象方法概述 9.2 面向对象的软件工程 9.3 统一建模语言UML 9.4 统一软件开发过程RUP 概述 9.5 本章小结和习题,2019年5月25日,第5页,9.1 面向对象方法概述,面向对象(Object Oriented,OO)方法学的出发点和基本原则是尽可能模拟人类习惯的思维方

3、式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程。 面向对象的方法学可以用下式来表述: OO = Objects + Classes + Inheritance + Communication with messages 9.1.1 面向对象方法学的发展 9.1.2 面向对象方法学的优点和不足,2019年5月25日,第6页,9.1.1 面向对象方法学的发展,在软件工程领域,面向对象的发展历史大致可以划分为3 个阶段: (1)初期阶段(20 世纪60 年代开始): 由挪威计算中心和奥斯陆大学共同研制Simula 语言 (2)发展阶段(20 世纪80 年代中期到90 年代): 以面向对

4、象程序设计语言C+ 为代表; (3)成熟阶段(20 世纪90 年代以后):OOP-OOA-OOD-面向对象方法( Booch, Coad/Yourdon, OMT ,OOSE, RDD)-UML;,2019年5月25日,第7页,9.1.2 面向对象方法学的优点和不足,面向对象方法学的主要优点: (1)与人类习惯的思维方式一致; (2)软件稳定性好; (3)可重用性好; (4)较易 (5)可维护性好,易于测试开发大型软件产品;,2019年5月25日,第8页,9.1.2 面向对象方法学的优点和不足,面向对象方法学的不足之处: (1)相对面向过程而言比较麻烦,需要写更多的代码。 (2)占用空间比较多

5、,程序效率比较低,如多态等特性会降低性能。 (3)创建对象实例的过程往往是非常耗时的工作,因此一些认为“万事皆对象”的语言对于一些简单类型的操作性能比较低。,2019年5月25日,第9页,9.1.2 面向对象方法学的优点和不足,面向对象方法学的不足之处(续): (4)对系统动态特征表述不充分(主要是整体动态特征),且反映系统整体功能特征的能力较差。如需要一定的软件支持环境,只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化,初学者不易接受、难学。 (5)面向对象方法学4 大特性(抽象、封装、继承和多态)在一定程度上避免了不合理的操作,并能有效地阻止错误的扩散,减轻了维护工作量,

6、但是也加大了测试的难度,给软件测试带来不便。,2019年5月25日,第10页,9.2 面向对象的软件工程,面向对象的软件工程是面向对象方法在软件工程领域的全面应用,从软件工程过程的角度讲,包括了管理、过程和技术3 个方面;,2019年5月25日,第11页,9.2 面向对象的软件工程,从生存周期角度讲,包括OOA, OOD, OOP, OOT, OOSM; 9.2.1 面向对象基本概念 9.2.2 对象、类及类之间关系的分析 9.2.3 典型的面向对象开发方法,2019年5月25日,第12页,9.2.1 面向对象基本概念,面向对象基本概念: 1对象 对象是对问题域中客观存在的事物的抽象,是一组属

7、性和在这些属性上的操作的封装体。 对象包括两大要素:属性(用来描述对象的静态特征)和操作(用来描述对象的动态特征)。 对象的UML 表示符号参见图9.2。,2019年5月25日,第13页,9.2.1 面向对象基本概念,面向对象基本概念(续): 2类 类是具有相同属性和操作的一组相似对象(实体)的集合。 同类的对象具有相同的属性和方法。 UML 中类图的描述通常表示为长方形,其中,长方形又分3 个部分,分别用来表示类的名字、属性(静态)和操作(动态)。 例如,“小汽车”类的UML 类图描 述可以参见图9.3。,2019年5月25日,第14页,9.2.1 面向对象基本概念,3消息 消息是面向对象系

8、统中对象之间交互的途径,是向另外一个对象发出的服务请求,请求对象参与某一处理或回答某一要求的信息,是对象之间建立的一种通信机制。 通常一个消息的关键要素包括消息的发送者、消息的接收者、消息所要求的具体服务及其参数、消息的应答等。 例如,若有已定义的类Circle,定义MyCircle 是Circle 类的一个对象,则语句MyCircle.Show(GREEN)用来表示该对象向系统发送一个要以绿颜色显示自己的消息,其中MyCircle 是发送消息的对象名字,Show 是消息名,GREEN 是消息的参数。,2019年5月25日,第15页,9.2.1 面向对象基本概念,面向对象基本概念: 4封装 封

9、装指把对象的属性和操作结合成一个独立的系统单位,并尽可能隐藏对象的内部细节,又称信息隐藏。 封装的作用有3 个方面: 一是使对象形成接口和实现两个部分; 二是封装的信息隐藏将所声明的功能(行为)与内部实现(细节)分离; 三是封装可以保护对象,避免用户误用;,2019年5月25日,第16页,9.2.2 对象、类及类之间关系的分析,1类与对象的关系 类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。因此,对象又称为是类的一个“实例(Instance)”,类又称为是对象的“模板(Template)” 类是静态的,类的语义和类之间的关系在程序执行之前已经定义,但对象是动态的,在程

10、序执行过程中可以动态地创建和删除对象; 类代表一类抽象的概念或事物,对象是在客观世界中实际存在的类的实例。,2019年5月25日,第17页,2类与类之间的关系 (1)继承(Inheritance) 继承是子类自动地共享父类中定义的数据和方法的机制; 反过来,从子类抽取共同通用的特征形成父类的过程也叫做泛化(Generalization); 继承可以表示类与类、接口与接口之间的继承关系,或类与接口之间的实现关系; 具有继承关系的类之间,既具有共享特性又具有差别或新增部分,并且类之间具有层次结构; 继承具有传递性。,9.2.2 对象、类及类之间关系的分析,2019年5月25日,第18页,2类与类之

11、间的关系 (2)多态性(Polymorphism) 指子类对象可以像父类对象那样使用,它们可以共享一个操作名,然而却有不同的实现方法,换句话说,指在父类中定义的属性或操作被子类继承后可以具有不同的数据类型或表现出不同的行为。 多态性的实现有两种形式: 编译时的多态性; 运行时的多态性。,9.2.2 对象、类及类之间关系的分析,2019年5月25日,第19页,2类与类之间的关系 (3)关联(Association) 关联体现的是两个类之间语义级别的一种强依赖关系,一般是长期性的,而且双方的关系一般是平等的。 关联可以是单向的、双向的。 表现在代码层面,被关联类B 以类的属性形式出现在关联类A 中

12、,也可能是关联类A 引用了一个类型为被关联类B 的全局变量。,9.2.2 对象、类及类之间关系的分析,2类与类之间的关系 (4)依赖(Dependancy) 依赖就是一个类A 使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B 的变化会影响到类A。 表现在代码层面,假如类A 的某个方法中使用了类B,那么就说类A 依赖于类B,它们是依赖关系。类B 在类A 中都是以局部变量的形式存在的。 在UML类图设计中,依赖关系用由类A 指向类B 的带箭头虚线表示,虚线箭头表示依赖,箭头指向被依赖的类,参见图9.10。,2019年5月25日,第20页,9.2.2 对象、类及类之间关

13、系的分析,2019年5月25日,第21页,2类与类之间的关系 (5)实现( Realization ) 实现是用来规定接口和实现接口的类之间的关系,接口是操作的集合,而这些操作就用于规定类或者构件的一种服务。 实现是类和接口之间最常见的一种关系,一个类实现接口(可以是多个)的功能。 在UML中,类与接口之间的 实现关系用带空心三角形的 虚线来表示,参见图9.11。,9.2.2 对象、类及类之间关系的分析,2019年5月25日,第22页,2类与类之间的关系 (6)聚集(Aggregation)与组合(Composition) 表示组成关系的整体和部分类之间的关联又可以细分为聚集和组合。需求描述中

14、的“包含”、“组成”、“分成部分”等词常常意味着存在组成关系。 整体拥有各部分,部分与整体不是相同的生存期,如整体不存在了,部分还存在,称为聚集; 部分与整体具有同样的生存期,如整体不存在了,部分也会随之消失,称为组合。,9.2.2 对象、类及类之间关系的分析,2019年5月25日,第23页,9.2.2 对象、类及类之间关系的分析,(6)聚集(Aggregation)与组合(Composition),关联和聚合(聚集和组合)的区别如下。 关联和聚合在代码层面的表现是一致的,只能从语义级别来区分。关联的两个对象之间一般是平等的,如你是我的朋友,聚集则一般不是平等的,表示一个对象是另一个对象的组成

15、部分。 关联是一种结构化的关系,指一种对象和另一种对象有联系。,2019年5月25日,第24页,2类与类之间的关系(小结) 继承与实现体现的是一种类与类或类与接口之间的纵向关系。 其他4 种(组合、聚集、关联、依赖)表示的是类与类或者类与接口之间的引用、横向关系,是比较难区分的,因这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,四者之间的强弱关系依次为:组合聚集关联依赖。,9.2.2 对象、类及类之间关系的分析,2019年5月25日,第25页,9.2.3 典型的面向对象开发方法,自20 世纪80 年代后期以来,相继出现了多种面向对象开发方法,每种方法都有自己的一套系统分析过程和

16、方法,都有一组可描述过程演进的图形标识,以及能使得软件工程师以一致的方式建立模型的符号体系 本节选择其中几种典型的OO 方法进行简介和比较。,2019年5月25日,第26页,9.2.3 典型的面向对象开发方法,1、 Booch 方法 Booch 最先描述了面向对象软件开发方法的基础问题,对软件的分解更接近人对客观事务的理解,Booch 方法把系统的开发工作分为“微观过程”和“宏观过程”两个部分,参见图9.13。,2019年5月25日,第27页,9.2.3 典型的面向对象开发方法,1、 Booch 方法 Booch 方法所采用的对象模型要素包括封装、模块化、层次类型、并发等,其重要的概念模型是类和对象、类和对象的特征、类和对象之间的关系。使用的图形文档包括6 种:类图、对象图、状态转换图、交互图、模块图和进程图。 Booch 方法的设计部分可分为逻辑设计和物理设计,其中逻辑设计包含类图文件(描述类与类之间的关系)和对象图文件(描述实例和对象间传递信息);物理设计包含模块图文件(描述构件)和进程图文件(描述进程分配处理器的情况),用以描述软件系统结构。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号