软件工程第五章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程第五章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第五 课件
- 资源描述:
-
1、 第5章 面向对象软件工程 内容提要内容提要5.1 面向对象软件工程方法简介5.2 面向对象分析5.3 面向对象的设计5.4 统一建模语言UML 5.5 用例分析实例5.6 软件复用技术面向对象软件工程面向对象软件工程 在软件的开发和设计中,对一个系统的认识是一个逐在软件的开发和设计中,对一个系统的认识是一个逐步完善的过程,是在积累了以往知识的基础上,多次迭代步完善的过程,是在积累了以往知识的基础上,多次迭代后形成的。在这种逐步深化的过程中,有从一般到特殊的后形成的。在这种逐步深化的过程中,有从一般到特殊的演绎和从特殊到一般的归纳。传统的用于分析、设计和实演绎和从特殊到一般的归纳。传统的用于分
2、析、设计和实现一个系统的过程和方法大部分是瀑布型的,即后一步的现一个系统的过程和方法大部分是瀑布型的,即后一步的工作依赖于前一步工作的完成。因此,越接近系统设计的工作依赖于前一步工作的完成。因此,越接近系统设计的后期,对系统设计的前期结果要做修改就会越困难。而一后期,对系统设计的前期结果要做修改就会越困难。而一般地,只有在系统设计的后期才会发现前期工作所形成的般地,只有在系统设计的后期才会发现前期工作所形成的一些差错。所以当系统越大,问题越复杂时,这种因对系一些差错。所以当系统越大,问题越复杂时,这种因对系统的认识过程和对系统的设计或实现过程不一致而引起的统的认识过程和对系统的设计或实现过程不
3、一致而引起的困扰就会越大。困扰就会越大。面向对象软件工程面向对象软件工程 为了解决这个问题,就应使分析、设计和实现一个系为了解决这个问题,就应使分析、设计和实现一个系统的方法尽可能一致,使描述问题和解决问题的空间尽可统的方法尽可能一致,使描述问题和解决问题的空间尽可能一致,使分析、设计和实现系统的方法学原理与认识客能一致,使分析、设计和实现系统的方法学原理与认识客观世界的过程尽可能一致。这就是面向对象方法学的出发观世界的过程尽可能一致。这就是面向对象方法学的出发点和所追求的基本原则。点和所追求的基本原则。.1面向对象软件工程方法简介 面向对象软件工程方法简介 5.1 面向对象软件工程方法简介面
4、向对象软件工程方法简介 5.1.1 面向对象方法概述面向对象方法概述 近几年,面向对象方法已经深入到计算机科学技术的近几年,面向对象方法已经深入到计算机科学技术的许多领域,应用相当广泛,因此很难清晰地描述它的作用许多领域,应用相当广泛,因此很难清晰地描述它的作用范围。范围。20世纪世纪80年代初期,人们认为,面向对象是一种新年代初期,人们认为,面向对象是一种新兴的程序设计方法,其基本思想是使用对象、类、继承、兴的程序设计方法,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。自封装、消息等基本概念来进行程序设计。自20世纪世纪80年代年代后期以来,面向对象方法已经深入到计算机
5、软件领域的几后期以来,面向对象方法已经深入到计算机软件领域的几乎所有分支,远远超过了程序设计语言和编程技术的范畴。乎所有分支,远远超过了程序设计语言和编程技术的范畴。同时,也深入到了计算机软件设计以外的一些领域。同时,也深入到了计算机软件设计以外的一些领域。面向对象软件工程方法简介 但从目前看,面向对象方法最主要的应用范围仍然是但从目前看,面向对象方法最主要的应用范围仍然是软件开发,它在软件生命周期的各个阶段(包括分析、设软件开发,它在软件生命周期的各个阶段(包括分析、设计、编程、测试与维护)以及它所涉及的各个领域(如人计、编程、测试与维护)以及它所涉及的各个领域(如人机界面、数据库、软件复用
6、、形式化软件方法和机界面、数据库、软件复用、形式化软件方法和CASE工具工具等),都已经形成或正在形成面向对象的理论与技术体系。等),都已经形成或正在形成面向对象的理论与技术体系。面向对象不仅是软件开发的技术与策略,而且是一整面向对象不仅是软件开发的技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解的工具,是一种运用对象、类、继来研究问题并进行求解的工具,是一种运用对象、类、继承、封装、聚合、消息传送和多态性等概念来构造系统的承、封装、聚合、消息传送和多态性等概念来构造系统的软件开发方法。软件开发方法。
7、面向对象软件工程方法简介 面向对象方法的基本思想是面向对象方法的基本思想是:从现实世界中客观存在的从现实世界中客观存在的事物出发来构造软件系统,并在系统构建中尽可能运用人事物出发来构造软件系统,并在系统构建中尽可能运用人类的自然思维方式。面向对象方法的主要特点如下类的自然思维方式。面向对象方法的主要特点如下:从客观存在的事物出发来构造软件系统,用对象作为从客观存在的事物出发来构造软件系统,用对象作为这些事物的抽象表示,并以此作为系统的基本构成单位。这些事物的抽象表示,并以此作为系统的基本构成单位。事物的静态特征(一些可用数据表示的特征)用对象事物的静态特征(一些可用数据表示的特征)用对象的属性
8、来表示,动态特征(即事物的行为)用对象的服务的属性来表示,动态特征(即事物的行为)用对象的服务(或操作)来表示。(或操作)来表示。对象的属性和服务结合为一个独立的实体,对外屏蔽对象的属性和服务结合为一个独立的实体,对外屏蔽其内部细节,称为封装。其内部细节,称为封装。把具有相同属性和相同服务的对象归为一类,类是这把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。些对象的抽象描述,每个对象是它的类的一个实例。面向对象软件工程方法简介 在不同程度上运用抽象的原则,可以得到较一般的类在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的
9、属性和服务。和较特殊的类。特殊类继承一般类的属性和服务。对象之间通过消息进行通信,实现对象之间的动态关对象之间通过消息进行通信,实现对象之间的动态关系。通过关联表达对象之间的静态关系。系。通过关联表达对象之间的静态关系。从以上几点可以看出,在面向对象开发的系统中,以从以上几点可以看出,在面向对象开发的系统中,以类的形式描述并通过对类的引用而创建的对象是系统的基类的形式描述并通过对类的引用而创建的对象是系统的基本构成单位。这些对象对应着问题域的各个事物,它们的本构成单位。这些对象对应着问题域的各个事物,它们的属性刻画了事物的静态特征和动态特征。对象之间的继承、属性刻画了事物的静态特征和动态特征。
10、对象之间的继承、聚合、消息和关联如实地反映了问题域事物之间存在的各聚合、消息和关联如实地反映了问题域事物之间存在的各种关系。因此,面向对象方法可描述为种关系。因此,面向对象方法可描述为:一种使用对象(其属性和操作封装在一起)、消息传一种使用对象(其属性和操作封装在一起)、消息传送、类、继承、多态和动态绑定等概念来开发问题域模型送、类、继承、多态和动态绑定等概念来开发问题域模型之间关系的范例。之间关系的范例。一种基于对象、类、实例和继承等概念的技术。用对一种基于对象、类、实例和继承等概念的技术。用对象作为建模的原子。象作为建模的原子。面向对象软件工程方法简介 5.1.2 面向对象软件开发方法面向
11、对象软件开发方法 自计算机诞生以来,程序员一直在内存和外存容量苛自计算机诞生以来,程序员一直在内存和外存容量苛刻的工作环境中劳作,编写出许多在各个领域中发挥了巨刻的工作环境中劳作,编写出许多在各个领域中发挥了巨大作用的工程软件。他们用有限的计算机资源编制出了许大作用的工程软件。他们用有限的计算机资源编制出了许多杰出的应用软件。在这些软件中,除了必要的功能模块多杰出的应用软件。在这些软件中,除了必要的功能模块外,程序中没有任何装饰性的可有可无的东西。外,程序中没有任何装饰性的可有可无的东西。后来,随着高性能计算机的普及和应用,内存、外存后来,随着高性能计算机的普及和应用,内存、外存容量的不断增加
12、,编程发展到了一个较高层次。程序员发容量的不断增加,编程发展到了一个较高层次。程序员发现,传统的结构化设计方法存在着下列问题现,传统的结构化设计方法存在着下列问题:它不允许最后它不允许最后完成的应用程序具有太大的灵活性,而面向对象技术能够完成的应用程序具有太大的灵活性,而面向对象技术能够提供所需的灵活性。结构化技术和面向对象技术的比较提供所需的灵活性。结构化技术和面向对象技术的比较:在面向对象技术出现以前,一切程序都是围绕着结构在面向对象技术出现以前,一切程序都是围绕着结构化体系模型设计的。这种模型背后的推动力就是化体系模型设计的。这种模型背后的推动力就是“过程过程”。面向对象软件工程方法简介
13、 图图5.1描述了一个简化了的订单处理过程。描述了一个简化了的订单处理过程。图图5.1 订单处理过程订单处理过程 从图从图5.1中可以看出,在订单处理中可以看出,在订单处理中,并非每一个过程都要与数据库交互。但通过使用数据中,并非每一个过程都要与数据库交互。但通过使用数据库,每个持有密码的过程都可以跟踪客户的订单。通常,库,每个持有密码的过程都可以跟踪客户的订单。通常,与信息仓库的交互接口会提供一整套具有普遍意义的信息与信息仓库的交互接口会提供一整套具有普遍意义的信息处理方法,例如设置一些事情(访问信息的密码或某些属处理方法,例如设置一些事情(访问信息的密码或某些属性值)。如果再考虑其他一些比
14、较特别的问题,最后的接性值)。如果再考虑其他一些比较特别的问题,最后的接口程序可能比应用程序还大得多。口程序可能比应用程序还大得多。图5.1订单处理过程面向对象软件工程方法简介 面向对象技术的驱动力是信息面向对象技术的驱动力是信息它在系统中到处它在系统中到处“流动流动”。相关的信息都被。相关的信息都被“绑绑”为一为一“束束”,每个新的,每个新的订单都是系统中的一订单都是系统中的一“束束”新信息,就像在数据库表中增新信息,就像在数据库表中增加一行记录一样。加一行记录一样。另外一个变化是,尽管不像外部过程那样容易地直接另外一个变化是,尽管不像外部过程那样容易地直接处理信息本身,但每一处理信息本身,
15、但每一“束束”信息都提供一套接口访问的信息都提供一套接口访问的方法,以允许其他方法,以允许其他“束束”按照可以控制的方式来处理信息。按照可以控制的方式来处理信息。就如同数据库本身具有处理信息的方法一样,知道如何处就如同数据库本身具有处理信息的方法一样,知道如何处理信息。理信息。至此,我们已有了至此,我们已有了“对象对象”的概念,即信息束,它包的概念,即信息束,它包含处理信息的方法。含处理信息的方法。面向对象软件工程方法简介 结构化设计与面向对象设计的另一个不同之处是结构化设计与面向对象设计的另一个不同之处是:如果如果一个不同类型的订单进入系统,面向对象系统更能适应这一个不同类型的订单进入系统,
16、面向对象系统更能适应这种变化。系统只需要从现有订单中派生出一个新订单,改种变化。系统只需要从现有订单中派生出一个新订单,改变其中的数量和类型数据,并根据情况采用适当的方法。变其中的数量和类型数据,并根据情况采用适当的方法。这就是面向对象系统的运作方式。这就是面向对象系统的运作方式。正如我们看到的一样,这就是一系列在系统中正如我们看到的一样,这就是一系列在系统中“流动流动”的对象。在这里,过程的概念用对象的状态来标识的对象。在这里,过程的概念用对象的状态来标识即原来那些被描述为即原来那些被描述为“核对核对”的过程,现在被描述为的过程,现在被描述为“一一个正在根据自己的信息执行核对方法的对象个正在
17、根据自己的信息执行核对方法的对象”。旧的过程。旧的过程的完成标志着一个新的过程的开始。在面向对象系统中,的完成标志着一个新的过程的开始。在面向对象系统中,一个对象本身可以标识并改变自己的状态,如从一个对象本身可以标识并改变自己的状态,如从“正在核正在核对的对的”到到“核对完成的核对完成的”。面向对象软件工程方法简介 使用面向对象技术,还具有其他一些优势,如源代码使用面向对象技术,还具有其他一些优势,如源代码的复用、可维护性、创建已有的对象和使用纯粹的面向对的复用、可维护性、创建已有的对象和使用纯粹的面向对象的语言等。象的语言等。5.1.3 面向对象开发方法中的基本概念面向对象开发方法中的基本概
18、念 1.对象对象 对象是一个真实的或抽象的元素项,它包含信息(即对象是一个真实的或抽象的元素项,它包含信息(即描述对象的属性)和处理对象的方法。对象既可以表示有描述对象的属性)和处理对象的方法。对象既可以表示有形实体(例如,电视机、汽车和房屋等),也可以表示抽形实体(例如,电视机、汽车和房屋等),也可以表示抽象的规则、计划和事件(例如,产品性能、合同和演出象的规则、计划和事件(例如,产品性能、合同和演出等)。根据以上的说明,对象的定义应该是等)。根据以上的说明,对象的定义应该是:对象是某个事对象是某个事物在系统中需要保存的信息和相关的操作物在系统中需要保存的信息和相关的操作;它是一组属性和它是
19、一组属性和有权对这些属性进行操作的一组服务的封装体。有权对这些属性进行操作的一组服务的封装体。面向对象软件工程方法简介 对象的属性与方法对象的属性与方法:(1)属性)属性 属性是对象的一个特征并在系统的具体环境中有其对属性是对象的一个特征并在系统的具体环境中有其对应的数值。例如,某人的性别属性可以是应的数值。例如,某人的性别属性可以是Male或或Female。再比如汽车这一对象,它的属性可以是制造商、型号、再比如汽车这一对象,它的属性可以是制造商、型号、车龄、颜色和发动机规格等。车龄、颜色和发动机规格等。(2)方法)方法 方法(方法(Method)是一个对象允许其他对象与之交互的)是一个对象允
20、许其他对象与之交互的方式。一个对象定义的方法被称为方式。一个对象定义的方法被称为“接口接口”。接口用于规。接口用于规定如下几个方面的内容定如下几个方面的内容:对象支持什么样的方法。方法是如对象支持什么样的方法。方法是如何被使用的。还需要哪些附加信息。预计会发生什么事件。何被使用的。还需要哪些附加信息。预计会发生什么事件。返回什么结果给调用者(如果有的话)。返回什么结果给调用者(如果有的话)。面向对象软件工程方法简介 对象之间通过发送消息进行通信,当发送一条消息时,对象之间通过发送消息进行通信,当发送一条消息时,该消息中至少应包含消息名称(即对象名该消息中至少应包含消息名称(即对象名.方法名)以
21、及接方法名)以及接收消息的对象名,一般还应有参数说明。当一个对象接收收消息的对象名,一般还应有参数说明。当一个对象接收到一条消息时,消息中所包含的方法决定该对象如何动作。到一条消息时,消息中所包含的方法决定该对象如何动作。2.类类 人类在认识客观世界时经常采用的思维方式是把众多人类在认识客观世界时经常采用的思维方式是把众多的事物归纳、划分成一些类。具体来说是依据抽象的原则的事物归纳、划分成一些类。具体来说是依据抽象的原则进行分类,即忽略事物的非本质特征,只注意那些与当前进行分类,即忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同目标有关的本质特征,从而找
22、出事物的共性,把具有共同本质特征的事物划分为一类,得出一个抽象的概念。本质特征的事物划分为一类,得出一个抽象的概念。面向对象软件工程方法简介 例如例如:张某某、李四和王三等都是中国人,虽说每个人张某某、李四和王三等都是中国人,虽说每个人职业、性格、爱好和特长等各有不同,但他们的基本特征职业、性格、爱好和特长等各有不同,但他们的基本特征是相似的,都是黄皮肤、黑头发、黑眼睛,于是人们把他是相似的,都是黄皮肤、黑头发、黑眼睛,于是人们把他们统称为们统称为“中国人中国人”。人类习惯于把拥有相似特征的事物。人类习惯于把拥有相似特征的事物归类,分类是人类认识客观世界的基本方法。在面向对象归类,分类是人类认
23、识客观世界的基本方法。在面向对象的方法中,类(的方法中,类(class)的定义是)的定义是:具有相同属性和服务的一具有相同属性和服务的一组对象的集合。它为属于该组的全部对象提供了统一的抽组对象的集合。它为属于该组的全部对象提供了统一的抽象描述,包括属性和服务两个主要部分。象描述,包括属性和服务两个主要部分。图5.3 类与实例面向对象软件工程方法简介 类与对象的关系如同一个模具与用这个模具铸造出来类与对象的关系如同一个模具与用这个模具铸造出来的铸件的关系。如图的铸件的关系。如图5.3所示,给出了属于该类的一个实例所示,给出了属于该类的一个实例(Instance),也有人把类称作对象的模板),也有
24、人把类称作对象的模板(Template)。对象与类的区别对象与类的区别:类和该类的对象之间的关系是示例(类和该类的对象之间的关系是示例(Instantiate)关)关系。而关系被定义为系。而关系被定义为“建模元素之间的联系建模元素之间的联系”。在。在UML(统一建模语言)中存在很多类型的关系,我们将在以后(统一建模语言)中存在很多类型的关系,我们将在以后研究它们。对象和类之间的示例关系如图研究它们。对象和类之间的示例关系如图5.4所示。所示。面向对象软件工程方法简介图5.4 对象和类的示例关系 面向对象软件工程方法简介 3.继承继承 面向对象方法中的一个重要概念是继承。继承描述的面向对象方法中
25、的一个重要概念是继承。继承描述的是类之间的一种相互关系。一般的讲,当类是类之间的一种相互关系。一般的讲,当类a继承类继承类b时,时,类类a的对象便具有了类的对象便具有了类b的一切数据属性和操作功能。此时,的一切数据属性和操作功能。此时,称类称类b为基类、父类或超类为基类、父类或超类;而类而类a为类为类b的派生类或子类。的派生类或子类。继承所具有的作用是继承所具有的作用是:一方面可以减少代码冗余一方面可以减少代码冗余;另一方面可另一方面可以减少类之间的接口和界面。以减少类之间的接口和界面。从继承的源头来划分,继承可以分为单继承和多重继从继承的源头来划分,继承可以分为单继承和多重继承。所谓单继承是
展开阅读全文