文档库 最新最全的文档下载
当前位置:文档库 › 面向对象思想

面向对象思想

第1章Java与面向对象思想

工欲善其事,必先明其理、利其器。为了在学习Java的征途中少走弯路、多走捷径,我们有必要了解Java语言中蕴涵的面向对象等指导思想,并在设计和开发Java程序的过程中充分应用这些思想。

1.1 初识Java语言

德国大哲学家黑格尔说过:凡是存在的,都是合理的。用这句话的推论可以很好地形容Java语言的前景:凡是流行的,总有它流行的道理。

虽然说,Java语言的诞生是个偶然的过程,但它却能很好地融合“面向对象”、“跨平台”和“编程简洁”等特性,所以它的流行是个必然的趋势。并且,随着Java语言的不断发展,它的应用前景将更为宽阔。

说到这里,可能有的读者会被“面向对象思想”、“跨平台”等名词搞得找不到方向,其实,这些不是高深晦涩的八股文,而是同我们现实生活密切相关的概念。

1.1.1 Java是什么

Java语言的诞生可以说是个“无意栽柳绿成荫”的过程。在20世纪90年代,Sun公司的工程师们经常要商讨如何解决面包烘烤机、恒温器等日常数控系统中的数据共享问题,比方说,如何在面包烘烤机的硬件系统内核里读取恒温器里关于温度的数据,实现定时加热的功能。

这些工程师在研究中发现,由于不同产品的制造商们采用不同的硬件和应用软件来组装他们的产品,所以要让这些产品在协同工作时实现数据共享是比较困难的,这些困难主要有:如何保证共享数据时的数据安全性,如何定义数据共享和传输的格式等。

因此,这些工程师把各种不同的产品按功能模块拆分,理解其基本功能模块(比如加热模块)的特性,以便使它们能更好地一起工作。事实上,他们的这种工作方法,除了能有效解决最初的“共享数据”的问题外,同时也可以解决因硬件标准不同而导致的其他方面的问题,比如可以让烤面包机和恒温器结合,让烤面包机在达到一定的时间停止烘烤,进行保温工作。

随着研究的深入,他们发现,通过这种工作方法,还能通过集成功能模块,快速有效地组装各种产品和模块。不过,这种集成,需要在各种不同标准的模块上构建一层统一的能屏蔽不同硬件模块差异的操作系统(这就是Java虚拟机的雏形),由于当时尚无一种语言可以实现上述的工作思路,所以工程师们就打算自己开发一种新的编程语言,于是Java语言应运而生。

Java语言之所以流行,是因为它具有跨平台性,即使用Java语言,程序员可以开发能在不同网

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

络平台和不同操作系统上运行的应用软件。这样的好处在于,使用Java的软件开发公司就不必再考虑项目在不同操作系统中的开发和安装细节,从而可以把更多的精力和资源安排在开发项目功能和设计项目的架构上。

综上所述,Java除了具有其他编程语言所有的好处之外,还具有以下四个特点:

1.由于Java的语法结构比较简洁,所以学习起来很容易。

2.由于Java语言功能强大,所以使用Java语言可以开发多种类型的应用。比如使用J2ME可

以开发基于手机的应用,使用J2EE可以开发基于企业级的大型应用。

3.由于Java语言是基于面向对象的思想的,所以用Java语言开发出来的代码可以具有结构清

晰、维护容易和扩展简便等优点。

4.由于Java语言的运行环境具有很强的容错机制,能保证Java程序在诸如内存不够的情况下

不崩溃,不死机,所以使用Java语言可以开发出健壮性的代码。

1.1.2 为什么要选用Java语言

由于Java具有跨平台的特性,所以同其他编程语言相比,它更具有以下的优势:

1.用Java可以优化同数据库的连接

连接访问数据库是项目开发的基本需求,能实现数据库访问控制的编程语言很多,但Java 语言更能根据项目的实际需求,采用适合的方式,用一种高效和安全的方式同数据库交互。

Java采用JDBC(Java DataBase Connectivity)提供的方法连接到数据库上。JDBC里封装了用Java语言读写数据库的通用方法,同常见的ODBC连接数据库的方式相比,JDBC由于具有了Java语言跨平台的特性,不仅能同Windows平台上的数据库进行交互,更能方便地连接访问构架在其他操作系统上的数据库环境。此外,通过JDBC里定义的优化查询功能,程序员更能以高效和安全的方式执行SQL语句,操作数据库。

