Java程序设计教学
2024-08-10
来源:步旅网
维普资讯 http://www.cqvip.com 2006年2月 湖北教育学院学报 Journal of Hubei Institute of Education Feb.2006 Vo1.23 No.2 第23卷第2期 J ava程序设计教学 朱 平 (中南财经政法大学信息学院,武汉4300601) 摘要:java程序设计是面向对象的程序设计,本文介绍了java语言的基本特点,比较 r Java与C”的主要区另q,详细 的讨论Java程序设计教学的基本内容和教学难点,包括语法学习和类库学习以及面向对象的编程思想。 关键词:面向对象程序设计;Java;C 中冒分类号:TP312 文献标识码:A 文章编号:1007—1687(2006)02-0046—03 作者简介:朱平(1980一),女,中南财经政法大学信息学院,助教 面向对象程序设计(OOP)技术是当今软件开发的主流技 术,OOP将系统看成是由若干对象所组成,通过消息传递和对 象的相应事件来激发对象的方法,完成相应的操作。java程 序设计是典型的面向对象的程序设计,如何更好地进行Java 程序设计的教学是许多教师都在思考的问题 1 Java的特点 多线程机制使应用程序能够并行执行,而且同步机制保 证了对共享数据的正确操作。通过使用多线程,程序设计者 可以分别用不同的线程完成特定的行为,而不需要采用全局 的事件循环机制,这样就很容易地实现网络上的实时交互行 为。Java内置对多线程的支持,Java的多线程所带来的好处 包括交互式响应能力与实时运行能力。 (5)安全性 Java语言,不再重视程序逻辑的实现和数据的简单描述 方法,而注重问题的分析、类的设计、模块的封装。java语言 和其他语言相比,有着自己的特殊优势,总体来说,它是一种 平台无关的、面向对象的、分布式的、具有多线程能力的新一 代语言。下面我们重点总结Java的几个主要的特点: (1)平台无关性 Java设计的目的是要能够适用于分布式运算环境。为 此,Java非常强调安全性,以确保建立无病毒且不会被侵入的 系统 当用户使用Java  ̄,pplet的时候,不必担心计算机病毒 或是恶意的代码,因为Java App[et被限制在Java运行环境 (JRE)中,不允许它访问计算机的其它部分。Java的验证 术 是以公钥加密法为基础。Java不支持指针,一切对内存的访 Java解释器生成与体系结构无关的字节码指令,只要安 装了Java运行时系统,Java程序就可在任意的处理器上运行。 这些字节码指令对应于Java虚拟机中的表示,java解释器得 到字节码后,对它进行转换,使之能够在不同的平台运行。 (2)面向对象 问都必须通过对象的实例变量来实现,这样就防止程序员使 用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避 免了指针操作中容易产生的错误。 2 java与C”的比较 如果学习过c十十语言,同学们在刚开始学习Java时一定 感觉到比较轻松,因为Ja,ca的许多基本语法和C 的完全一 样,但不要将Java理解为c. 的增强版,它们是两种完全不 面向对象是一种成熟的程序设计方法。它可以进行明确 地定义和接口,并允许开发人员建立可重复使用的软件部件。 Java语言的设计集中于对象及其接口,它提供了简单的类机 制以及动态的接口模型。对象中封装了它的状态变量以及相 同的语言,有着各自的优势和特点。总体上讲,Java比C 简 单易学,Java删除了C”中许多极少被使用、不容易理解和容 应的方法,实现了模块化和信息隐藏;而类则提供了一类对象 的原型,并且通过继承机制,子类可以使用父类所提供的方 法,实现了代码的复用。 (3)分布式 易令人混淆的功能。如:运算符重载、多重继承、指针、内存分 配等。具体在以下方面,它们有着主要的区别: (1)指针 Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议,用户可以通过URL地址在网络上很方便地访 问其它对象。Java拥有功能强大地处理TCP/ 协议的运行 库.例如HTTP、FTP、URL类库等。这使得在Java中比在 C 中更容易建立网络连接。Java应用程序可以借助URL 通过网络开启和存取对象,就如同存取一个本地文件系统一 样简单 (4)多线程 指针是 中最灵活..也是最容易产生错误的技术。由指针 所进行的内存地址操作常会造成不可预知的错误,同时通过指针 对某个内存地址进行显式类型转换后,可以访问( 中的私有成 员,从而破坏安全性,造成系统的崩溃。而Java对指针进行完全 的控制,程序员不能直接进行任何指针操作,例如把整数转化为 指针,或者通过指针释放某一内存地址等。 收稿日期:2005-10—18 维普资讯 http://www.cqvip.com 朱平:Java程序设计教学 47 (2)内存管理 3.1 Java的语法教学 在C¨中通过运算符new和delete来分配和释放内存。 再次释放已释放的内存块或未被分配的内存块,会造成系统 语法学习是任何语言的必经阶段,很难想象连语法都不 熟悉如何进行程序设计。Java的语法和c以及c“的语法非 的崩溃}同样地,忘记释放不再使用的内存块也会逐渐耗尽系 统资源。而在Java中,所有的数据结构都通过对象来封装,通 过运算符view为它们分配内存。通过view得到对象的处理 权,而实际分配给对象的内存可能随程序运行而改变,Java对 此自动地进行管理并且进行垃圾收集,有效防止了由于程序 常类似,这一部分的学习学生基本上不会感到很大的压力。 绝大多数的Java书籍主要的内容都是Java的语法。在进行 语法教学时,要求学生主要理解以下内容:数据类型、操作符、 控制流程、类、类的继承、接口以及接口的实现、包以及包的使 用、异常处理、线程等。为了加深对Java基本语法的掌握,在 员的误操作而导致的错误,并且更好地利用了系统资源。 (3)平台无关性 在C¨中,对于不同的平台,编译器对于某些数据类型分 别分配不同长度的内存,例如:int在IBM PC中为16位.在 VAx一11中为32位,这导致了代码的不可移植性。但在Ja- va中,对于这些数据类型总是分配固定长度的位数,如int型 变量,它总占32位,这就保证了Java的平台无关性。 (4)全局变量 Java程序中,不能在所有类之外定义全局变量,只能通过在 —个类中定义公用、静态的变量来实现—个全局变量。例如: class Test{ public static global_.var; ) 在类Test中定义变量global—var为public static,使得其 它类可以访问和修改该变量。Java对全局变量进行了更好的 封装。而在c¨中,依赖于不加封装的全局变量常常造成系 统的崩溃 (5)Goto语句 Java不支持C+ 中的goto语句,而是通过异常处理语句: try{ //可能发生异常的语句) catch(ExceptionSubClass e) {//异常处理语句 ) finally { ) 来代替c++中用goto语句来处理异常时跳转的情况, 可以有效地增强程序的健壮程度。 (6)头文件 c++中用头文件来声明类的原型以及全局变量、库函数 等,随着应用系统的增大,维护这些头文件是很困难的。而 Java不支持头文件,类成员的类型和访问权限都封装在一个 类中,运行时系统对访问进行控制,防止对私有成员的操作。 同时,Java中用import语句来与其它类进行通讯,以便使用它 们的方法。 当然,Java与Cl十 的区别不仅仅是这些,在很多细节方面 也有区别,在此不一一列出。在教学中进行横向地比较有助 于加深学生对Java的理解。 3 Java程序设计教学重点 对于Java程序设计的教学,应该注重以下几个方面的内容: 进行教学和学生上机练习时,要求学生用Windows下的记事 本(notepad)编写代码。如果一开始就利用Java的集成开发 环境进行教学,不利于学生对基本语法的掌握。在此阶段还 有一个非常重要的训练就是要求用Java编译器javac.exe去 检查语法错误,这样可以很快提高学生对基本语法的掌握。 Java语法教学的基本目标是对Java的基本语法有一个整 体认识,能读懂源代码,能够写出简单的Java程序。很多教师 不注重读程序的教学,读程序首先要理出程序的结构,然后才 能够理解程序的功能,这是进行语法教学的有效环节。 3.2 Java基本类库的学习 有相当部分教师认为Java的基本类库不需要学习,因为 可以随时查看Java API的资料或者利用集成开发环境下的联 机帮助。根据多年的开发经历和教学实践来看,学生应该对 基本类库有个整体了解,然后需要熟练掌握Java类库中的两 个包:Java.1ang和Java.util。这两个包提供的是Java编程要 用到的基本类,需要理清楚这些类或接口的继承关系、主要功 能。在教学中要注意总结相荚类的区别,如String、String— Buffer、StringT0kenizer这三个类有什么差别?Filelnput— Stream和FileReader有什么区别?它们继承了哪些类,实现 了哪些接口呢? 例如有这样的一个练习:编写一个计算9+99+999+… 的第1O项到第2O项之和的Java应用程序。部分学生在解决 这个问题时采用如下的程序: public class ComputeStm ̄ { public static void main(String args) { long sum=O,j=9999999999; for(int i一10:i<21:it+) { sum—sum+j; j—j*1O+9; )。 . System.out.println(“总和为”+sum); } } 很显然,这是对Java的数槲类型掌握的不熟悉,对Java 的基本类库也不清楚。上述程序中的结果利用长整型是无法 存放的,因为结果太大。正确的解决方法如下: import java.math. ; public class ComputeSum 维普资讯 http://www.cqvip.com 48 湖北教育学院学报 { 户的计数器当前值,请求页面一次,对应的计数器加1。这样, public static void main(String args) 计数器类的定义如下: { public class Counter{ String str--“9999999999”: //取计数器值方法 Biglnteger n1.1m ̄new Biglnteger(str),SuIn=Dew Bigln— public int getCounter(int userlD){} teger(“0”)l //设计数器初值的方法 for(int i:10;i<21;i++) public void setCounler(int userlDt int initCounter)《} { //计数器清0方法 sLIm ̄-sum.add(num); public void reseteounter(int userID){} str---strd-“9”: } hum--new Biglnteger(str); 类的框架写好丁,下一步是如何实现(.kmnter类三个方法 } 里的具体代码了,此时才去考虑具体的实现细节,如:在方法 System.out.println(“总和为:”+sum.toString()); 里面要访问数据库,更新计数值等。从这个例子中看到,面向 } 对象的思想其实就是按照现实生活中习惯的思维方式,从问 } 题出发,把解决问题的思维方式逐步转变成计算机能够理解 3.3面向对象的编程思想 的方式的过程 面向对象的设计足基于解决业务问题的设 Java是一种∞P语言工具.而不仅仅是编码,只有这样才能 计,而不是基于具体编程技术的设计。只封装解决问题的业 总体把握和运用Java。学生在刚开始使用Ja ̄-d编写程序的时候 务逻辑,对代码实现的细节是在业务逻辑的编码实现阶段才 感觉很不习惯,因为学生很难从面向过程的程序设计的思想转换 去考虑的问题。 到面向对象的思想。在面向过程的程序设计中,学生关注的是算 传统的面向过程的编程是符合机器运行指令的流程的 法和数据结构,关注算法的实现,而在Java中,需要以类为基本单 话.而面向对象的程序设计符合现实生活中解决问题的思维 位来进行编写程序。通过类中的方法调用来实现整个程序的功 过程。在面向对象的程序设计中,应集中橇力分析业务逻辑 能。在进行Java的教学的过程中,要求学生把握Java的面向对象 和业务流程.思考如何去:潜述和实现软件的业务,不要一开始 特性,有意识的运用∞P风格来写程序。面对一个具体的问题 就考虑程序代码的实现,应该抛开具体编程语言的束缚。首 的时候。学生刚开始一般不知道怎么下手,一不小心,又会回到原 先把业务逻辑抽象出来, 这个抽象的过程足自上而下的,符 来的面向过程的思路上去。 合人类的思维习惯,即将问题的主要方面抽象成为一个简单 例如:编写一个网页计数器。有的学生一看到这个题目, 的框架,集中精力解决主要矛盾,然后在解决问题的过程中, 首先想到的是计数器的值是int还是long类型?计数器的数 再去解决细节问题和实现问题。一旦习惯了这一点,就会不 值存放在数据表中还是存放在文本文件中?这种思路是典型 知不觉的运用面向对象的思维方法来设计和编写程序了。 的面向过程的程序设计思想,自底向上,注重算法和数据结 参考文献: 构。按照面向对象的程序设计思想,这个问题可以这样设计: [1]耿祥义.java大学实用教程.电子工业出版社,2005. 设计一个计数器类,该类具备获取计数器的值、计数器清零、 [2]邵丽萍.Java语言实用教程.清华大学出版社,2005. 设置计数器初值等方法。后台有一个数据库表,保存每个用 [3]钱能.c¨ 程序设计教程.清华大学出版社,2001. Teaching of Java Programming ・ ZHU Ping (College of Information,Zhongnan University of Economics&.Law,Wuhan 4 30060,China) Abstract:In this paper,the basic characteristic of Java and the main difference between Java and C +is intro— duced.The basic content and difficulty in the teaching of java programming in detail is discussed and the ob— ject oriented programming method,through analyzing examples,is established. Key words:object oriented programming;Java;C++