编程红宝书(珍藏版) ava 完金自学手册 第7章面向对象技术导论 ·面向对象(0 b ject-Oriented)技术体现了计算机程序设计的 种思想,这种技术体现在具体的开发语言中,如Java语 言。一种语言完全或部分的以面向对象的思想设计和实现 就称该语言为面向对象的计算机程序开发语言。 本节既然是导论,目的是希望读者对面向对象编程具有初 步认识,当然这需要具体内容来介绍。面向对象技术主要 体现在面向对象的思想,进而讨论类和对象(类的实体) 而继承、多态、封装又是面向对象思想不可替代的优势体 现,所以本章将对面向对象的主要内容做细致的讲解,该 章是面向对象程序设计的基础,具有抽象性的特点,但是 有确实理解和把握了这些思想才能更好的利用Java语言 进行程序设计和代码的编写。 Q想桃工业出隙社
第7章 面向对象技术导论 • 面向对象(Object-Oriented)技术体现了计算机程序设计的 一种思想,这种技术体现在具体的开发语言中,如Java语 言。一种语言完全或部分的以面向对象的思想设计和实现 就称该语言为面向对象的计算机程序开发语言。 • 本节既然是导论,目的是希望读者对面向对象编程具有初 步认识,当然这需要具体内容来介绍。面向对象技术主要 体现在面向对象的思想,进而讨论类和对象(类的实体), 而继承、多态、封装又是面向对象思想不可替代的优势体 现,所以本章将对面向对象的主要内容做细致的讲解,该 章是面向对象程序设计的基础,具有抽象性的特点,但是 只有确实理解和把握了这些思想才能更好的利用Java语言 进行程序设计和代码的编写
编程红宝书(珍藏版) ava 完金自学手册 万事万物皆对象 ·在以往的程序开发语言如C语言中,整个程序是过 程式的。面向对象的思想出现的比较早。在80年 代软件开发方面面向对象技术再次成为研究的热 点,其中, Booch、Coad/ Yourdon、 Jacobson在面 向对象的研究中获得了业界的广泛认可。尤其是 统一建模语言综合了 Booch、Coad/ Yourdon、 Jacobson的各自优点,并且吸收了许多工程实践 经验的理念和技术,成为OMG面向对象方法的标准。 应用到计算机编程领域后,它的突出优势体现在 对象概念上。这种把万物抽象化为对象的思想, 符合人类对事物理解的思维方式,把这种思维方 式应用到计算机程序设计上可以流畅的表达程序 员的思想,简化系统的分析和设计。 Q想桃工业出隙社
7.1 万事万物皆对象 • 在以往的程序开发语言如C语言中,整个程序是过 程式的。面向对象的思想出现的比较早。在80年 代软件开发方面面向对象技术再次成为研究的热 点,其中,Booch、Coad/Yourdon、Jacobson在面 向对象的研究中获得了业界的广泛认可。尤其是 统一建模语言综合了Booch、Coad/Yourdon、 Jacobson的各自优点,并且吸收了许多工程实践 经验的理念和技术,成为OMG面向对象方法的标准。 应用到计算机编程领域后,它的突出优势体现在 对象概念上。这种把万物抽象化为对象的思想, 符合人类对事物理解的思维方式,把这种思维方 式应用到计算机程序设计上可以流畅的表达程序 员的思想,简化系统的分析和设计
编程红宝书(珍藏版) ava 完金自学手册 7.1.1程序设计中的抽象化认识 我们日常生活中的对象(0 b ject)可以是具体的实物,如 桌子、灯泡、电视等。也可以是抽象的事物,如一个想法 抽象的事物摸不着、看不到,但是人类的思想可以感受到, 最终它可以通过某种方式体现出来,所以抽象和具体是事 物的两端,是人类智慧的体现 计算机程序设计在程序员角度讲就是对待解决问题的建模, 这种建模的过程就是对问题域进行抽象化认识的过程。将 问题空间中诸元素表示成对象。将对象的行为描述为具体 的实现方法,把对象的静态特性描述为具体的静态属性, 程序可以根据特定的问题领域而灵活的添加新类型的对象 因此在理解分析待求解的问题时也就完成了对问题的抽象 化认识,把抽象化的结果用面向对象的程序设计语言实现。 在面向对象的程序设计中,对象无处不在。整个程序是由 功能各异的对象组成的。对象间通过消息通信,协调完成 系列任务。 Q想桃工业出隙社
7.1.1 程序设计中的抽象化认识 • 我们日常生活中的对象(Object)可以是具体的实物,如 桌子、灯泡、电视等。也可以是抽象的事物,如一个想法。 抽象的事物摸不着、看不到,但是人类的思想可以感受到, 最终它可以通过某种方式体现出来,所以抽象和具体是事 物的两端,是人类智慧的体现。 • 计算机程序设计在程序员角度讲就是对待解决问题的建模, 这种建模的过程就是对问题域进行抽象化认识的过程。将 问题空间中诸元素表示成对象。将对象的行为描述为具体 的实现方法,把对象的静态特性描述为具体的静态属性。 程序可以根据特定的问题领域而灵活的添加新类型的对象。 因此在理解分析待求解的问题时也就完成了对问题的抽象 化认识,把抽象化的结果用面向对象的程序设计语言实现。 • 在面向对象的程序设计中,对象无处不在。整个程序是由 功能各异的对象组成的。对象间通过消息通信,协调完成 一系列任务
编程红宝书(珍藏版) ava 完金自学手册 7.1.2如何获得和操控对象 Java语言本身是一种面向对象的程序设计语言 所以采用该语言进行程序设计之前必须接纳并理 解面向对象的思想。而一旦转换到00的编程语言 中,将极大地提高编程能力和编程效率。7.1.1节 讲过,面向对象的程序全部由对象组成,对象无 处不在,对象之间相互通信,互相协调完成软件 的功能要求 那么在Java中如何操纵对象呢?Java给出了统 的对象操控方式即采用对象的“引用”,通过引 用来操控对象,如修改其属性、向对象发消息、 调用对象的行为等。我们以一个具体的 Employee(雇员类)类说明如何获得和操控 械工业出版社 na Machine Press
7.1.2 如何获得和操控对象 • Java语言本身是一种面向对象的程序设计语言。 所以采用该语言进行程序设计之前必须接纳并理 解面向对象的思想。而一旦转换到OO的编程语言 中,将极大地提高编程能力和编程效率。7.1.1节 讲过,面向对象的程序全部由对象组成,对象无 处不在,对象之间相互通信,互相协调完成软件 的功能要求。 • 那么在Java中如何操纵对象呢?Java给出了统一 的对象操控方式即采用对象的“引用”,通过引 用来操控对象,如修改其属性、向对象发消息、 调用对象的行为等。我们以一个具体的 Employee(雇员类)类说明如何获得和操控对象
编程红宝书(珍藏版) ava 完金自学手册 7.1.3对象的存储空间 理解了程序设计中的抽象概念,把握了如何获得和操控对象后,有必要知 道程序运行时,对象在内存中是如何存储的。 首先分析一下对象相关的哪些内容需要存放,这里介绍的流对象和持久化 对象在以后的章节还会讲解,这里读者知道存在这样的东西,关键是知道 它们对应的存储空间。 引用:在7.1.2节介绍了引用,引用是操控对象的一个句柄,就如用遥控 器操纵电视一样,此时遥控器是引用,电视是电视类的一个具体实体。这 样引用就可操控对象的属性和行为了。 Java对象:Java对象是通过new关键字创建的一个类实体,这个对象不是 像类定义那样是个概念性的东西,而是具体的可以操控的实体了。 静态数据:静态数据是指由 static关键字修饰的数据,如 static float rate=0.523;这类数据存储在内存中的固定位置。当然 static关键字即 可以修饰类,也可以修饰方法,但这些 static类和方法存放的地点与静态 数据不同。 常量数据:常量数据是在整个程序中永远不会改变的数据 流对象和持久化对象:Java程序中的对象一般实在程序运行时存在的,可 以随时供系统调用,这些对象存活于程序之中。但Java存在一种存活于程 序之外的对象或数据,可以不受运行时刻程序控制,而独立存在。典型的 是“流对象”和“持久化对象”。二者都把对象存储在磁 了当时对象的状态。在需要该对象时,可以通过某种方式生成带期地限盐
7.1.3 对象的存储空间 • 理解了程序设计中的抽象概念,把握了如何获得和操控对象后,有必要知 道程序运行时,对象在内存中是如何存储的。 • 首先分析一下对象相关的哪些内容需要存放,这里介绍的流对象和持久化 对象在以后的章节还会讲解,这里读者知道存在这样的东西,关键是知道 它们对应的存储空间。 • 引用:在7.1.2节介绍了引用,引用是操控对象的一个句柄,就如用遥控 器操纵电视一样,此时遥控器是引用,电视是电视类的一个具体实体。这 样引用就可操控对象的属性和行为了。 • Java对象:Java对象是通过new关键字创建的一个类实体,这个对象不是 像类定义那样是个概念性的东西,而是具体的可以操控的实体了。 • 静态数据:静态数据是指由static关键字修饰的数据,如static float rate = 0.523;这类数据存储在内存中的固定位置。当然static关键字即 可以修饰类,也可以修饰方法,但这些static类和方法存放的地点与静态 数据不同。 • 常量数据:常量数据是在整个程序中永远不会改变的数据。 • 流对象和持久化对象:Java程序中的对象一般实在程序运行时存在的,可 以随时供系统调用,这些对象存活于程序之中。但Java存在一种存活于程 序之外的对象或数据,可以不受运行时刻程序控制,而独立存在。典型的 是“流对象 ”和“持久化对象 ”。二者都把对象存储在磁盘上,并保存 了当时对象的状态。在需要该对象时,可以通过某种方式生成常规的对象
编程红宝书(珍藏版) ava 完金自学手册 7.1.4对象的生存空间 人类的生命是有限的。一个人类对象也就是一个 具体的人在生命周期内可以完成很多事情。而在 生命周期外则无能为力了。每个具体生命不会无 休止的生活在这个世界上,不然地球的各种资源 也无法承受。每个生命个体在离开这个世界时得 到适当的清理。对于程序中的对象也有类似的问 题 Java对象具有生命周期,在生命周期内系统可以 随时调用。但这样的对象不可能全部存活于内存 中,不然很快就会耗尽内存资源。所以,系统会 适当销毁一些暂时不用的对象,以释放空间给新 的对象使用。 Q想桃工业出隙社
7.1.4 对象的生存空间 • 人类的生命是有限的。一个人类对象也就是一个 具体的人在生命周期内可以完成很多事情。而在 生命周期外则无能为力了。每个具体生命不会无 休止的生活在这个世界上,不然地球的各种资源 也无法承受。每个生命个体在离开这个世界时得 到适当的清理。对于程序中的对象也有类似的问 题。 • Java对象具有生命周期,在生命周期内系统可以 随时调用。但这样的对象不可能全部存活于内存 中,不然很快就会耗尽内存资源。所以,系统会 适当销毁一些暂时不用的对象,以释放空间给新 的对象使用
编程红宝书(珍藏版) ava 完金自学手册 7.2一种新的数据类型:类(C1ass) 类是面向对象思想的重要概念。其实,面向对象 程序设计的本质就是类的设计,在分析问题域后, 抽象出适当的类,完成类的属性、行为和类间的 通信接口设计,从而完成一个软件系统。类也是 Java中的一种数据类型。本节重点讲解类的组 成成份,辅助介绍其他相应的构件 Q想桃工业出隙社
7.2 一种新的数据类型:类(Class) • 类是面向对象思想的重要概念。其实,面向对象 程序设计的本质就是类的设计,在分析问题域后, 抽象出适当的类,完成类的属性、行为和类间的 通信接口设计,从而完成一个软件系统。类也是 Java中的一种数据类型。 本节重点讲解类的组 成成份,辅助介绍其他相应的构件
编程红宝书(珍藏版) ava 完金自学手册 =7.2.1类( class)概述 在Java中万物皆对象。一个对象必定区别于另一个对象而成为 自己。对象具有静态属性和动态行为。其实,正是这些静态属 性和行为是一个对象区别于另一个对象的本质。但对象具有 定的外观,正如人的名字一样。所以从外在看,一个对象可从 命名的角度区别于另一个对象,而内在是对象的属性和行为上 有区别。 Java使用 class关键字命名类,在关键字 class后书写类名。如: class ClassName 这样就定义了一个类类型,此时类主体{}内什么也没有。所 以,该类不能完成任何任务。但它已经是符合Java规范定义的 类了。可以生成该类的对象,并且不受对象数目的限制。 Class Name newClass new ClassName o 显然这个对象是不能做任何事情的,因为类主体内什么也没定 义,没有静态的属性,也没定义合适的方法。下节将介绍类的 属性和方法。 Q想桃工业出隙社
7.2.1 类(class)概述 • 在Java中万物皆对象。一个对象必定区别于另一个对象而成为 自己。对象具有静态属性和动态行为。其实,正是这些静态属 性和行为是一个对象区别于另一个对象的本质。但对象具有一 定的外观,正如人的名字一样。所以从外在看,一个对象可从 命名的角度区别于另一个对象,而内在是对象的属性和行为上 有区别。 • Java使用class关键字命名类,在关键字class后书写类名。如: • class ClassName { } • 这样就定义了一个类类型,此时类主体{ }内什么也没有。所 以,该类不能完成任何任务。但它已经是符合Java规范定义的 类了。可以生成该类的对象,并且不受对象数目的限制。 • ClassName newClass = new ClassName(); • 显然这个对象是不能做任何事情的,因为类主体内什么也没定 义,没有静态的属性,也没定义合适的方法。下节将介绍类的 属性和方法
编程红宝书(珍藏版) ava 完金自学手册 7.2.2类的属性详解 在Java程序设计中所有的工作就是定义类。定义一个类就需要 向类的主体内增加两种元素,一是属性、一是方法。本节重点 讲述类的属性 属性是说明对象的静态属性的。如汽车类,该类的对象具有某 些共有的属性,如车的颜色、品牌、加速度、外观款式等。这 些可以从静态的角度描述这类事物。类的属性可以是内置数据 类型,如int型、byte型、 boolean型、char型等。也可以是 类类型。假设已经定义了类 Worker类,下面定义一个Car类。 在Car类中把 Worker类对象引用作为其一个属性。 class Car String color float velocity char style · Worker worker Q想桃工业出隙社
7.2.2 类的属性详解 • 在Java程序设计中所有的工作就是定义类。定义一个类就需要 向类的主体内增加两种元素,一是属性、一是方法。本节重点 讲述类的属性。 • 属性是说明对象的静态属性的。如汽车类,该类的对象具有某 些共有的属性,如车的颜色、品牌、加速度、外观款式等。这 些可以从静态的角度描述这类事物。类的属性可以是内置数据 类型,如int型、byte[]型、boolean型、char型等。也可以是 类类型。假设已经定义了类Worker类,下面定义一个Car类。 在Car类中把Worker类对象引用作为其一个属性。 • class Car { • String color; • float velocity; • char style; • Worker worker; • }
编程红宝书(珍藏版) ava 完金自学手册 7.2.3类的方法详解 这里从两个方面详细地介绍方法,一个是方法概述、一个 是参数和返回值。 (1)方法概述:若想让对象可以做些事情,就必须定义对 象的方法( method)。在过程式语言中用函数来表述一个 子程序,这里的函数功能和Java中对象的方法是异名同工。 不过既然Java规范中定了对象的行为是方法,本书就沿用规 范的概念。 (2)参数和返回值:方法的参数是在对象调用此方法或向 对象发送消息时,需要向方法提供的信息,方法可以把提 供的信息经过方法主体的处理从而完成方法的功能。参数 要求有参数类型和参数引用,其实说到引用读者或许有疑 问,引用是相对于类对象而言的,引用是操控对象的句柄。 其实,Java中类方法中的参数就是对象形式的。传入参数的 对象类型必须和参数要求的对象类型相同 Q想桃工业出隙社
7.2.3 类的方法详解 • 这里从两个方面详细地介绍方法,一个是方法概述、一个 是参数和返回值。 • (1)方法概述:若想让对象可以做些事情,就必须定义对 象的方法(method)。在过程式语言中用函数来表述一个 子程序,这里的函数功能和Java中对象的方法是异名同工。 不过既然Java规范中定了对象的行为是方法,本书就沿用规 范的概念。 • (2)参数和返回值:方法的参数是在对象调用此方法或向 对象发送消息时,需要向方法提供的信息,方法可以把提 供的信息经过方法主体的处理从而完成方法的功能。参数 要求有参数类型和参数引用,其实说到引用读者或许有疑 问,引用是相对于类对象而言的 ,引用是操控对象的句柄。 其实,Java中类方法中的参数就是对象形式的。传入参数的 对象类型必须和参数要求的对象类型相同