2.用Java可以开发具有强大功能的网络应用

现在网络的应用涉及到各个方面中,比如我们可以在家中边喝着咖啡,边在网络上订购图书,安逸的在家等着图书送上门。又或者某个公司的老板,在家中通过Java所开发的应用程序,就可以管理公司的日常运营。

使用Java语言,可以在不同的网络环境上构架一个虚拟的软件平台,这层平台不仅能向用户屏蔽不同网络间的差异,更能封装网络底层的数据交换与通讯的细节。

所以,网络编程是Java语言的特长。程序员们通过Java提供的网络开发类库,不仅能快速地开发基本的Web应用项目,更能开发面向网络服务的高级应用,比如能实现“运行异地代码,就像在本地运行一样的”RMI分布式应用。

3.用Java语言可以连接不同硬件平台

如果我们要实现手机与计算机之间的通讯和交互,这用其他编程语言的眼光来看是不可能完成的任务,因为不同硬件平台包含了不同的操作系统,而不同操作系统间的数据传输和存储格式的标准是不同的。

第1章Java与面向对象思想

但使用Java语言可以轻易地实现这一需求。Java语言的跨平台特性导致了Java开发出来的代码是面向Java虚拟机的,而不是面向操作系统,更不是面向硬件的。所以,Java语言包含了诸如J2ME、J2EE和J2SE等开发标准,这些标准包含的类库(即包含实现特定功能的jar包,类似于C语言的.h文件)能帮助程序员实现不同硬件平台的连接。

综上所述,同其他编程语言相比,Java具有跨平台(及其衍生)的优势,这些优势不仅能从语法架构的层次,帮助程序员改善项目开发的方式,提高项目开发的效率,更能从应用架构的层次,帮助程序员很好地实现“一次开发,多次运行”的项目部署方式。这对缩短项目开发周期,降低项目的开发和维护成本是大有好处的。

4.支持Java语言的指导思想和标准很多

除了有面向对象思想来指导Java的开发设计外,能优化代码结构的设计模式原则也可以用来指导Java编程。此外,在手机开发和企业级开发领域也有较多的标准来规范和协助Java编程。

在Web和数据库领域中,有多家商业和非商业的团队,都对Java有很好的支持和扩展。

有了这些方法论和标准的帮助,程序员们在开发Java项目时,可以较容易地得到技术和设计方面的支持。

1.1.3 Java语言的解释执行与跨平台特性

一些编程语言(如C++)的编译器是根据源文件,直接输出可执行的EXE文件。与之相比,Java 编译器的输出并不是可执行的代码,而是字节码(byte code)。

所谓字节码,是一套能在Java 虚拟机下执行的高度优化的指令集,在内存中也只不过是1010……这样的字节编码。Java 虚拟机(Java Virtual Machine,JVM),从其表现形式来看,是一个字节码解释器,即可以解释执行字节码定义的动作。

从操作系统的级别层次来看,它是构架在不同操作系统上的,能屏蔽不同操作系统差异的基于软件的平台。虚拟机能保证用户看到其注重的代码的运行结果,而向用户屏蔽其不关心的代码在不同操作系统里的执行细节。这就好比我们在安装完声卡的驱动程序后,Windows操作系统只向我们展示声卡的发声效果,而不是声卡的工作方式。

将Java 程序解释成字节码,而不是最终的面向具体操作系统的可执行文件,可以让它运行在不同平台的虚拟机上,事实上,我们只要在各种操作系统上都安装不同的Java 虚拟机就可以做到这点。所以,在特定的操作系统中,只要有支持Java功能的jar包存在,Java 程序就可以运行了。尽管不同平台的Java 虚拟机和对应的支持jar包都是不同的(它们不应该相同),但它们的作用都是解释并运行Java 字节码。因此,字节码的解释与运行机制是保证程序能很容易地在不同操作系统上运行。

图1-1说明了虚拟机的工作方式:

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

图1.1 Java虚拟机的工作方式

从Java解释执行的运行机制的角度上,我们能看到其跨平台的特性,和保证其拥有跨平台的支持机制。

1.1.4 怎样学好Java

