C+程序设计-对象分册第8章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C+程序设计-对象分册第8章.ppt》由会员分享,可在线阅读,更多相关《C+程序设计-对象分册第8章.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、n本章学习重点掌握内容:本章学习重点掌握内容:n面向对象的分析面向对象的分析 n面向对象的设计与实现面向对象的设计与实现第第8章面向对象程序设计方法与实例章面向对象程序设计方法与实例 12/21/20221第第8章面向对象程序设计方法与实例章面向对象程序设计方法与实例 n8.1 面向对象方法学概述面向对象方法学概述 n8.2 8.2 面向对象的模型面向对象的模型 n8.3 8.3 面向对象程序设计过程面向对象程序设计过程 n8.4 8.4 电梯模拟系统电梯模拟系统 12/21/202228.1 面向对象方法学概述面向对象方法学概述 面面向向对对象象(Object-Oriented,缩缩写写为为
2、OO)方方法法学学的的出出发发点点和和基基本本原原则则,是是尽尽可可能能模模拟拟人人类类习习惯惯的的思思维维方方式式,使使开开发发软软件件的的方方法法与与过过程程尽尽可可能能接接近近人人类类认认识识世世界界解解决决问问题题的的方方法法与与过过程程,也也就就是是使使描描述述问问题题的的问问题题空空间间(也也称称为为问问题题域域)与与实实现现解解法法的的解解空空间间(也也称称为为求求解解域域)在结构上尽可能一致。在结构上尽可能一致。面面向向对对象象方方法法是是一一种种新新的的思思维维方方法法,它它不不是是把把程程序序看看作作是是工工作作在在数数据据上上的的一一系系列列过过程程或或函函数数的的集集合
3、合,而而是是把把程程序序看看作作是是相相互互协协作作而而又又彼彼此此独独立立的的对对象象的的集集合合。每每个个对对象象就就像像一一个个微微型型程程序序,有有自自己己的的数数据据、操操作作、功能和目的。功能和目的。12/21/202238.1 面向对象方法学概述面向对象方法学概述 面向对象面向对象(Object-Oriented,缩写为缩写为OO)方法学的方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题界解决
4、问题的方法与过程,也就是使描述问题的问题空间空间(也称为问题域也称为问题域)与实现解法的解空间与实现解法的解空间(也称为求解也称为求解域域)在结构上尽可能一致。在结构上尽可能一致。面向对象方法是一种新的思维方法,它不是把程面向对象方法是一种新的思维方法,它不是把程序看作是工作在数据上的一系列过程或函数的集合,序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集而是把程序看作是相互协作而又彼此独立的对象的集合。每个对象就像一个微型程序,有自己的数据、操合。每个对象就像一个微型程序,有自己的数据、操作、功能和目的。作、功能和目的。12/21/202248.1
5、 面向对象方法学概述面向对象方法学概述 面向对象方法在概念和表示方法上的一致性,保证了面向对象方法在概念和表示方法上的一致性,保证了软件工程各项开发活动之间的平滑(软件工程各项开发活动之间的平滑(“无缝无缝”)过渡。面)过渡。面向对象开发过程的核心是面向对象分析(向对象开发过程的核心是面向对象分析(OOA)和面向对)和面向对象设计(象设计(OOD)两个阶段,但二者的界限比较模糊。)两个阶段,但二者的界限比较模糊。OOA通过分析用例,提取用户的需求,从而建立问题通过分析用例,提取用户的需求,从而建立问题域逻辑模型的过程;域逻辑模型的过程;OOD是建立面向对象的求解域模型的是建立面向对象的求解域模
6、型的过程。从过程。从OOA到到OOD实际是一个多次反复、逐步迭代模实际是一个多次反复、逐步迭代模型的过程。型的过程。面向对象(面向对象(OO)是认识事物的一种方法,是一种以对)是认识事物的一种方法,是一种以对象为中心的思维方式。这里先介绍它的几个主要概念:对象为中心的思维方式。这里先介绍它的几个主要概念:对象、类、封装、继承、消息、结构与关联、多态性。象、类、封装、继承、消息、结构与关联、多态性。12/21/202251、对象、对象 世界上所有的事物都可以称为对象。对象可以是有世界上所有的事物都可以称为对象。对象可以是有形的如:一台电视机等。也可以是无形的如:帐户、一形的如:一台电视机等。也可
7、以是无形的如:帐户、一项记录等。对象具有静态特征和动态特征。项记录等。对象具有静态特征和动态特征。对象是封装了数据结构及可以施加在这些数据结构对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务名字,而且向外界提供一组服务(即公有的操作即公有的操作)。属性和操作是对象的两大要素。属性是对象静态特属性和操作是对象的两大要素。属性是对象静态特征的描述,操作是对象动态特征的描述。对象名也称为征的描述,操作是对象动态特征的描述。对象名也称为对象标识。如电视的属性有:品牌、尺寸、重量等。操
8、对象标识。如电视的属性有:品牌、尺寸、重量等。操作有:收视、选台、音量调节等。作有:收视、选台、音量调节等。8.1.1 对象和类对象和类12/21/202262 2、类、类 类是对象的蓝图。根据抽象的原则对客观对象进行归类是对象的蓝图。根据抽象的原则对客观对象进行归纳和划分,把具有相同特征的对象归为一个类。它是一个纳和划分,把具有相同特征的对象归为一个类。它是一个抽象的概念。抽象的概念。类是对象模版,用于创建具有相同属性和相同操作类是对象模版,用于创建具有相同属性和相同操作(服务)的对象。它包括属性和方法(注:类的服务、行(服务)的对象。它包括属性和方法(注:类的服务、行为和操作只是叫法上的区
9、别)。为和操作只是叫法上的区别)。3 3、封装、封装 封装是指按照信息隐藏的原则,把对象的属性和操作封装是指按照信息隐藏的原则,把对象的属性和操作结合在一起,构成一个独立的封装体。封装性也就是信息结合在一起,构成一个独立的封装体。封装性也就是信息隐藏,通过封装把对象的实现细节对外界隐藏起来了隐藏,通过封装把对象的实现细节对外界隐藏起来了。8.1.1 对象和类对象和类12/21/20227外部对象不能直接操作对象的属性,只能使用对象提外部对象不能直接操作对象的属性,只能使用对象提供的接口。具有封装性的条件如下供的接口。具有封装性的条件如下:l有一个清晰的边界。所有私有数据和实现操作的代有一个清晰
10、的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接码都被封装在这个边界内,从外面看不见更不能直接访问。访问。l有确定的接口有确定的接口(即协议即协议)。接口就是对象之间通信的。接口就是对象之间通信的桥梁,只能通过向对象发送消息来使用它。桥梁,只能通过向对象发送消息来使用它。l受保护的内部实现。实现对象功能的细节受保护的内部实现。实现对象功能的细节(私有数据私有数据和私有方法和私有方法)不能在定义该对象的类的范围外进行访不能在定义该对象的类的范围外进行访问。问。8.1.1 对象和类对象和类12/21/20228 4 4、继承继承 继承使得一个类可以继承另一个类的属性
11、和方法。继承使得一个类可以继承另一个类的属性和方法。这样通过抽象出共同的属性和方法组建新的类,便于这样通过抽象出共同的属性和方法组建新的类,便于代码的重用。如图代码的重用。如图8.18.1的继承关系。的继承关系。Button-pressed:bool+pressButton():void8.1.1 对象和类对象和类elevatorButton-elevatorRef:Elevator+pressButton():voidfloorButton-floorNumber:int+pressButton():void图图8.1 继承中的父子类继承中的父子类12/21/20229 子类电梯按钮和楼层按
12、钮继承了父类子类电梯按钮和楼层按钮继承了父类ButtonButton的全部属性的全部属性和服务,同时又具有自身新的属性和服务。和服务,同时又具有自身新的属性和服务。一般和特殊是相对而言的,在哺乳动物和狗及猫之间,一般和特殊是相对而言的,在哺乳动物和狗及猫之间,哺乳动物是一般类(称为基类、超类或父类),狗和猫是哺乳动物是一般类(称为基类、超类或父类),狗和猫是特殊类(也称子类);在狗和黑狗之间狗是一般类,黑狗特殊类(也称子类);在狗和黑狗之间狗是一般类,黑狗是特殊类。是特殊类。5 5、消息、消息 向某个对象发出的服务请求称作消息。对象提供的服向某个对象发出的服务请求称作消息。对象提供的服务规定的
13、消息格式称作消息协议。务规定的消息格式称作消息协议。消息包括:被请求的对象标识、被请求的服务标识、消息包括:被请求的对象标识、被请求的服务标识、输入信息和应答信息。如:向电梯按钮类发送请求按下电输入信息和应答信息。如:向电梯按钮类发送请求按下电梯按钮的消息梯按钮的消息elvatorButton.pressButton()elvatorButton.pressButton()。8.1.1 对象和类对象和类12/21/2022108.1.1 对象和类对象和类6 6、结构与关联、结构与关联 一个系统一般由很多对象组成,对象之间并不是一个系统一般由很多对象组成,对象之间并不是互相孤立的,而是存在着各种
14、各样的关系。包括:部互相孤立的,而是存在着各种各样的关系。包括:部分分/整体、一般整体、一般/特殊、实例连接、消息连接。特殊、实例连接、消息连接。(1 1)部分)部分/整体整体 对象之间存在的部分与整体的结构关系。如电梯对象之间存在的部分与整体的结构关系。如电梯按钮是电梯类的一个组成部分,电梯由电梯按钮、门、按钮是电梯类的一个组成部分,电梯由电梯按钮、门、楼层、响铃等组成。如图楼层、响铃等组成。如图8.28.2的组合关系。的组合关系。12/21/2022118.1.1 对象和类对象和类 Elevator-door:Door+processPossibleArrival():void eleva
15、torButton-elevatorRef:Elevator+pressButton():voidDoor-open:bool+closeDoor():void图图8.2 8.2 组合关系组合关系 12/21/2022128.1.1 对象和类对象和类 组合和聚合。组合关系中部分和整体的关系很紧密。聚组合和聚合。组合关系中部分和整体的关系很紧密。聚合关系中则比较松散,一个部分对象可以属于几个整体对象。合关系中则比较松散,一个部分对象可以属于几个整体对象。(2 2)一般)一般/特殊特殊 对象之间的结构关系,很多时候也称作泛化和特化关系。对象之间的结构关系,很多时候也称作泛化和特化关系。(3 3)实
16、例连接)实例连接 对象之间的实例连接称作链接,对象类之间的实例连接对象之间的实例连接称作链接,对象类之间的实例连接称作关联。称作关联。(4 4)消息连接)消息连接 消息连接表现了这样一种联系:一个对象发送消息请求消息连接表现了这样一种联系:一个对象发送消息请求另一个对象的服务,接收消息的对象响应消息,执行相应的另一个对象的服务,接收消息的对象响应消息,执行相应的服务。服务。12/21/202213 7 7、多态性、多态性 所谓多态性是指不同对象接收相同的消息时产生不所谓多态性是指不同对象接收相同的消息时产生不同的行为。这里的消息主要是对类中成员函数的调用,同的行为。这里的消息主要是对类中成员函
17、数的调用,而不同的行为就是指类成员函数的不同实现。即在类等而不同的行为就是指类成员函数的不同实现。即在类等级的不同层次中可以共享级的不同层次中可以共享(公用公用)一个行为一个行为(方法方法)的名字,的名字,然而不同层次中的每个类却各自按自己的需要来实现这然而不同层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。如图所属于的类动态选用在该类中定义的实现算法。如图8.18.1中,当向按钮对象发送消息中,当向按钮对象发送消息pressButtonpressButton()时
18、()时,不不同按钮对象如电梯内部按钮和楼层按钮会自动判断自己同按钮对象如电梯内部按钮和楼层按钮会自动判断自己的所属类并执行相应的服务。的所属类并执行相应的服务。8.1.1 对象和类对象和类12/21/202214 面向对象的模型,分别从三个不同侧面描述了所面向对象的模型,分别从三个不同侧面描述了所要开发的系统。对象模型定义了要开发的系统。对象模型定义了“做什么做什么”的实体,的实体,功能模型指明了系统应该功能模型指明了系统应该“做什么做什么”,动态模型明确,动态模型明确规定在何种状态下,接受什么事件的触发而规定在何种状态下,接受什么事件的触发而“做什么做什么”。一个典型的软件系统组合了上述三方
19、面内容:它一个典型的软件系统组合了上述三方面内容:它使用数据结构使用数据结构(对象模型对象模型),执行操作,执行操作(动态模型动态模型),并,并且完成属性值的变化且完成属性值的变化(功能模型功能模型)。8.2 8.2 面向对象的模型面向对象的模型12/21/2022151.1.对象模型是一个类(属性和方法)、对象(类的对象模型是一个类(属性和方法)、对象(类的实例)、类或对象之间关系的定义集。实例)、类或对象之间关系的定义集。l 对象模型表示静态的、结构化系统的对象模型表示静态的、结构化系统的“数据数据”性质,性质,为建立动态模型和功能模型提供了实质性的框架。为建立动态模型和功能模型提供了实质
20、性的框架。l 对象模型把面向对象的概念与常用的信息建模概念对象模型把面向对象的概念与常用的信息建模概念结合起来,增强了模型的可理解性和表达能力。结合起来,增强了模型的可理解性和表达能力。l 对象模型还表示了类对象模型还表示了类/对象之间的结构关系。类对象之间的结构关系。类/对对象之间的关系一般可概括为关联、归纳(继承)、组象之间的关系一般可概括为关联、归纳(继承)、组合(或聚集)三类。合(或聚集)三类。8.2 8.2 面向对象的模型面向对象的模型12/21/2022168.2 8.2 面向对象的模型面向对象的模型2.2.动态模型表示瞬间的、行为化的系统动态模型表示瞬间的、行为化的系统“控制控制
21、”性质,性质,它规定了对象模型中对象状态的合法变化序列。它规定了对象模型中对象状态的合法变化序列。l对象有自己的生命周期,它由多个阶段组成,每个特对象有自己的生命周期,它由多个阶段组成,每个特定阶段都有规范该对象行为的一组运行规则。定阶段都有规范该对象行为的一组运行规则。l对象的状态是对象属性的一种抽象,事件是某个特定对象的状态是对象属性的一种抽象,事件是某个特定时刻发生的一个系统行为是引起对象状态转换的控制时刻发生的一个系统行为是引起对象状态转换的控制信息。对象对事件的响应,取决于当时的状态,响应信息。对象对事件的响应,取决于当时的状态,响应包括改变自己的状态,或者是形成一个新的触发行为包括
22、改变自己的状态,或者是形成一个新的触发行为(事件)。(事件)。l动态模型描绘对象的状态,触发状态转换的事件,以动态模型描绘对象的状态,触发状态转换的事件,以及对象行为(对事件的响应),即基于事件共享而互及对象行为(对事件的响应),即基于事件共享而互相关联的一组状态集合构成了系统的动态模型。相关联的一组状态集合构成了系统的动态模型。12/21/202217 3.3.功能模型指明了系统应该功能模型指明了系统应该“做什么做什么”,直接地反映了,直接地反映了用户对目标系统的需求。面向对象的功能模型由一组用户对目标系统的需求。面向对象的功能模型由一组用例组成,用例模型描述的是外部执行者用例组成,用例模型
23、描述的是外部执行者(Actor)(Actor)所理所理解的系统功能。解的系统功能。l用例模型描述了待开发系统的功能需求用例模型描述了待开发系统的功能需求 l用例模型将系统看作黑盒,从外部执行者的角度来理用例模型将系统看作黑盒,从外部执行者的角度来理解系统解系统l用例模型驱动了需求分析之后各阶段的开发工作,不用例模型驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系统,从而影响到开发工作用于验证和检测所开发的系统,从而影响到开发工作的各个阶段和的各个阶段和 UML UML 的各个模型。的各个模
24、型。l在在UMLUML中,一个用例模型由若干个用例图描述,用例图中,一个用例模型由若干个用例图描述,用例图主要元素是用例和执行者。主要元素是用例和执行者。8.2 8.2 面向对象的模型面向对象的模型12/21/202218 传统程序设计方法的主要思想是自顶向下逐步分解。整传统程序设计方法的主要思想是自顶向下逐步分解。整个系统由分层的子程序集合构成。这要求程序设计师必须个系统由分层的子程序集合构成。这要求程序设计师必须对系统的调用关系非常清楚,这对于开发大型系统来讲是对系统的调用关系非常清楚,这对于开发大型系统来讲是是非困难的,而且构建的系统稳定性较差,任何上层子程是非困难的,而且构建的系统稳定
25、性较差,任何上层子程序的修改都会引整个系统的改变。序的修改都会引整个系统的改变。而面向对象得程序设计方法提供一种崭新的系统设计而面向对象得程序设计方法提供一种崭新的系统设计方案,就是将系统看成一系列相关联的对象的集合,而对方案,就是将系统看成一系列相关联的对象的集合,而对象之间是通过消息传递的方法相互作用来完成任务,每个象之间是通过消息传递的方法相互作用来完成任务,每个对象用自己的方法管理数据。对象用自己的方法管理数据。本节就介绍这种软件开发的方法,它将软件开发过程本节就介绍这种软件开发的方法,它将软件开发过程分为分为3 3个阶段:面向对象的分析、面向对象的设计、面向对个阶段:面向对象的分析、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 对象 分册
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内