第1章面向对象技术概述_第1页
第1章面向对象技术概述_第2页
第1章面向对象技术概述_第3页
第1章面向对象技术概述_第4页
第1章面向对象技术概述_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 面向对象技术概述 1.1 软件危机及软件工程 1.2 对软件开发的基本认识1.3 软件的固有复杂性1.4 控制软件复杂性的基本方法1.5 面向对象技术1.6 面向对象分析(OOA)1.7 面向对象设计(OOD)1.1 软件危机及软件工程 1.1.1 软件危机1.1.2 软件工程 1.1.1 软件危机 1946年,世界上第一台电子计算机在美国研制成功。 50年代,软件诞生。 60年代中期到70年代中期,“软件危机” 出现。 1968年,“软件工程” 概念的提出。1.1.1 软件危机软件危机主要表现:软件危机主要表现:开发周期拖后按年计成本超出可多达一个数量级开发生产效率低软件质量难以保证

2、,甚至不能使用系统复杂性远超出人脑直接控制的程度美国丹佛新国际机场1996年的亚特兰大奥运会中,IBM赞助的Info96网络1.1.1 软件危机 6个投入使用,2个被取消。 软件开发时间超时50%。 大型系统中,3/4的系统有运行问题 说明软件问题的重要性、复杂性、困难性说明软件问题的重要性、复杂性、困难性和长期性和长期性 解决问题的两个途径提高个人的能力提高组织的能力1.1.1 软件危机 实现的三种途径 三条途径构成软件工程的三大要素:方法、工具和过程合理分配开发力量改进方法借助软件工具1.1.2 软件工程 软件工程就是包含方法、工具和过程三个要素的软件开发方法,实质就是在软件开发过程中引入

3、过程化的方法 软件工程方法为软件工程提供如何做的技术。系统分析如何做、系统设计如何做、编码如何做。主要的侧重点在于改进技术手段 软件工程的工具为软件工程的方法提供支撑环境 软件工程的过程是把软件工程的方法和工具结合起来,并且整合其他的必要资源,组织起来进行软件开发 软件工程的目的就是要在规定的时间、规定的开发费用内开发出满足用户需求的软件系统1.2 对软件开发的基本认识系统软件系统软件 如操作系统、设备驱动程序等。如操作系统、设备驱动程序等。支撑软件(实用软件)支撑软件(实用软件) 协助用户开发的工具软件,如协助用户开发的工具软件,如编辑程序、程序库、图形软件包等。编辑程序、程序库、图形软件包

4、等。应用软件应用软件 如工程与科学计算软件、如工程与科学计算软件、CAD/CAMCAD/CAM软件、软件、CAICAI软件、信息管理系统等。软件、信息管理系统等。实时处理软件实时处理软件交互式软件交互式软件批处理软件批处理软件项目软件项目软件 由客户委托开发的软件。由客户委托开发的软件。产品软件产品软件 由软件开发机构开发,提供给市场的。由软件开发机构开发,提供给市场的。 生命周期人的生命周期:婴儿、幼儿、儿童、少年、 软件生命周期一个从用户需求开始,经过开发、交付使用,在使用过程中不断增补修订,直至软件报废的全过程。即软件从提出开发开始到最终灭亡所经历的时期软件生命周期示意图可行性研究可行性

5、研究需求分析需求分析概要设计概要设计详细设计详细设计编码编码测试测试使用与维护使用与维护退役退役软件定义软件定义软件开发软件开发维护维护可行性研究和项目开发计划可行性研究和项目开发计划了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性需求分析需求分析确定软件系统必须具备哪些功能概要设计概要设计设计软件系统总体结构、设计全局数据库和数据结构详细设计详细设计细化概要设计所生成的各个模块, 并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块编码编码根据详细设计规格说明书编写源程序测试测试检验软件的各个组成部分是否正确维护维护对使用后的软件进行维护,例