Java语言的前景非常广阔,但是同时也请大家放心,Java的应用面很广,但并不意味着它很难学。事实上正好相反,由于Java语言把一些复杂而烦琐的实现细节封装到了定义好的功能包中,所以程序员们能以调用接口方法的方式,实现看上去很复杂的应用。另外,学习Java是零基础的,大家只需要有软件操作的经验,就可以由浅入深地学习Java语法和Java的技术组件。

虽然说Java的学习不需要有软件编程的基础,但是,如果大家掌握了以下的学习Java的方法,就可以事半功倍地学好Java语言。

●重点关注代码的结构,不要拘泥于语法实现的细节

学习语法能帮助我们更好地了解Java的特性,但学习语法的最终目的是构造功能模块和开发项目,所以,在学习过程中,我们更应从面向对象思想的角度来观察语法的实现方式,而不要拘泥于“某函数的参数是什么含义”等细节问题。

●用面向对象的思想来指导学习过程

面向对象思想参照了现实生活中观察问题、解决问题的思维方式,将应用程序中的一切模型整合成对象,并通过归纳和抽象对象,提取出一套解决问题的方法和思路。

程序员们能使用面向对象思想构建出一系列符合规范的组件对象。通过组装这些对象,程序员们能比较轻松地开发和扩展项目。

所以,通过面向对象思想的指导,我们能很好地学会用Java语言构建模块和项目的一般方式。只有有了良好的代码结构,项目才能很好地发挥由Java语言带来的优势。

●理论与实践相结合

我们通过学习理论,能够很好地了解Java语言的优点和项目开发的方式,但我们更需要通过上机实践来加深对Java语言的理解。

事实上,我们在动手实践中,不仅能很好地检验我们的理论学习成果,更能帮助我们找出自己学习上的薄弱点。另外,动手实践过程中的纠错过程更能帮助我们在短时间内掌握Java语言。

第1章Java与面向对象思想

多查阅资料,多寻求帮助

在学习和开发过程中,如果我们遇到了语法或设计方面的问题,而自己又无法解决,那我们就可以从书本和网络上查阅资料,帮助我们解决问题,事实上,网络上的资料多而杂,如何从海量的信息中找到自己需要的,这是个问题。

比如,我们想要知道,如何用Java语言开发图形界面,我们可以在https://www.wendangku.net/doc/7b8873203.html,的搜索栏里输入“Java;图形界面开发”,经过搜索,我们可以在网页资料里得到“Swing”和“Awt”等关键字,通过对这些关键字的递进式搜索,就可以得到需要的内容,有时,甚至源代码都能得到。

1.2 什么是面向对象思想

目前,面向对象的思想被软件开发界广为追捧,其实,面向对象思想不是高深的理论,而是根据前人大量编程项目总结出来的一套分析和解决编程方面问题的方法。

以面向对象思想为指导,可以优化Java代码的结构,更可以让数据库访问模块变得富有弹性——即让代码和模块能更好地适应项目需求的频繁变化。

1.2.1 软件开发的方法学——面向对象思想提出的背景

计算机语言刚出现时,采用的编程语言是面向硬件的机器语言,即用一大堆计算机硬件能识别的0和1来编写代码。写这种机器代码需要很高的技巧,它们调试起来也比较困难,所以当时的程序员都是精英级别的人物。

为了提高编程语言的适用性,提升代码编写的效率,专家们开发了以汇编语言为代表的低级语言,即用一些助记符来代替晦涩的机器语言,例如用add a b,来计算a+b的值。这类语言直接与内存和其他硬件打交道,以使用最小系统资源和谋求最大硬件利用率为开发准则,在当时低配置的硬件环境下是有很大的实用意义的。

但是,用这种编程语言开发出来的代码的结构非常混乱,并且很难读懂。这样的情况可能在几百行规模的代码量下并不明显,但如果当项目规模扩大,代码量越来越多的时候,这个问题就突显出来了。更有甚者,作者自己在开发结束后,往往会忘记自己写的代码的结构和语意,这样的代码很难维护和阅读。

为了解决这类问题,提高代码的逻辑性,软件语言方面的专家提出了初步融合面向对象思想的结构化的面向过程语言。

