面向对象程序设计-第二章a.ppt
《面向对象程序设计-第二章a.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计-第二章a.ppt(48页珍藏版)》请在三一办公上搜索。
1、1,第二章 面象对象的程序设计 主讲:徐宏喆,2,第二章 面象对象的程序设计主讲:徐宏喆,3,面向对象程序设计在程序设计模式中是一个新的概念,对于不同的人可能意味着不同的内容。因此在我们继续下面的内容之前,我们定义一下面向对象程序设计::1,see,4,2.1引言,面向对象程序设计方法(OOP)的主要出发点是弥补面向过程程序设计方法中的一些缺点。OOP把数据看作程序开发中的基本元素,并且不允许它们在系统中自由流动。它将数据和操作这些数据的函数紧密的连结在一起,并保护数据不会被外界的函数意外的改变。OOP允许我们将问题分解为一系列“实体”这些“实体”被称为对象(object),然后围绕这些实体建
2、立数据和函数。,5,面向对象的程序设计,“面向对象”作为一个术语,在不同的人群中有着不同的解释。因此,了解一些在面向对象程序设计中广泛应用的概念是必须的。本节我们讨论以下这些内容:1、对象(Object)2、类(Class)3、数据抽象(Data abstraction)4、继承(Inheritance)5、数据封装(Data encapsulation)6、多态性(Polymorphism)7、消息传递(Message passing),6,2.2对象和类,对象和类的概念对象是现实世界中一个实体,类是对多个实体进行综合抽象的结果,7,类,事实上,对象就是类类型(class type)的变量。
3、一旦定义了一个类,我们就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的类型在类中定义。因此,一个类就是具有相同类型的对象的抽象。例如,芒果、苹果和桔子都是fruit类的对象。类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为相同。比如创建一个类对象的语法和创建一个整数对象的语法一模一样。如果fruit被定义为一个类,那么语句fruit mango;就创建了一个fruit类的对象mango。,8,定义支持继承性和多态的抽象数据类型(ADT)使用一个自定义类型和基本类型没有本质区别,看到的只是类型名和一组操作的声明(包括操作名,参数,操作含义,操作使用规则),类
4、(Class),9,访问控制(封装性)面向对象语言中提供了外界对类的访问控制机制访问控制的程度不同也称为“能见度”不同,类(Class),10,对象,在一个面向对象的系统中,对象是运行期的基本实体。它也可以用来表示一个人或者说一个银行帐户,一张数据表格,或者其它什么需要被程序处理的东西。它也可以用来表示用户定义的数据,例如一个向量,时间或者列表。在面向对象程序设计中,问题的分析一般以对象及对象间的自然联系为依据。如前所述,对象在内存中占有一定空间,并且具有一个与之关联的地址,就像Pascal中的record和C中的结构一样。,11,对象,当一个程序运行时,对象之间通过互发消息来相互作用。例如,
5、程序中包含一个“customer”对象和一个“account”对象,而customer对象可能会向account对象发送一个消息,查询其银行帐目。每个对象都包含数据以及操作这些数据的代码。即使不了解彼此的数据和代码的细节,对象之间依然可以相互作用,所要了解的只是对象能够接受的消息的类型,以及对象返回的响应的类型,虽然不同的人会以不同的方法实现它们。,12,定义对象是某个特定类的实例。用同一个类产生的对象具有相同的数据结构,操作集合和能见度,不同的标识,相同或不同的初始状态,拥有和保持不同的运行状态。对象之间通过消息传递进行交互。对象与一般数据类型的实例之间的区别:对象是主动的数据,对象之间通过
6、消息传递进行通信,而一般数据只能被动的由过程来处理。,对象,13,对象,属性,服务,对象标识,14,对象特性主动数据消息传递状态保持,对象,15,对象的特征,对象的名字:用不同的对象名字来将它们加以区分对象的属性:属性是对实体某一方面的描述对象的操作:对象的操作指的是对象能够进行的行为,16,例子,下面是一个对象的例子:对象名称:小明 对象属性:学历:大学 年龄:21 专业:历史系 对象操作:上课 吃饭,17,消息传递,对象的交互,现实中的对象不是孤立的,他们之间存在着各种练习,对象之间的相互交互是通过消息传递来进行的。,18,消息传递,一个面向对象的程序由许多对象组成,这些对象之间需要相互沟
7、通。因此,在面向对象程序设计语言中,程序设计的主要步骤如:2对象之间通过收发信息相互沟通,这一点类似于人与人之间的信息传递。信息传递的概念使得真实世界的直接模拟更易于和建立系统交流。对于某个特定对象来说,消息就是请求执行某个过程,因此,消息的接收对象会调用一个函数(过程),以产生预期的结果。传递的消息的内容包括接收消息的对象的名字,需要调用的函数的名字,以及必要的信息。对象就有一个生命周期。它们可以被创建和销毁。只要对象正处于其生存期,就可以与其进行通讯。,see,19,消息传递,对象之间的消息,消息的性质:同一对象可以接受不同形式的多个消息,作出不同的响应相同的消息可以传给不同的对象,所作出
8、的响应可以是不 同的消息之间的发送可以不考虑具体的接受者,对象可以响应 消息,也可以不响应,消息的分类:公有消息:由其他对象向自己直接发送的消息私有消息:由对象自己向自己发送的消息,20,消息传递机制与函数调用机制的区别一,在消息传递机制中,每一个消息被发送给指定的接收者(对象)。在命令式编程范型中,函数调用机制没有指定的接收者。这一区别支持封装。二,消息的解释(用来完成服务请求的方法或操作/代码集)依赖接收者,并且因接收者的不同而异。这一区别对于支持信息隐藏和多态(重载)是必要的。三,在面向对象的范型中,通常在运行时才能知道给定消息的特定的接收者。这样,在消息(服务请求/函数调用)和用来完成
9、对行为的请求的方法(代码片段)之间存在后期连接。命令式编程范型中的函数调用与代码片段之间存在的是早期连接(编译或连接时)。,消息传递与方法,21,2.3数据的抽象和封装,数据的抽象,抽象是通过特定的实例和例子抽取共同性以后形成概念的过程,它是面向对象程序设计的一种基本思想。,抽象是对象系统的简化描述和规范说明,它强调了系统中的一部分细节和特性,例如做什么;而忽略其他部分,例如如何做。,比如:我们对录音机进行抽象录音机的属性:长、宽、高、生产厂家等录音机的行为:放音、录音、停止、倒带、快进等我们并不关心录音机的放音是怎么实现的,这些是在类的实现中要考虑的。,22,数据的抽象,抽象指仅表现核心的特
10、性而不描述背景细节的行为。类使用了抽象的概念,并且被定义为一系列抽象的属性如尺寸、重量和价格,以及操作这些属性的函数。类封装了将要被创建的对象的所有核心属性。因为类使用了数据抽象的概念,所以它们被称为抽象数据类型(ADT)。,23,抽 象,从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象;一个现实事物,可能担任很多角色,只有与问题域有关的角色,才予以考虑。,24,数据的封装,封装就是将数据和对数据的操作组成一个实体,数据的表示方式和对数据的操作细节被隐藏起来,用户通过操作接口对数据进行操作.,BalanceOwnerMakeDeposit()WithDraw()Transfe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 第二
链接地址:https://www.31ppt.com/p-6034421.html