6、如:修正使用过程中发现的错误纠错性维护增加新的功能完善性维护从一个环境搬迁到另一个环境适应性维护1.2 对软件开发的基本认识软件与硬件不同的特点软件与硬件不同的特点表现形式不同生产方式不同产品要求不同维护方式不同大型软件系统的特点大型软件系统的特点开发代价高开发时间长参加开发的人员多软件生命周期长1.2 对软件开发的基本认识需要采用工程的概念、原理、技术和方法,把经过时间考验而证明有效的管理技术和当前能够得到的最好的技术方法结合起来,以指导计算机软件的开发和维护-软件工程软件开发从两个方面刻画软件开发从两个方面刻画软件开发过程软件开发过程涉及到的各种资源 软件过程模型是描述软件开发过程中各种活

7、动如何执行的模型。 也称软件开发模型或软件生存周期模型 典型的软件过程模型有:瀑布模型(瀑布模型(waterfall model)增量模型(增量模型(incremental model)原型模型(原型模型(prototyping model)螺旋模型(螺旋模型(spiral model)喷泉模型(喷泉模型(water fountain modelwater fountain model)1 1 瀑布模型瀑布模型 将软件开发过程模仿阶梯瀑布。将软件开发过程模仿阶梯瀑布。 软件生存周期由立项、需求分析、策划、概软件生存周期由立项、需求分析、策划、概要设计、详细设计、编程、测试、发布、维要设计、详细

8、设计、编程、测试、发布、维护、退役等阶段所组成,把每个阶段当作瀑护、退役等阶段所组成,把每个阶段当作瀑布中的一个台阶。布中的一个台阶。 开发人员按照阶段开发,管理人员按照阶段开发人员按照阶段开发,管理人员按照阶段管理。管理。开发开发时期时期运行运行时期时期计划计划时期时期( (目标与范围说明书目标与范围说明书) )( (可行性论证论告可行性论证论告) )( (维护报告维护报告) )( (测试报告测试报告) )( (程序程序) )( (设计文档设计文档) )( (需求说明书需求说明书) )瀑布模型的特点瀑布模型的特点1.阶段间具有顺序性和依赖性2.推迟实现的观点3.质量保证的观点(文档驱动)每个

9、阶段都必须完成规定的文档每个阶段结束前都要对所完成的文档进行评审瀑布模型的缺点瀑布模型的缺点u模型缺乏灵活性。模型缺乏灵活性。u开发过程一般不能逆转,否则代价太大开发过程一般不能逆转,否则代价太大u规格说明很难理解:规格说明很难理解:“我知道这是按我的要我知道这是按我的要求做的,但不是我想要的样子。求做的,但不是我想要的样子。”u软件的实际情况必须到项目开发的后期客户软件的实际情况必须到项目开发的后期客户才能看到。(文档驱动的两面性)才能看到。(文档驱动的两面性)问题定义问题定义可行性研究可行性研究需求分析需求分析设计设计编码编码测试测试运行与维护运行与维护带反馈的瀑布模型带反馈的瀑布模型2.

10、2.增量模型增量模型 增量模型将软件产品看作一组增量构件,每次设计、增量模型将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件实现、集成、测试和交付一块构件,直到所有构件全部实现为止。全部实现为止。 要开发一个大的软件系统,先开发其中的一个核心要开发一个大的软件系统,先开发其中的一个核心模块,后再开发其他模块,这样一个个模块地增加模块,后再开发其他模块,这样一个个模块地增加上去,直至整个系统开发完毕为止。上去,直至整个系统开发完毕为止。特点:特点: (1) (1) 任务或功能模块驱动,可以分阶段提交产品;任务或功能模块驱动,可以分阶段提交产品; (2) (2)

11、有多个任务单,这些多个任务单的集合,构成有多个任务单,这些多个任务单的集合,构成项目的一个总任务书项目的一个总任务书( (总用户需求报告总用户需求报告) )。增量模型项目日历时间项目日历时间软软件件功功能能性性和和特特征征1 12 23 34 45 5第第2 2次增量发布次增量发布增量增量2 21 12 23 34 45 5第第n n次增量发布次增量发布增量增量n n1 12 23 34 45 5第第1 1次增量发布次增量发布增量增量1 15 5部署(发布,反馈)部署(发布,反馈)4 4构造(编码,测试)构造(编码,测试)3 3建模(分析,设计)建模(分析,设计)2 2计划计划1 1交流交流增

12、量模型增量模型模型的缺点:模型的缺点: 若软件系统的组装和拆卸性不强,或开发人员全局若软件系统的组装和拆卸性不强,或开发人员全局把握水平不高或者客户不同意分阶段提交产品,或把握水平不高或者客户不同意分阶段提交产品,或者开发人员过剩,都不宜采用这种模型。者开发人员过剩,都不宜采用这种模型。模型的优点:模型的优点:u每个阶段交付一个可用的产品每个阶段交付一个可用的产品u减少一个全新产品给客户带来的心理上的影响减少一个全新产品给客户带来的心理上的影响u分阶段地交付产品不需要大的资金支出分阶段地交付产品不需要大的资金支出u需求经常变化,增量模型的灵活性使其具有更加需求经常变化,增量模型的灵活性使其具有

13、更加优越的适用性优越的适用性3.3.原型模型原型模型 以某个软件原型为参照模型的开发方法,叫做原型以某个软件原型为参照模型的开发方法,叫做原型法。法。 在初步需求分析之后,马上向客户展示一个软件产在初步需求分析之后,马上向客户展示一个软件产品原型,让客户试用,在试用中收集客户意见,修品原型,让客户试用,在试用中收集客户意见,修改原型,再让客户试用,反复循环,直到客户确认改原型,再让客户试用,反复循环,直到客户确认为止。为止。特点:特点:原型驱动。因此,开发者必须先有一个原型,原型驱动。因此,开发者必须先有一个原型,至少要有一个原型的核心。至少要有一个原型的核心。与迭代模型比较:与迭代模型比较:

14、相同点是反复循环几次,直到客户相同点是反复循环几次,直到客户确认为止。不同点是原型模型事先有一个展示性的确认为止。不同点是原型模型事先有一个展示性的产品原型,而迭代模型可能没有。产品原型,而迭代模型可能没有。部署交付和反馈部署交付和反馈构建原型构建原型交流交流快速设计方式建模快速设计方式建模快速计划快速计划原型模型原型模型原型模型原型模型模型的缺点:模型的缺点: 因为事先有一个展示性的产品原型,所以在一定因为事先有一个展示性的产品原型,所以在一定程度上,不利于开发人员的创新。程度上,不利于开发人员的创新。 是瀑布模型和演化模型的结合,并增加了是瀑布模型和演化模型的结合,并增加了风风险分析险分析

15、 螺旋模型沿着螺线旋转,在四个象限上分别螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:表达四个方面的活动,即:制定计划制定计划:确定软件目标,选定实施方案,:确定软件目标,选定实施方案,弄清项目开发的限制条件弄清项目开发的限制条件风险分析风险分析:评价所选的方案,识别风险,消:评价所选的方案,识别风险,消除风险除风险工程实施工程实施:实施软件开发,验证工作产品:实施软件开发,验证工作产品客户评估客户评估:评价开发工作,提出修正建议:评价开发工作,提出修正建议4.螺旋模型 螺旋模型螺旋模型模型的优点:模型的优点:u容易确定什么时候已经对某一阶段的产品充分测试完毕u维护和开发之间没

16、有什么本质上的差别模型的缺点:模型的缺点:u仅适合于大型软件u风险驱动既是优点也是缺点分分 析析系统系统 设计设计软件软件 设计设计实实 现现喷泉模型用于面向对象的软件开发项目。克服瀑布模型不支持软件用于面向对象的软件开发项目。克服瀑布模型不支持软件重用和多项开发活动集成的局限性,使开发过程具有迭代性和重用和多项开发活动集成的局限性,使开发过程具有迭代性和无间隙性。无间隙性。 特点:特点: 、开发过程有分析、系统设计、软件设开发过程有分析、系统设计、软件设计和实现计和实现4个阶段。个阶段。、各阶段相互重叠,它反映了软件过程、各阶段相互重叠,它反映了软件过程并行性的特点。并行性的特点。 、以分析

17、为基础,资源消耗成塔型。、以分析为基础,资源消耗成塔型。、反映了软件过程迭代性的自然特性,、反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。从高层返回低层无资源消耗。 、强调增量开发,整个过程是一个迭代、强调增量开发,整个过程是一个迭代的逐步提炼的过程。的逐步提炼的过程。 1.3 软件的固有复杂性复杂性的原因软件的复杂性和计算机体系结构有关软件开发是人的智力活动,软件系统从本质上来说是由许多相互联系的概念组成软件系统中各元素之间的相互作用关系具有不确定性软件系统面临不断变化的压力和需要满足不同用户的工作方式和习惯的压力规模较大的软件系统的生命周期一般都超过相应硬件系统的生命周期1.3

18、 软件的固有复杂性 软件设计面临的困难要多软件固有的复杂性与一些传统的工程领域不同,软件设计没有完整的理论作指导,软件开发过程具有巨大的自由性1.4 控制软件复杂性的基本方法1. 分解分解 2. 抽象抽象 抽取系统中的基本特性而忽略非基本特性,从而理解和控制复杂的系统3. 模块化模块化4. 信息隐蔽(封装)信息隐蔽(封装)提高软件的可维护性,使软件的部分对整体的影响减少。隐蔽内部细节,降低软件复杂性 是一种面向数据流的开发方法,它的基本原则是功能是一种面向数据流的开发方法,它的基本原则是功能的分解与抽象。的分解与抽象。结构化方法总的指导思想是自顶向下、逐步求精。结构化方法总的指导思想是自顶向下

19、、逐步求精。包括:包括: SA结构化分析方法;结构化分析方法; SD结构化设计方法;结构化设计方法; SP结构化程序设计方法结构化程序设计方法。1.5 面向对象技术 对象对象对象对象数据函数和过程1.5 面向对象技术二、面向对象方法二、面向对象方法 基本思想:对问题进行自然分割,以更接近人类思维的方式建立问题域模型,从而使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性,能适应用户需求的变化 对象对象对象对象数据函数和过程面向对象的基本概念面向对象技术的基本观点面向对象技术的基本观点: 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。

20、 把所有对象都划分成各种类,每个类都具有相同的特征和方法。特征描述对象的状态信息,类中定义的方法是允许施加于该类对象上的操作。 按照派生类与基类的关系,把若干个对象类组成一个层次结构的系统。 对象彼此之间仅能通过传递消息互相联系。 面向对象的基本概念1. 对象对象(object) 对象是指一组属性以及这组属性上的专用操对象是指一组属性以及这组属性上的专用操作的封装体。作的封装体。 属性属性(attribute)通常是一些数据,有时它)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只属性值,表示该对象的

21、状态。对象中的属性只能通过该对象所提供的操作来存取或修改。能通过该对象所提供的操作来存取或修改。 操作操作(operation)(也称方法或服务)规)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务。定了对象的行为,表示对象所能提供的服务。 一个对象的实例图解 封装(encapsulation) 封装是面向对象方法的一个重要原则。封装是面向对象方法的一个重要原则。封装就是把对象的属性和方法结合成一个独立封装就是把对象的属性和方法结合成一个独立的系统单位,并尽可能地隐蔽对象的内部细节的系统单位,并尽可能地隐蔽对象的内部细节封装使一个对象形成两个部分:接口和实现封装使一个对象形成两个部分

22、:接口和实现 封装的目的是使对象的使用者和生产者分离,封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。使对象的定义和实现分开。封装提供了两种保护:封装提供了两种保护: 保护对象防止用户直接存取对象的内部细节 保护客户端防止对象实现部分的变化影响客户端。2. 类类(class) 类是一组具有相同属性和相同操作的对象的类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个集合。一个类中的每个对象都是这个类的一个实例(实例(instance)。)。 类是创建对象的模板,从同一个类实例化的类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为。每个

23、对象都具有相同的结构和行为。 类和对象的关系:抽象与具体的关系。类和对象的关系:抽象与具体的关系。 轿轿 车车型号:字符串型号:字符串颜色:字符串颜色:字符串牌照号:字符串牌照号:字符串张经理的轿车张经理的轿车型号型号= =桑塔纳桑塔纳颜色颜色= =红色红色牌照号牌照号= =沪沪AN2037AN2037类类实例对象实例对象3. 继承继承(inheritance) 继承性是面向对象程序设计语言不同于其他语继承性是面向对象程序设计语言不同于其他语言的最主要特点。言的最主要特点。 继承是指子类可以自动拥有父类的全部属性与继承是指子类可以自动拥有父类的全部属性与操作的机制。操作的机制。 继承是类间的基

24、本关系,它是基于层次关系的不继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。同类共享数据和操作的一种机制。 父类中定义了其所有子类的公共属性和操作,父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。(或祖先类)中的操作重新定义其实现方法。 继承增加了软件重用的机会,降低软件开发和维继承增加了软件重用的机会,降低软件开发和维护的费用。护的费用。 矩形矩形长长宽宽

25、对角线对角线计算面积计算面积计算对角线计算对角线 多边形多边形顶点数顶点数顶点坐标顶点坐标计算面积计算面积旋转旋转交通工具交通工具飞行器飞行器汽汽 车车 船船轿轿 车车货货 车车 一般一般- -特殊关系特殊关系 如果一个子类只有唯一一个父类,这个继如果一个子类只有唯一一个父类,这个继承称为承称为单一继承单一继承。如果一个子类有一个以上的。如果一个子类有一个以上的父类,这种继承称为父类,这种继承称为多重继承多重继承。 水上交通工具水上交通工具 陆上交通工具陆上交通工具 水陆两栖交通工具水陆两栖交通工具多重继承多重继承4. 消息消息(message) 消息传递是对象间通信消息传递是对象间通信的手段

26、,一个对象通过向另的手段,一个对象通过向另一个对象发送消息来请求其一个对象发送消息来请求其服务。服务。 消息消息(接收对象名接收对象名,调用的调用的操作名操作名,适当的参数适当的参数) 面向对象方法的一个原面向对象方法的一个原则就是通过消息进行对象之则就是通过消息进行对象之间的通信。间的通信。状态:李伟状态:李伟 25 计算机系计算机系 讲师讲师操作:调工资操作:调工资 评职称评职称 受受 聘聘李伟,调工资(李伟,调工资( )人事处向对象发消息人事处向对象发消息对象:李伟对象:李伟5. 多态性多态性(polymorphism) 多态性是指同一个操作作用于不同的对象上可多态性是指同一个操作作用于

27、不同的对象上可以有不同的解释,并产生不同的执行结果。以有不同的解释,并产生不同的执行结果。 相同操作的消息发送给不同的对象时,每个对相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。而产生不同的结果。 多态性分为两种:多态性分为两种: (1)编译时的多态性。编译时的多态性。 (2)运行时的多态性。运行时的多态性。 1.6 面向对象分析(OOA) 面向对象分析OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型 OOA的基本任务

28、 运用面向对象的方法,对问题域和系统责任进行分析和理解,找出描述它们的类和对象,定义其属性和操作,及其结构、静态联系和动态联系。OOA面临的问题1、问题域和系统责任问题问题域(problem domain) 被开发系统的应用领域。系统责任(system responsibilities) 所开发的系统应具备的职能。2、交流问题(各类人员之间的要求)3、需求的不断变化(用户、竞争因素、经费、技术因素)基于UML的面向对象分析1、获取用户基本需求、获取用户基本需求 用户与开发者之间进行充分交流,常用User case来收集和描述用户的需求。即先标识使用该系统的不同的行为者(actor)。 行为者所

29、提出的每个使用场景(或功能)称为一个用例,所有的用例则构成完整的系统需求。2、标识类和对象标识类与对象是一致的。在确定系统的用例后,可标识类及类的属性和操作。从问题域或用例描述入手,发现对象。对象形式:外部实体 、事物、发生的事件、角色、组织单位、场所、构造物等确定最终对象确定原则:需要保留的信息,需要的服务,具有多个属性,具有公共属性及操作。标识属性可从问题的陈述中或通过对类的理解而标识出属性。定义操作操作定义了对象的行为并以某种方式修改对象的属性。操作分为:对数据的操作,计算操作,控制操作。3、定义类的结构和层次类的结构有:一般一般特殊特殊 (generalization - specializ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论