结构化语言的重要特征是,在代码里分离了代码逻辑和程序数据,并使用了分支(IF)和循环(While和For)等关键字来优化代码的逻辑结构。由于结构化的语言使用子模块顺序调用的方式控制代码流程,所以又叫面向过程语言,以C语言为代表。

和汇编语言相比,面向过程语言能很大程度地改善代码结构,提高代码的逻辑性。具体表现为以下两点:

1.由于在面向过程的语言里,可以把功能点以函数(过程)的形式封装,所以代码的重用性能

会得到一定程度的提高,即后继项目可以通过调用具有相同功能的函数来利用现有的代码,

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

这对项目的二次开发或者是功能升级是非常有利的。

2.由于面向过程语言摒弃了使用goto(或者是jump)语句的跳转方式,而使用了分支和循环

等结构性语句,所以代码的结构能得到大幅度的改善,从而能在一定程度上提高项目的可读

性和可维护性。

然而,在面向过程语言的使用过程中,程序员们发现其依然有本质上的缺陷,具体表现为:

1.在模块间的函数调用时,由于无法屏蔽模块里不希望被访问修改的关键变量,这将导致模块

间有很高的关联度,这对代码维护是非常不利的,往往会修改一处而触动全部代码。

2.代码的重用级别仅仅是局限于函数级别的,这导致无法大量有效地利用已开发完成的代码成

果,这对代码的重复性利用非常不利。

3.函数的定义是针对具体动作和具体对象的。比如说,我们要定义打印的方法,如果我们使用

的打印机型号不同,那我们不得不根据不同的型号,定义多个不同名的方法。也就是说,面

对业务逻辑(业务上要做的事情)相同但业务逻辑处理对象不同的需求,必须要写成多个不

同名的函数,这导致了代码过于注重细节,而无法考虑逻辑性、重用性和维护性等大局方面

的问题。

为了解决上述问题,软件语言的专家们吸取面向过程语言中“结构化”和“模块化”等优秀方法,提出了面向对象的指导思想。

面向对象思想参照了现实生活中观察问题、解决问题的思维方式,将应用程序中的一切模型以类的形式,整合成对象,并通过归纳和抽象对象,提取出一套解决问题的方法和思路。

所以,面向对象思想可以通过优化模块间的结构和加固模块间的坚固性,来指导构造软件项目行业“摩天大楼”。

1.2.2 面向对象的物质基础——类与封装

类是基于面向对象思想编程语言的基础,程序员可以把具有相同业务性质的代码封装到一个类里,通过接口方法向外部代码提供服务,同时向外部代码屏蔽类里服务的具体实现方式。

对象是类的实例,类一般是个抽象名词,比如“人类”,而对象则是具体的物质存在,比如“张三”这个人。

在现实生活中,我们经常会遇到“类”和“对象”这些概念,比如封装了能实现“用微波加热材料”功能的微波炉类。这里,用户可以使用面板上的按钮,使用该类里提供的加热等服务,并且,由于该类实现了封装,所以在使用的时候,用户可以不用了解其中的微波加热原理以及实现机制。

通过上面例子我们可以看出,类是对现实生活中真正存在的对象的描述,并且这些对象都具有共同的属性和行为。但是,根据不同的系统需求,同样的一种对象会被描述成具有不同属性和行为的类。比如,对于银行系统,人的这个类应该具有账号、存款余额的属性和存钱、取钱的行为,每个人都有自己不同的账号和相关金额,但是他们存钱取钱的流程是相通的;而对于电信系统,同样的人这个类应该具有手机号码、卡内余额的属性和充费、扣费的行为。因此,我们要注意类的定义和它所封装的行为是否能够正确的反映实际系统的需求。

第1章 Java 与面向对象思想

1.2.3 抽象与代码复用——抽象类与概念抽象

抽象类也是类的一种,它同样拥有属性和行为,但是它与普通类最大的区别就在于抽象类里面允许有一些抽象的行为,抽象类只从概念的角度出发定义了类的行为,但是它没有描述行为的实现细节,而是把这个任务交给了它的子类来实现,它本身充当了父类的角色。因此,我们可以说子类不仅有从父类继承过来的属性和行为,而且它可以在父类原有内容的基础上做一些补充和发挥。父类只是做了一个概念的抽象。

下图1-2说明了这种抽象的必要性:

图1-2 抽象类示意图

