- 4
- 0
- 约6.6千字
- 约 48页
- 2017-06-08 发布于北京
- 举报
面向对象程序设计-第二章a1”
第二章 面象对象的程序设计 主讲:徐宏喆 xuhz@ 面向对象程序设计在程序设计模式中是一个新的概念,对于不同的人可能意味着不同的内容。因此在我们继续下面的内容之前,我们定义一下面向对象程序设计::…[1] 2.1引言 面向对象程序设计方法(OOP)的主要出发点是弥补面向过程程序设计方法中的一些缺点。OOP把数据看作程序开发中的基本元素,并且不允许它们在系统中自由流动。它将数据和操作这些数据的函数紧密的连结在一起,并保护数据不会被外界的函数意外的改变。OOP允许我们将问题分解为一系列“实体”——这些“实体”被称为对象(object),然后围绕这些实体建立数据和函数。 2.1.1面向对象的程序设计 “面向对象”作为一个术语,在不同的人群中有着不同的解释。因此,了解一些在面向对象程序设计中广泛应用的概念是必须的。本节我们讨论以下这些内容:1、对象(Object)2、类(Class)3、数据抽象(Data abstraction) 4、继承(Inheritance)5、数据封装(Data encapsulation)6、多态性(Polymorphism)7、消息传递(Message passing) 2.2对象和类 对象和类的概念 对象是现实世界中一个实体,类是对多个实体进行综合抽象的结果 类 事实上,对象就是类类型(class type)的变量。一旦定义了一个类,我们就可以创建这个类的多个对象,每个对象与一组数据相关,而这组数据的类型在类中定义。因此,一个类就是具有相同类型的对象的抽象。例如,芒果、苹果和桔子都是fruit类的对象。类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为相同。比如创建一个类对象的语法和创建一个整数对象的语法一模一样。如果fruit被定义为一个类,那么语句fruit mango;就创建了一个fruit类的对象mango。 对象 在一个面向对象的系统中,对象是运行期的基本实体。它也可以用来表示一个人或者说一个银行帐户,一张数据表格,或者其它什么需要被程序处理的东西。它也可以用来表示用户定义的数据,例如一个向量,时间或者列表。在面向对象程序设计中,问题的分析一般以对象及对象间的自然联系为依据。如前所述,对象在内存中占有一定空间,并且具有一个与之关联的地址,就像Pascal中的record和C中的结构一样。 对象 当一个程序运行时,对象之间通过互发消息来相互作用。例如,程序中包含一个“customer”对象和一个“account”对象,而customer对象可能会向account对象发送一个消息,查询其银行帐目。每个对象都包含数据以及操作这些数据的代码。即使不了解彼此的数据和代码的细节,对象之间依然可以相互作用,所要了解的只是对象能够接受的消息的类型,以及对象返回的响应的类型,虽然不同的人会以不同的方法实现它们。 对象的特征 对象的名字:用不同的对象名字来将它们加以区分 对象的属性:属性是对实体某一方面的描述 对象的操作:对象的操作指的是对象能够进行的行为 例子 下面是一个对象的例子: 对象名称:小明 对象属性: 学历:大学 年龄: 21 专业:历史系 对象操作: 上课 吃饭 消息传递 对象的交互 消息传递 一个面向对象的程序由许多对象组成,这些对象之间需要相互沟通。因此,在面向对象程序设计语言中,程序设计的主要步骤如:……[2] 对象之间通过收发信息相互沟通,这一点类似于人与人之间的信息传递。信息传递的概念使得真实世界的直接模拟更易于和建立系统交流。对于某个特定对象来说,消息就是请求执行某个过程,因此,消息的接收对象会调用一个函数(过程),以产生预期的结果。传递的消息的内容包括接收消息的对象的名字,需要调用的函数的名字,以及必要的信息。对象就有一个生命周期。它们可以被创建和销毁。只要对象正处于其生存期,就可以与其进行通讯。 消息传递 对象之间的消息 消息传递机制与函数调用机制的区别 一,在消息传递机制中,每一个消息被发送给指定的接收者(对象)。在命令式编程范型中,函数调用机制没有指定的接收者。这一区别支持封装。 二,消息的解释(用来完成服务请求的方法或操作/代码集)依赖接收者,并且因接收者的不同而异。这一区别对于支持信息隐藏和多态(重载)是必要的。 三,在面向对象的范型中,通常在运行时才能知道给定消息的特定的接收者。这样,在消息(服务请求/函数调用)和用来完成对行为的请求的方法(代码片段)之间存在
原创力文档

文档评论(0)