第4章 对象与类
面向对象程序设计概述
对象构造
使用现有类
包
用户自定义类
类路径
静态域和方法
文档注释
方法参数
类设计技巧
这一章将主要介绍如下内容:
面向对象程序设计
如何创建标准Java类库中的类对象
如何编写自己的类
如果你没有面向对象程序设计的应用背景,就一定要认真地阅读一下本章的内容。面向对象程序设计与面向过程
程序设计在思维方式上存在着很大的差别。改变一种思维方式并不是一件很容易的事情,而且为了继续学习Java
也要清楚对象的概念。
对于具有使用C++(www.cppentry.com)经历的程序员来说,与上一章相同,对本章的内容不会感到太陌生,但在两种语言之间还是存在着很多不同之处,所以要认真地阅读本章的后半部分内容,你将发现“C++(www.cppentry.com)注释”对学习Java语言会很有帮助的。
4.1 面向对象程序设计概述
面向对象程序设计(简称OOP)是当今主流的程序设计范型,它已经取代了70年代的“结构化”过程化程序设计开发技术。Java 是完全面向对象的,必须熟悉OOP才能够编写Java程序。
面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。程序中的很多对象来自于标准库,还有一些是自定义的。究竟是自己构造对象,还是从外界购买对象完全取决于预算和时间。但是,从根本上说,只要对象能够满足要求,就不必关心其功能的具体实现过程。在OOP中,不必关心对象的具体实现,只要能够满足用户的需求即可。
传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。这些过程一旦被确定,就要开始考虑存储数据的方式。这就是Pascal语言的设计者Niklaus Wirth将其编著的有关程序设计的著名书籍命名为《算法+数据结构=程序》(Algorithms + Data Structures = Programs, Prentice Hall, 1975)的原因。需要注意的是,在Wirth命名的标题中,算法是第一位的,数据结构是第二位的。这就明确地表述了程序员的工作方式。首先要确定如何操作数据,然后再决定如何组织数据,以便于数据操作。OOP却调换了这个次序,数据被放在第一位,然后再考虑操作数据的算法。
对于一些规模较小的问题,将其分解为过程的开发方式比较理想。而面向对象更加适用于解决规模较大的问题。要想实现一个简单的web浏览器可能需要大约2000个过程,这些过程可能需要对一组全局数据进行操作。采用面向对象的设计风格,可能只需要大约100个类,每个类平均包含20个方法(如图4-1所示)。后者更易于程序员掌握,也容易找到bug。假设给定对象的数据处于一种错误状态,在访问过这个数据项的20个方法中查找错误要比在2000个过程中查找容易得多。
|
| 图4-1 面向过程与面向对象的程序设计对比 |
【责任编辑:
夏书 TEL:(010)68476606】