对于汽车、自行车这两个类来说,它们都是父类车的子类,具有位置、速度属性和前进、后退行为,但是汽车有四个轮子,自行车有两个轮子,汽车的运动是靠发动机来实现的,而自行车的运动是靠人力来实现的。因此,我们在车这个父类里面只定义了关于运动的两个方法,具体的实现细节交给了它的两个子类来完成。这样我们不仅避免了在两个相近的类之间定义重复的属性和行为,而且还解决了允许不同的类具体的实现细节有所变化的问题。

抽象类可以帮助我们更加有效地解决代码重复问题,并且,它又不失灵活性,又同时达到了概念抽象的目的。这里我们又通过抽象类的概念引出了类之间,一个重要关系,就是子类与父类的继承,当然不仅抽象类可以作为父类,其他的一般类同样可以充当为某一子类的父类。只要它有这种继承的需求我们就可以这样来定义。

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

1.2.4 模块的开关——接口与功能抽象

接口的功能与抽象类相似,但是接口只能定义行为,这些行为的具体细节在实现了接口的类中描述,而抽象类还可以为这些类定义一些相同的属性,因此我们可以说,接口比抽象类要更加抽象。接口中只定义公共的行为,这些行为也就是实现它的那些类的功能,不同的类可以有不同实现细节,这里的原理与抽象类相同。

下图1-3说明了接口是如何做到功能抽象的:

图1-3 接口示意图

我们定义了交通工具这个接口,在这个接口里面定义了移动这个行为,但是行为的具体实现细节是在火车和飞机两个类里面完成的,并且是由不同的方式来实现的。假设某个用户有了一个从上海到北京的行程安排,并且由于时间紧,不能确定选择哪一种具体的交通工具,只知道要发生移动这个行为。那么,他可以先选择交通工具这个接口的移动行为,具体是坐火车还是坐飞机我们可以根据实际的情况来定。

接口是单单从行为的角度出发,把功能做了概念上的抽象,使得不同的类通过不同的机制实现名称相同的行为,方便使用者调用,隐藏了具体的实现细节。

1.2.5 同名但不同参——多态与重载

多态是面向对象编程的一个重要特征,从字面意思来看就是指具有多种形式或形态的情形。在面向对象的编程中,多态主要是指针对于类的行为有多种不同的变化,用相同的语言结构,来表示不同

第1章Java与面向对象思想

类型的实体或对不同类型的实体进行操作。即“相同的界面,不同的内部实现形式”。通常通过重载和覆写来实现多态。

重载是让类以统一的方式处理不同类型数据的一种手段。就是在类中可以创建多种行为,这些行为有一个特征是它们具有相同的名字,但具有不同的参数和不同的表现形式。调用行为时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性的一种表现,虽然行为的名字相同,但得到的是不同的表现形式。

重载在我们的现实生活中也很常见。如:保姆类有洗的这个行为,但是我们可以给她衣服或餐具等不同的对象,她会根据不同的输入实现不同的洗的细节,如果是衣服的话就放在盆里洗,如果是洗碗就在水池里洗。这带来最大的好处就是对于命令的发起者主人来说不需要记住太多的洗衣服还是洗碗的方法,只要把这些脏东西交给保姆并且发出一个洗的指令,保姆就会自动地进行处理,屏蔽了细节实现,不仅方便了主人,同时也提高了自己的价值。

让我们谈谈另外一种多态的实现——覆写。还记得我们上面提到过的子类和父类吗?是的,子类不仅可以实现父类里面的只给出具体定义而没有实现细节的行为,子类同时也可以改变父类中的行为,这个我们可以称之为“有所继承,有所发挥”。当你发现老爸那一套做法已经落伍了的时候,你是否会去改变它呢。我们把这种在子类中改变父类行为的具体实现细节,但是名字和接受的输入对象不变的动作就称之为覆写。

覆写在我们的现实生活中同样有着重要的意义。还拿上面的那个例子来说,原先的那个保姆带了一个徒弟,因为徒弟从师傅那里学会了如何做个好保姆,特别是如何洗东西,做保姆对于她来说可能更有优势。

