第4章对象和类 程序是计算机不可缺少的一部分,如何有效地编写程 序是人们一直以来最关心的问题,而以怎样的思想来 指导程序设计显得更加重要。程序设计方法经历了几 个发展阶段,而面向对象程序设计是如今最流行、最 高效的程序设计方法。每一种思想和方法都有其自身 的概念和相应原理,对象和类是面向对象程序设计中 最基本、也是最重要的两个概念。本章主要介绍面向 对象程序设计的一些基本概念和原理,重点是如何用 ava语言来表示这些概念
第4章 对象和类 程序是计算机不可缺少的一部分,如何有效地编写程 序是人们一直以来最关心的问题,而以怎样的思想来 指导程序设计显得更加重要。程序设计方法经历了几 个发展阶段,而面向对象程序设计是如今最流行、最 高效的程序设计方法。每一种思想和方法都有其自身 的概念和相应原理,对象和类是面向对象程序设计中 最基本、也是最重要的两个概念。本章主要介绍面向 对象程序设计的一些基本概念和原理,重点是如何用 Java语言来表示这些概念
41面向对象程序设计 ■要掌握一种新思想、新方法,必须先了解其相关概 念。本节主要介绍面向对象的一些相关概念及其相应 的描述工具UML,是一些比较抽象的概念,读 者在学习的过程中,可以先了解其基本内容,待学完 后面相关内容后再回来仔细揣摩和体会,必定能收到 良好的效果
4.1 面向对象程序设计 ◼要掌握一种新思想、新方法,必须先了解其相关概 念。本节主要介绍面向对象的一些相关概念及其相应 的描述工具——UML,是一些比较抽象的概念,读 者在学习的过程中,可以先了解其基本内容,待学完 后面相关内容后再回来仔细揣摩和体会,必定能收到 良好的效果
41面向对象程序设计一面向对象的概念 所谓面向对象的方法学,就是使我们分析、设计和实现一个 系统的方法尽可能地接近我们认识一个系统的方法。包括: 面向对象的分析(OOA, Object-Oriented Analysis 面向对象的设计(OOD, Object-Oriented Design) 面向对象的程序设计( OOP, Object-Oriented Program) 面向对象方法学的核心思想是通过一些基本概念体现出来 的。它主要围绕着对象、类、消息、继承性、多态性等基本 概念和机制展开。如将“对象”作为一个独立的逻辑单元与 现实世界中的客体相对应,用“类”来描述具有相同属性特 征和行为方法的一组对象,可利用“继承”来实现具有继承 关系的类之间的数据和方法的共享,对象之间以“消息”传 递的方式进行“通信”等。下面对面向对象方法学中的部分 主要核心概念作简单介绍
所谓面向对象的方法学,就是使我们分析、设计和实现一个 系统的方法尽可能地接近我们认识一个系统的方法。包括: ▪ 面向对象的分析(OOA, Object-Oriented Analysis) ▪ 面向对象的设计(OOD, Object-Oriented Design) ▪ 面向对象的程序设计(OOP, Object-Oriented Program) 面向对象方法学的核心思想是通过一些基本概念体现出来 的。它主要围绕着对象、类、消息、继承性、多态性等基本 概念和机制展开。如将“对象”作为一个独立的逻辑单元与 现实世界中的客体相对应,用“类”来描述具有相同属性特 征和行为方法的一组对象,可利用“继承”来实现具有继承 关系的类之间的数据和方法的共享,对象之间以“消息”传 递的方式进行“通信”等。下面对面向对象方法学中的部分 主要核心概念作简单介绍。 4.1 面向对象程序设计— 面向对象的概念
41面向对象程序设计一面向对象的概念 1抽象 抽象是人类认识世界的一种方式,它是指从同类型的众多事 物中舍弃个别的、非本质的属性和行为,而抽取出共同的、 本质的属性和行为的过程。抽象主要包括事物属性的抽象和 行为的抽象两种类型 属性可用来描述事物在某时刻的状态,常用具体的数据来表 行为的抽象也称功能的抽象,即舍弃个别的功能,而抽取共 同的功能的过程
◼1.抽象 抽象是人类认识世界的一种方式,它是指从同类型的众多事 物中舍弃个别的、非本质的属性和行为,而抽取出共同的、 本质的属性和行为的过程。抽象主要包括事物属性的抽象和 行为的抽象两种类型。 属性可用来描述事物在某时刻的状态,常用具体的数据来表 示。 行为的抽象也称功能的抽象,即舍弃个别的功能,而抽取共 同的功能的过程。 4.1 面向对象程序设计— 面向对象的概念
41面向对象程序设计一面向对象的概念 2封装 封装是将事物的属性和行为聚集在一起而形成一个完整的逻辑单元 的一种机制。利用这种机制可以实现信息的隐藏,外界客体只能通过 封裝向外界提供的接口才能访问描述事物属性的内部数据。这即有利 于客体本身的维护,也有利于保护信息的安全。 在面向对象的程序设计过程中,封装的具体作法就是将描述对象 状态的属性和对象固有的行为分别用数据结构和方法来加以描述,并 将它们捆绑在一起形成一个可供外界访问的独立的逻辑单元,外界只 能通过客体所提供的方法来对其间的数据结构加以访问,而不能直接 存取。很明显,封装是实现信息隐癜的有效手段,它尽可能隐蔽对象 的内部细节,只保留有限的对外接口,使之与外部发生联系。封装保 证了数据的安全性、提高了应用系统的可维护性、也有利于软件的移 植与重用
◼ 2.封装 封装是将事物的属性和行为聚集在一起而形成一个完整的逻辑单元 的一种机制。利用这种机制可以实现信息的隐藏,外界客体只能通过 封装向外界提供的接口才能访问描述事物属性的内部数据。这即有利 于客体本身的维护,也有利于保护信息的安全。 在面向对象的程序设计过程中,封装的具体作法就是将描述对象 状态的属性和对象固有的行为分别用数据结构和方法来加以描述,并 将它们捆绑在一起形成一个可供外界访问的独立的逻辑单元,外界只 能通过客体所提供的方法来对其间的数据结构加以访问,而不能直接 存取。很明显,封装是实现信息隐藏的有效手段,它尽可能隐蔽对象 的内部细节,只保留有限的对外接口,使之与外部发生联系。封装保 证了数据的安全性、提高了应用系统的可维护性、也有利于软件的移 植与重用。 4.1 面向对象程序设计— 面向对象的概念
41面向对象程序设计一面向对象的概念 3对象 对象有两个层次的概念: 现实生活中对象指的是客观世界的实体; 程序中对象就是一组变量和相关方法的集合,其中变量表 明对象的状态,方法表明对象所具有的行为。 变量 △ 方法∠
▪ 3.对象 对象有两个层次的概念: ▪ 现实生活中对象指的是客观世界的实体; ▪ 程序中对象就是一组变量和相关方法的集合,其中变量表 明对象的状态,方法表明对象所具有的行为。 变量 方法 4.1 面向对象程序设计— 面向对象的概念
41面向对象程序设计一面向对象的概念 14.类 (1)类是描述对象的“基本原型”,它定义一类对象所能拥有的 数据和能完成的操作。在面向对象的程序设计中,类是程序的 基本单元。 (2)相似的对象可以归并到同一个类中去,就像传统语言中的变 量与类型关系一样 (3)程序中的对象是类的一个实例,是一个软件单元,它由一组 结构化的数据和在其上的一组操作构成
◼ 4.类 (1).类是描述对象的“基本原型”,它定义一类对象所能拥有的 数据和能完成的操作。在面向对象的程序设计中,类是程序的 基本单元。 (2).相似的对象可以归并到同一个类中去,就像传统语言中的变 量与类型关系一样。 (3).程序中的对象是类的一个实例,是一个软件单元,它由一组 结构化的数据和在其上的一组操作构成。 4.1 面向对象程序设计— 面向对象的概念
41面向对象程序设计一面向对象的概念 4.类 Car car 1 Car car2. Car carN
…… Car car1; Car car2; … … Car carN; 4.1 面向对象程序设计— 面向对象的概念 ◼ 4.类
41面向对象程序设计一面向对象的概念 分个对象与另一个对象如何协作,共同完成一定功能?对象之间如何 消息 相互联系?这一切都依赖于消息的传递来实现。消息是一个对象要求 另一个对象实施某项操作的请求,它反映了对象之间的信息通信机制, 是不同的对象之间信息交流的惟一手段。发送消息的对象称为发送者, 接收消息的对象称为接收者。在一条消息中,包含消息的接收者和要 求接收者完成某项操作的请求,它只告诉接收者需完成什么,而不指 示接收者如何完成,具体的操作过程由接收者自行决定。这样,对象 之间就不会相互干扰,保证了系统的模块性 个对象可以接收不同形式的消息;同一个消息也可以发送给不同的 对象;不同的对象对相同的消息可有不同的解释(这就形成多态性) 发送者发送消息,接收者通过调用相应的方法响应消息,这个过程不 断进行,使得整个应用程序在对象的相互调用过程中完成相应的功能, 得到相应的结果。因此,可以说消息是驱动面向对象程序运转的源泉
◼ 5.消息 一个对象与另一个对象如何协作,共同完成一定功能?对象之间如何 相互联系?这一切都依赖于消息的传递来实现。消息是一个对象要求 另一个对象实施某项操作的请求,它反映了对象之间的信息通信机制, 是不同的对象之间信息交流的惟一手段。发送消息的对象称为发送者, 接收消息的对象称为接收者。在一条消息中,包含消息的接收者和要 求接收者完成某项操作的请求,它只告诉接收者需完成什么,而不指 示接收者如何完成,具体的操作过程由接收者自行决定。这样,对象 之间就不会相互干扰,保证了系统的模块性。 一个对象可以接收不同形式的消息;同一个消息也可以发送给不同的 对象;不同的对象对相同的消息可有不同的解释(这就形成多态性)。 发送者发送消息,接收者通过调用相应的方法响应消息,这个过程不 断进行,使得整个应用程序在对象的相互调用过程中完成相应的功能, 得到相应的结果。因此,可以说消息是驱动面向对象程序运转的源泉。 4.1 面向对象程序设计— 面向对象的概念
41面向对象程序设计一面向对象的概念 ■6.继承 在介绍类的概念时提到,可由已有的类派生出新的类,派生出的 新类称为子类,原来的类称为父类,从而构成了类的层次关系,也就 是类的继承。继承是类之间的一种常见关系,它是一种“一般”和 “特殊”的关系。如在一个学校的人事管理系统中,可定义如下几 个类:人员 Person类、学生 Student类和教师 Teacher类,其中 Person 类是 Student类和 Teache类的父类,而 Student类和 Teacher类是 Personn的子类。它们的关系如图4.1所示:通过继承,子类继承了母 类的属性和行为,在子类中就不用再定义父类中已有的属性和行为了 如在 Person类中,应该具有姓名、性别、年龄、籍贯、民族等属性和 对人信息的修改和打印等行为,它们已被封装在 Person类中在 Student类和 Teacher:类中就不用再定义 Person类中已有的属性和行为 了。通过继承, Student类和 Teacher类中已经自动具有了从父类继承 下来的属性和行为,而只需在 Student类和 Teacher类中添加其自身所 需的属性和行为即可
◼ 6. 继承 在介绍类的概念时提到,可由已有的类派生出新的类,派生出的 新类称为子类,原来的类称为父类,从而构成了类的层次关系,也就 是类的继承。继承是类之间的一种常见关 系,它是一种“一般”和 “特殊”的关系。如在 一个学校的人事管理系统中,可定义如下几 个类:人员Person类、学生Student类和教师Teacher类,其中Person 类是Student类和Teacher类的父类,而Student类和Teacher类是 Personr的子类。它们的关系如图4.1所示:通过继承,子类继承了母 类的属性和行为,在子类中就不用再定义父类中已有的属性和行为了。 如在Person类中,应该具有姓名、性别、年龄、籍贯、民族等属性和 对人信息的修改和打印等行为,它们已被封装在Person类中,在 Student类和Teacher类中就不用再定义Person类中已有的属性和行为 了。通过继承,Student类和Teacher类中已经自动具有了从父类继承 下来的属性和行为,而只需在Student类和Teacher类中添加其自身所 需的属性和行为即可。 4.1 面向对象程序设计— 面向对象的概念