但是时代进步了,我们的主人家里添置了洗衣机、洗碗机等家用电器。徒弟发现用这些东西会更加方便,既省时又省力,于是她快速地学会了如何操作这些家用电器来为主人提供更加优质的服务。对于她来说同样可以洗衣服和洗碗,只不过用的是洗衣机和洗碗机,而不是像她的师傅放在盆里或水池里洗了,并且现在洗得更快更好了。

对于任何一个保姆来说,主人只要给她脏东西并且发出洗的命令,她就会根据实际情况进行相应的操作,这时在这个洗的行为上发生了重载。主人把同样的碗这个对象交给保姆师傅和保姆徒弟来洗,她们也会进行相应的操作,师傅放在水池里洗,而徒弟用洗碗机洗,此时在这个洗的行为上却发生了覆写。

总结一下,类的行为可以有多种不同的表现形式,这叫做多态。对于那些具有相同的名字但是不同操作对象的行为来说,我们称之为重载;对于那些不仅拥有相同的名字而且操作的对象也相同,但是在子类与父类里面具有不同实现细节的行为来说,我们称之为覆写。

在编程语言中,那些名字相同参数类型不同的方法就叫做重载,那些分别处在子类父类里面名字相同参数类型也相同的方法叫做覆写。

1.2.6 具有面向对象思想语言的优势

传统的程序设计方法称为面向过程的程序设计方法,它是以具体的业务逻辑为基础,以实现方法为主要目的。它的缺点是:程序往往缺乏对代码重用性的支持,并且缺乏统一的接口, 使得当代码的

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

规模达到一定程度时,程序变得难以控制和管理,它的复杂性大大增加了开发人员的工作量。

面向对象的程序设计方法以一种更接近人类一般思维的方式去看待世界,按照现实世界的特点来管理复杂的事物,它根据实际的情况把生活中的对象抽象成相应的属性和行为组成的实体,对象之间通过互相调用来协调工作。

面向对象编程的基本单元是类,一个类描述了对象的特性,并把数据和操作数据的行为(称为方法)封装在一起。类可看成是对象的模板,基于这些模板我们可以派生出具体的对象,我们的工作就是把它们有条不紊地组织在一起。而且这样的组织方式更加符合人类认知世界的过程。我们把现实世界中的事物,根据它们的特征和关系定义到了我们的系统中,方便了操作和管理。

面向对象的语言大大提高了程序的重用性,降低了程序的复杂度,使得计算机可以处理更复杂的应用需求。Java不仅具备面向对象语言的所有特征,而且相对于别的面向对象的语言,它还屏蔽了许多繁琐的操作,简化了难度,降低了开发人员的学习曲线,在面向对象的编程领域中占有举足轻重的地位。

1.3 开发我们的第一个Java程序

JDK是Java语言的开发环境,它全称是Java Development Kit,意思为“Java开发包”,在本书里,我们采用目前最新的JDK1.6版本来开发Java代码。

根据大多数程序员的经验,配置Java开发环境,特别是配置Java的Eclipse集成开发环境,不是一件特别容易的事情,所以,大家一定要先按照本章里给出的配置JDK和Eclipse等步骤,在开发环境准确无误的前提下,开始编写我们的第一个Java代码。

1.3.1 如何配置Java的开发环境

1.3.1.1 下载和安装JDK

JDK1.6的安装程序可以从Sun公司的网站https://www.wendangku.net/doc/7b8873203.html,/javase/downloads/index.jsp上得到,由于JDK里包含了针对不同操作系统的Java虚拟机,所以不同的操作系统需要使用不同种类的JDK 安装程序。本书的所有代码都是运行在Windows环境下,所以要下载针对Windows平台的安装程序。

下载完成后,我们可以根据提示信息,开始JDK1.6的安装。安装的过程中,我们约定安装在C:\Java\jdk1.6.0目录下。安装结束之后,安装程序会再次要求我们确认安装路径,此时可以按安装路径C:\Java\jdk1.6.0来填写。JDK环境安装完成之后,建议大家重新启动电脑。安装完成之后,我们还需要设置环境变量。

1.3.1.2 设置JDK的环境变量

右击桌面上的“我的电脑”图标,在弹出的菜单选项里选择“属性”,由此打开Windows系统的属性页面,在其中选择“高级”页签,单击“环境变量”按钮,打开设置页面,如图1-4所示。

第1章 Java 与面向对象思想

图1-4 环境变量设置

我们在“系统变量”的列表中寻找JAVA_HOME 变量,如果没有找到,可以通过单击“新建”按钮,新建JAVA_HOME 变量,如图1-5所示。

图1-5 新建环境变量示意图

现在我们可以配置JAVA_HOME ,变量值为刚刚安装JDK 的目录C:\Java\jdk1.6.0。用这个变量,我们可以设置后面的JDK 的classpath 和path 环境。

按同样的方法,我们可以分别设置Path 和classpath 这两个环境变量,同样地,如果该变量存在,则在变量值的最后添加,反之则直接添加。

添加的Path 变量值为:“%JAVA_HOME%\bin;%JAVA_HOME%\lib;”,添加完成后,如果我们在命令行里运行“Javac ”等JDK 命令,系统会自动地到上述路径里去查找Javac.exe 。

添加的classpath 变量值为:“%JAVA_HOME%\lib;”,即系统会自动地到这个环境下查找Java 的开发包。

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

1.3.3.3 安装Eclipse

如果在开发Java项目的过程中,所有的代码都用文本编辑器编写,效率将会十分低下,所以,我们需要一个集开发编译运行于一体的集成开发环境。

Eclipse是Java理想的集成开发环境,它拥有非常方便的代码编写和编译运行等功能,同时也可以方便地添加各种针对JSP等的扩展API包,所以是比较流行的Java开发工具。

我们可以从Eclipse的官方网址https://www.wendangku.net/doc/7b8873203.html,/downloads/上获得它的安装包,目前最新的版本为Eclipse SDK 3.2.1。Eclipse同样有多种针对不同操作系统的下载版本,我们这里同样选择Windows版本。(请大家注意,目前Windows版本并不支持最新的Vista系统。)下载之后的Eclipse安装包是个Zip文件,它不需要安装,直接解压缩到指定的目即可以使用。我们约定解压缩的目录为:D:\eclipse目录。解压缩完成之后,运行D:\eclipse\eclipse.exe文件即可以启动Eclipse程序。

Eclipse启动之后会根据系统信息自动配置JDK环境,所以不用手动设置。

1.3.3.4 添加Eclipse的中文插件

通过刚才的方式,我们得到的是英文版的Eclipse,为了提高开发效率,我们最好需要一个中文插件包。

在网址https://www.wendangku.net/doc/7b8873203.html,/eclipse/downloads/下我们可以找到Eclipse的语言包“3.2.1_ Language_Packs”。

根据提示信息,我们可以下载NLpack1-eclipse-SDK-3.2.1-win32.zip 文件。我们将其解压为两个文件夹:features文件夹和plugins文件夹,完成后,将这两个文件夹里面的内容分别复制到Eclipse 的对应目录中。如果复制的时候存在同名目录,则覆盖它。

复制完成之后,到D:\eclipse\configuration文件夹中,将除了config.ini 文件以外的所有文件或文件夹删除。当我们再次重新运行Eclipse之后,就能看到中文版的开发界面了。

1.3.2 编写HelloWorld程序

按照刚才的步骤安装配置完JDK环境后,我们就可以开始编写第一个Java程序。

我们第一个Java程序将用传统的“文本编辑器”加“命令行”的开发和运行方式。虽然这有些简陋,但只有理解了这种开发和运行的原理,我们才能更好地使用Eclipse等集成开发环境。

我们在C盘根目录之下建立一个“HelloWorld.java”的文件,请注意这里的大小写必须完全一致。然后用记事本或其他文本工具编辑这个文件,代码如下:

public class HelloWorld

{

//代码从这里开始执行起

public static void main(String[] args)

{

//输出语句

第1章Java与面向对象思想

System.out.println("Hello World");

}

}

这段代码主要是通过System.out.println语句,输出Hello World语句。

从中,我们可以看到Java语言有如下三个基本特性:

1.Java的所有代码包含在一个class里,这个class是我们即将要讲述的“类”,这个类名必须

要和文件名一致,连大小写也要完全相同,并且,它的前缀必须是public,表示这个类是公

共的。

2.Java代码是从main函数开始执行起。

3.代码里,可以用“//”来编写注释,如果要编写多行注释,可以用“/* 注释语句*/”的方式。

另外,我们在编写Java代码时,为了让代码具有良好的可读性,编写代码的时候必须要遵循体现在上述代码中的良好的编码风格,这些风格主要包括:

1.类和方法必须要用{ }包含起来,并且,这对大括号必须要对齐。

2.必须要注意代码的缩进,比如编写类里的main函数时,我们缩进了两格,而在编写main函

数里的具体代码时,我们同样缩进了两格,这样的风格是非常利于体现代码的层次关系的。

3.为了让其他读代码的人能方便无误地阅读理解代码,也为了自己日后能更方便地修改代码,

所以在代码里要适当地多写点注释语句。

1.3.3 运行HelloWorld程序

我们打开“开始菜单”,点击其中的“运行”选项,输入“cmd”命令,启动命令行窗口,进入C盘根目录,在其中依次输入命令代码javac HelloWorld.java。

这里,javac命令用来把java文件编译为字节码的.class文件,执行完此命令后,会在C盘根目录下出现HelloWorld.class文件。

如果显示出错信息,请大家检查是否在输入程序的时候出现了错误,在确保编译成功后,我们继续运行java HelloWorld命令,如果在命令行里能显示“HelloWorld”的字符,则说明我们第一个Java 程序运行通过。

1.3.4 使用Eclipse集成开发环境运行HelloWorld程序

如果我们使用Eclipse开发环境,可以更有效地开发和运行Java代码。以刚才的Hello World程序为例,可以通过如下的步骤,在Eclipse里看到这段程序的运行结果。

(1)在目录里,点击打开Eclipse的执行文件eclipse.exe,在弹出的“询问工作空间”的对话框里,设置代码开发目录,如图1-6所示,比如是“D:\work\”。

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

图1-6 完成创建Java项目的示意图

(2)点击Eclipse环境里的“文件→新建→项目”菜单,进入“新建项目”的向导对话框,在其中选中“Java Project”,点击“下一步”按钮,在随后弹出的对话框里,在其中的“项目名”一栏里,输入项目名“myFirstCode”,其他的项目选择系统默认值,再按“完成”按钮,结束创建Java项目的动作。

(3)完成项目的创建工作后,选中位于集成开发环境左侧的项目名“myFirstCode”,点击右键,在弹出的菜单里选择“new→class”的选项,创建Hello World程序代码,如图1-7所示。

图1-7 创建Java类的示意图

第1章 Java 与面向对象思想

在随后弹出的“New Java Class ”对话框里,这里我们暂时使用缺省的包,并输入文件名“HelloWorld ”,在“Modifer ”(也就是修饰符)里选中“public ”选项,在“Which methods stubs would you like to create?”的Tab 标签下,选中“public static void main(String[] args )”单选框,同时把其他两项目取消掉,如图1-8所示,再按“完成”按钮,可以生成代码。

图1-8 创建Java 类的选项示意图

(4)在生成的代码里,我们可以看到,Eclipse 环境已经帮我们构建好了代码的框架,我们只需在main 函数里填入对应的内容就可以了。

(5)编写完代码后,选中HelloWorld.java 代码,在Eclipse 的“Run ”菜单里,选中“Run →运行方式→Java Application ”的菜单,运行这个Java 程序,如图1-9所示。

Java第一步——基础+设计模式+Servlet+EJB+Struts+Spring+Hibernate

图1-9 运行Java程序示意图

运行后,我们可以在Eclipse环境下方的控制台里显示如下的内容:

Hello World

通过比较,我们可以体验到Eclipse开发和运行Java程序的快捷性。

1.4 本章小结

作为《Java第一步》的第1章,本章首先以通俗易懂的语言,向大家介绍了Java的特性以及一些学习Java的方法,并在此基础上向大家介绍了包含在Java编程语言里的指导思想——“面向对象思想”。这里我们仅仅介绍了面向对象思想里的一些设计动机和思考问题的方式,而在第2章及其以后的章节里,我们将详细讲解面向对象思想同Java语言的关系,以及如何在面向对象思想的指导下设计和开发我们的Java代码。

最后,我们详细地讲述了安装和配置Java开发工具的步骤,并介绍了Eclipse这一比较实用的集成环境,并在此基础上开发和运行了我们的第一个Hello World代码,通过这段代码,我们可以了解Java语言的大致风格和开发与编译的大致流程。

相关文档
相关文档 最新文档