Java 程序设计大学教程 刘艺编著 Java 程序设计大学教程 Java Programming for The College Students 机械工业出版社 hina machine press 刘艺作品试
刘艺作品试读 Java 程序设计大学教程 刘艺 编著 刘艺作品试读
前言 欢迎进入Java的世界学习计算机程序设计课程。这将是一次美妙和激动人心的探索 可能将为你今后从事的充满挑战和令人兴奋的职业奠定软件编程的基础。因为众所周知计算 机在我们的日常生活中扮演了一个重要的角色而且在未来也将一 计算机科学是一个充满了挑战和发展机遇的年轻学科,而计算机程序设计则是这门学科 的重要基础。随着计算机在各行各业的广泛应用,很多非计算机专业的课程设置中也把计算 机程序设计列为公共基础课之 既然是作为基础课的教材,那么本书所假定的读者可以既不具有程序设计经验,也没有 面向对象技术的概念和Web程序设计知识,甚至没有太多的计算机知识。即使是一个对计 算机一无所知的人,也将能通过一天天学习本书而获取所有有关的基本知识,了解和掌握程 序设计。如果读者是一位很有经验的程序员,已在其它程序设计语言中掌握了一定的开发技 能,也能在本书中发现很多有用的信息。 本书与程序设计课程 计算机程序设计既是一门概念复杂,知识面广的理论课,也是一门面向实战、需要动手 的实践课。几乎所有的初学编程者都梦想着有朝一日能在计算机上驰骋,让一行行程序在自 己敲击键盘的手下源源不断地流出,真正成为驾驭计算机的主人。然而,学完程序设计课程 后,实际开始编写程序时,却往往会觉得难以下手、无所适从。尽管自己刻苦学习,高分通 过考试,但并不能体会到所学知识给实际编程带来的便利和优势 为什么会这样?一方面原因是我们的学生在学习时没有掌握程序设计的一般过程,没有 深入了解通用程序设计语言的本质规律。另一方面是我们的教学体制僵化、教材陈旧,教学 思想和内容跟不上时代的发展,与软件开发实际情况脱节 计算机程序设计语言是一种实现对计算机操作和控制的人造语言,与人类的自然语言有 定差距。程序设计语言仅仅是程序设计的手段和途径而并不是程序设计全部。因此,掌握 程序设计语言并不意味着就精通程序设计,就能写出优秀的程序。实际上,程序设计所涉及 的领域、知识和技能要远远超出我们的想象。因此本教材对于程序设计课程在一些方面有着 自己不同的理解: 程序设计首先是一个过程 程序设计过程通常分为问题建模、算法设计、编写代码和编译调试等4个阶段。不同阶 段的任务是相对独立的,不能混为一谈。即使是一个比较简单的程序,我们也应该养成先分 析,再下手,最后调试的习惯,严格遵循程序设计过程。因为在缺乏对问题深入、全面分析 的情况下,就匆匆动手编写程序,将会增加失败的风险,带来后期修改、维护的麻烦。因此 学习程序设计,不但不能回避程序设计过程,更要从软件开发过程和软件生命周期的高度来 了解和掌握程序设计过程,从一开始就要养成遵从程序设计准则从事程序设计的良好习惯。 有别于其他程序设计教材,本书强调程序设计过程和软件开发过程的重要性,为读者介绍了 有关软件建模与测试的基本原理和技术。特别考虑到现代软件开发依赖于集体合作和项目管
前 言 欢迎进入 Java 的世界学习计算机程序设计课程。这将是一次美妙和激动人心的探索, 可能将为你今后从事的充满挑战和令人兴奋的职业奠定软件编程的基础。因为众所周知计算 机在我们的日常生活中扮演了一个重要的角色而且在未来也将一样。 计算机科学是一个充满了挑战和发展机遇的年轻学科,而计算机程序设计则是这门学科 的重要基础。随着计算机在各行各业的广泛应用,很多非计算机专业的课程设置中也把计算 机程序设计列为公共基础课之一。 既然是作为基础课的教材,那么本书所假定的读者可以既不具有程序设计经验,也没有 面向对象技术的概念和 Web 程序设计知识,甚至没有太多的计算机知识。即使是一个对计 算机一无所知的人,也将能通过一天天学习本书而获取所有有关的基本知识,了解和掌握程 序设计。如果读者是一位很有经验的程序员,已在其它程序设计语言中掌握了一定的开发技 能,也能在本书中发现很多有用的信息。 本书与程序设计课程 计算机程序设计既是一门概念复杂,知识面广的理论课,也是一门面向实战、需要动手 的实践课。几乎所有的初学编程者都梦想着有朝一日能在计算机上驰骋,让一行行程序在自 己敲击键盘的手下源源不断地流出,真正成为驾驭计算机的主人。然而,学完程序设计课程 后,实际开始编写程序时,却往往会觉得难以下手、无所适从。尽管自己刻苦学习,高分通 过考试,但并不能体会到所学知识给实际编程带来的便利和优势。 为什么会这样?一方面原因是我们的学生在学习时没有掌握程序设计的一般过程,没有 深入了解通用程序设计语言的本质规律。另一方面是我们的教学体制僵化、教材陈旧,教学 思想和内容跟不上时代的发展,与软件开发实际情况脱节。 计算机程序设计语言是一种实现对计算机操作和控制的人造语言,与人类的自然语言有 一定差距。程序设计语言仅仅是程序设计的手段和途径而并不是程序设计全部。因此,掌握 程序设计语言并不意味着就精通程序设计,就能写出优秀的程序。实际上,程序设计所涉及 的领域、知识和技能要远远超出我们的想象。因此本教材对于程序设计课程在一些方面有着 自己不同的理解: 程序设计首先是一个过程 程序设计过程通常分为问题建模、算法设计、编写代码和编译调试等 4 个阶段。不同阶 段的任务是相对独立的,不能混为一谈。即使是一个比较简单的程序,我们也应该养成先分 析,再下手,最后调试的习惯,严格遵循程序设计过程。因为在缺乏对问题深入、全面分析 的情况下,就匆匆动手编写程序,将会增加失败的风险,带来后期修改、维护的麻烦。因此 学习程序设计,不但不能回避程序设计过程,更要从软件开发过程和软件生命周期的高度来 了解和掌握程序设计过程,从一开始就要养成遵从程序设计准则从事程序设计的良好习惯。 有别于其他程序设计教材,本书强调程序设计过程和软件开发过程的重要性,为读者介绍了 有关软件建模与测试的基本原理和技术。特别考虑到现代软件开发依赖于集体合作和项目管
理,是汇集了很多程序设计过程的更大的过程。因此,除了在书中增加有关软件过程实施和 管理的介绍外,还把如何撰写规范的程序代码作为重要一节,使得读者在学习程序设计之初 就了解程序设计的规范,注重编写程序的规范性、正确性和可靠性,对于培养将来参与大型 软件开发所需要的分工合作团队成员十分重要 程序设计还是一种解决问题的方法和能力 程序设计课程主要是学习用计算机解决问题的思考方法,培养编程应用能力,而不是仅 仅学会某个程序设计语言的语法规则。很多学生能弄清楚循环、i-else结构以及算术表达式, 但很难把一个编程问题分解成结构良好的Java程序。还有误人子弟的教材,不用面向对象 的思想、方法去讲Java,而是用变量、过程、函数等老概念来硬套Java语法,使学生不会 利用面向对象语言的优势来解决问题。这些都暴露了程序设计教学中偏重语法细节,忽略总 体思想方法和整体过程实现的问题 尽管程序设计理论的发展为解决问题提供了很多有效方法,但对于初学者而言学习Java 的捷近应该是抓住最核心的思想方法:面向对象方法。为实现这个目的,我们把面向对象分 析和设计作为重点,围绕面向对象的抽象性、继承性、多态性和封装性这4个本质特点阐述 面向对象程序设计的基本方法。通过强调基本概念、基本方法、基本应用,并结合案例教学 我们旨在为初学者奠定扎实的程序设计基础,树立良好的编程思想。通过大量的实例分析和 范例程序设计过程演示,我们力图给初学者建立完整印象,培养其从整体上思考问题和解决 问是 题的编程能力 程序设计最终是对程序设计语言的应用 程序设计和程序设计语言存在着有趣的辩证关系。程序设计可以用不同的程序设计语言 来实现,但是不同的程序设计语言又决定着能使用怎样的程序设计思想方法和技术技巧,制 约着程序设计的实现能力和效率。本书使用Java作为学习程序设计的语言,是因为Java不 但继承了C语言简洁优美的风格,而且还具有面向对象语言的真正优势。更可喜的是Java 还在继续发展,不断吸取现代编程语言的精华。这一切使得Java具备现代通用程序设计语 言的主流特征,特别适合跨平台的编程使用。因此学习Java语言,掌握Java程序设计方法 是本课程的另一个重要任务。 本书虽然以Java语言为背景介绍程序设计语言的相关知识,但是重点强调的是一些通 用的思想方法,而不是对Java语言及其类库的全面介绍。读者应该注意到,不同的程序设 计语言其语法和风格可能迥异,但无论哪一种语言,都是以数据(类型)、操作(运算)、控 制(逻辑流程)为基本内容。更进一步讲,学习一门程序设计语言,应该超越语言的具体表 述格式,不拘泥于繁芜的语法现象,而是站在抽象的高度,掌握程序设计的基本概念,深入 了解程序设计语言的本质规律。这样将会为深入学习其他程序设计语言带来便利。 本书的结构 这本书是为计算机程序设计课程编写的。该课程对于理工科类的大学相当于公共外语那 样的公共基础课,它通过讲授一门具体的计算机语言,来帮助学生掌握程序设计的基础知识 和基本应用。同时,对于未接触过计算机科学的学生,这本书还涉及和介绍了与程序设计相
理,是汇集了很多程序设计过程的更大的过程。因此,除了在书中增加有关软件过程实施和 管理的介绍外,还把如何撰写规范的程序代码作为重要一节,使得读者在学习程序设计之初 就了解程序设计的规范,注重编写程序的规范性、正确性和可靠性,对于培养将来参与大型 软件开发所需要的分工合作团队成员十分重要。 程序设计还是一种解决问题的方法和能力 程序设计课程主要是学习用计算机解决问题的思考方法,培养编程应用能力,而不是仅 仅学会某个程序设计语言的语法规则。很多学生能弄清楚循环、if-else 结构以及算术表达式, 但很难把一个编程问题分解成结构良好的 Java 程序。还有误人子弟的教材,不用面向对象 的思想、方法去讲 Java,而是用变量、过程、函数等老概念来硬套 Java 语法,使学生不会 利用面向对象语言的优势来解决问题。这些都暴露了程序设计教学中偏重语法细节,忽略总 体思想方法和整体过程实现的问题。 尽管程序设计理论的发展为解决问题提供了很多有效方法,但对于初学者而言学习 Java 的捷近应该是抓住最核心的思想方法:面向对象方法。为实现这个目的,我们把面向对象分 析和设计作为重点,围绕面向对象的抽象性、继承性、多态性和封装性这 4 个本质特点阐述 面向对象程序设计的基本方法。通过强调基本概念、基本方法、基本应用,并结合案例教学, 我们旨在为初学者奠定扎实的程序设计基础,树立良好的编程思想。通过大量的实例分析和 范例程序设计过程演示,我们力图给初学者建立完整印象,培养其从整体上思考问题和解决 问题的编程能力。 程序设计最终是对程序设计语言的应用 程序设计和程序设计语言存在着有趣的辩证关系。程序设计可以用不同的程序设计语言 来实现,但是不同的程序设计语言又决定着能使用怎样的程序设计思想方法和技术技巧,制 约着程序设计的实现能力和效率。本书使用 Java 作为学习程序设计的语言,是因为 Java 不 但继承了 C 语言简洁优美的风格,而且还具有面向对象语言的真正优势。更可喜的是 Java 还在继续发展,不断吸取现代编程语言的精华。这一切使得 Java 具备现代通用程序设计语 言的主流特征,特别适合跨平台的编程使用。因此学习 Java 语言,掌握 Java 程序设计方法 是本课程的另一个重要任务。 本书虽然以 Java 语言为背景介绍程序设计语言的相关知识,但是重点强调的是一些通 用的思想方法,而不是对 Java 语言及其类库的全面介绍。读者应该注意到,不同的程序设 计语言其语法和风格可能迥异,但无论哪一种语言,都是以数据(类型)、操作(运算)、控 制(逻辑流程)为基本内容。更进一步讲,学习一门程序设计语言,应该超越语言的具体表 述格式,不拘泥于繁芜的语法现象,而是站在抽象的高度,掌握程序设计的基本概念,深入 了解程序设计语言的本质规律。这样将会为深入学习其他程序设计语言带来便利。 本书的结构 这本书是为计算机程序设计课程编写的。该课程对于理工科类的大学相当于公共外语那 样的公共基础课,它通过讲授一门具体的计算机语言,来帮助学生掌握程序设计的基础知识 和基本应用。同时,对于未接触过计算机科学的学生,这本书还涉及和介绍了与程序设计相
关的计算机科学知识。全书由程序设计基础、面向对象程序设计、算法与数据结构、Java 应用程序与aplt程序设计、程序设计高级话题等5个部分组成本书的核心知识,并涉及计 算机基础、数据和控制、程序设计理论、软件工程知识等四大知识领域,汇集18个相关知 识点。虽然在本书中讨论的内容有一定的理论性,但这些理论都是用实际程序问题表达的 是为了帮助读者建立完整的程序设计知识体系结构 本书的组织结构如下图所示,其中有些知识点是通过各章节的迭代,循序渐进,不断深 入的 十算机结构 本书的 组织结构 数据和数据处理 计算机 基础 内存、堆栈 第1章绪论 数据类型 程序设计 算法及实现 第2章程序设计基础 数据结构 数据组织 和控制 面向对象 第3章向对象与对象模型 抽象数据类型 程序设计 数据集(对象集) 第4章面向对象程序设计 程序设计语言概论」 算法与 第5章算法与数据结构 程序设计方法 数据结构 程序设计 面向对象方法 理论 第6章图形用户界面 可视化程序设计」 图形用户界面技术 第7章程序设计案例分析 程序设计 b编程技术 第8章 applet与web编程 软件生命周期 软件开发过程软件工程 第9章开发过程与程序质量保证 知识 程序设计 软件测试与调试」 高级话题 第10章线程、文件与串行化 面向对象分析与 LML建模 图P1本书组织结构与知识点 本书分为10章,各章的主要内容如下: ·第1章绪论介绍程序设计的基本概念和初步认识Java。重点帮助读者搞清什么 是计算机程序、程序设计、程序设计语言等基本概念。同时介绍Java程序的编写、 编译和运行,以及相关的环境设置和工具使用 第2章程序设计基础这一章首先通过一个简单的Java程序来了解程序的组成结 构、语言要素和编写规范,建立程序的基本概念。然后以数据和运算作为程序设计 的基础,通过讲解数据和数据类型、变量和常量、表达式和运算符以及流程控制, 开始Java程序设计语言的探索之旅。 ·第3章面向对象与对象模型介绍面向对象的概念和对象建模的方法,讲解Java 对象模型中的核心部分:类及类的成员。使读者学会如何用创建和使用Java对象。 ·第4章面向对象程序设计本章将站在面向对象程序设计原则和方法的高度,围 绕抽象性、继承性、多态性和封装性4个特点讲解面向对象程序设计的基本方法
关的计算机科学知识。全书由程序设计基础、面向对象程序设计、算法与数据结构、Java 应用程序与 applet 程序设计、程序设计高级话题等 5 个部分组成本书的核心知识,并涉及计 算机基础、数据和控制、程序设计理论、软件工程知识等四大知识领域,汇集 18 个相关知 识点。虽然在本书中讨论的内容有一定的理论性,但这些理论都是用实际程序问题表达的, 是为了帮助读者建立完整的程序设计知识体系结构。 本书的组织结构如下图所示,其中有些知识点是通过各章节的迭代,循序渐进,不断深 入的: 图 P.1 本书组织结构与知识点 本书分为 10 章,各章的主要内容如下: • 第 1 章 绪论 介绍程序设计的基本概念和初步认识 Java。重点帮助读者搞清什么 是计算机程序、程序设计、程序设计语言等基本概念。同时介绍 Java 程序的编写、 编译和运行,以及相关的环境设置和工具使用。 • 第 2 章 程序设计基础 这一章首先通过一个简单的 Java 程序来了解程序的组成结 构、语言要素和编写规范,建立程序的基本概念。然后以数据和运算作为程序设计 的基础,通过讲解数据和数据类型、变量和常量、表达式和运算符以及流程控制, 开始 Java 程序设计语言的探索之旅。 • 第 3 章 面向对象与对象模型 介绍面向对象的概念和对象建模的方法,讲解 Java 对象模型中的核心部分:类及类的成员。使读者学会如何用创建和使用 Java 对象。 • 第 4 章 面向对象程序设计 本章将站在面向对象程序设计原则和方法的高度,围 绕抽象性、继承性、多态性和封装性 4 个特点讲解面向对象程序设计的基本方法
重点讨论继承、多态和接口的编程 第5章算法与数据结构介绍算法的概念及常用算法。并通过数组、链表、栈 队列等数据结构以及Java对象容器,讨论算法的应用及算法的Java程序实现 ·第6章图形用户界面讲解Java图形界面应用程序的一般设计方法,包括如何创 建窗体、设计界面、管理布局、绘制图形、使用组件、事件编程等。通过这一章的 习可以掌握图形用户界面应用程序的设计方法和编程技 ·第7章程序设计案例分析通过剖析和研究一个典型的Java应用程序设计案例 读者不仅可以对窗体、菜单、组件、事件、布局等的设计有一个感性的综合的了解, 还可以进一步理解Java应用程序的基本架构和完整设计过程,掌握使用开发工具 ( NetBeans IDE)完成程序设计项目的一般过程和方法,积累实际编程经验。同时 还可学会利用 NetBeans IDE的可视化设计功能提高程序设计效率。 ·第8章 applet与web编程本章详细讲述 applet的原理、特性、安全机制以及编 程方法,并讨论 applet在web编程中的应用。同时还介绍了web编程的一些有用 ·第9章开发过程与程序质量保证介绍软件的开发过程及过程的实施管理,从程 序质量保证的高度讨论了程序的调试与测试,重点讲述了Java程序的调试方法 程序中的异常处理以及单元测试方法。 第10章线程、文件与串行化本章将讨论有关线程及输入输出的一些高级话题。 通过本章的学习,读者可以了解多任务、进程和线程、线程模型、流、文件、输入 /输出、对象串行化等诸多概念和编程方法,为Java的高级应用打下基础。 尽管本书包含了以上章节内容,但实际的教学进度和授课内容可以灵活确定,因为这要 取决于课堂教学的安排或读者实际技能及对所讨论问题的熟悉程度。教学时数建议安排在 0-~80课时之间。 本书的读者对象 程序设计入门学生,选用本书作为程序设计基础教材,希望掌握一门优秀、实用、 主流的程序设计语言,为深入学习其它计算机课程奠定基础。显然Java作为一种 跨平台的面向对象编程语言能胜任教学的需要,为学习程序设计提供更全面的知识 结构体系。 ·因工作或科研需要的非专业编程人员,希望迅速掌握Java编程以完成不太复杂的 编程任务 ·非计算机专业的编程爱好者,改行从事程序员工作,有一些实际的Java编程经验 但没有系统学习过相关专业知识。希望通过本书重温程序设计知识,补习相关概念 和理论 有一定经验的程序员,已在其它编程语言及其软件环境中掌握了一定的开发技能, 但没有使用过Java语言或对Java语言一知半解。希望在本书中系统学习Java程序 设计,发现Java与其所熟悉语言的不同点,并由此掌握Java语言。 本书的特色 本书的一些特色不仅使得本书与众不同,同时也特别有助于入门者去学习
重点讨论继承、多态和接口的编程。 • 第 5 章 算法与数据结构 介绍算法的概念及常用算法。并通过数组、链表、栈、 队列等数据结构以及 Java 对象容器,讨论算法的应用及算法的 Java 程序实现。 • 第 6 章 图形用户界面 讲解 Java 图形界面应用程序的一般设计方法,包括如何创 建窗体、设计界面、管理布局、绘制图形、使用组件、事件编程等。通过这一章的 学习可以掌握图形用户界面应用程序的设计方法和编程技巧。 • 第 7 章 程序设计案例分析 通过剖析和研究一个典型的 Java 应用程序设计案例, 读者不仅可以对窗体、菜单、组件、事件、布局等的设计有一个感性的综合的了解, 还可以进一步理解 Java 应用程序的基本架构和完整设计过程,掌握使用开发工具 (NetBeans IDE)完成程序设计项目的一般过程和方法,积累实际编程经验。同时 还可学会利用 NetBeans IDE 的可视化设计功能提高程序设计效率。 • 第 8 章 applet 与 Web 编程 本章详细讲述 applet 的原理、特性、安全机制以及编 程方法,并讨论 applet 在 web 编程中的应用。同时还介绍了 web 编程的一些有用 知识。 • 第 9 章 开发过程与程序质量保证 介绍软件的开发过程及过程的实施管理,从程 序质量保证的高度讨论了程序的调试与测试,重点讲述了 Java 程序的调试方法、 程序中的异常处理以及单元测试方法。 • 第 10 章 线程、文件与串行化 本章将讨论有关线程及输入/输出的一些高级话题。 通过本章的学习,读者可以了解多任务、进程和线程、线程模型、流、文件、输入 /输出、对象串行化等诸多概念和编程方法,为 Java 的高级应用打下基础。 尽管本书包含了以上章节内容,但实际的教学进度和授课内容可以灵活确定,因为这要 取决于课堂教学的安排或读者实际技能及对所讨论问题的熟悉程度。教学时数建议安排在 50~80 课时之间。 本书的读者对象 • 程序设计入门学生,选用本书作为程序设计基础教材,希望掌握一门优秀、实用、 主流的程序设计语言,为深入学习其它计算机课程奠定基础。显然 Java 作为一种 跨平台的面向对象编程语言能胜任教学的需要,为学习程序设计提供更全面的知识 结构体系。 • 因工作或科研需要的非专业编程人员,希望迅速掌握 Java 编程以完成不太复杂的 编程任务。 • 非计算机专业的编程爱好者,改行从事程序员工作,有一些实际的 Java 编程经验, 但没有系统学习过相关专业知识。希望通过本书重温程序设计知识,补习相关概念 和理论。 • 有一定经验的程序员,已在其它编程语言及其软件环境中掌握了一定的开发技能, 但没有使用过 Java 语言或对 Java 语言一知半解。希望在本书中系统学习 Java 程序 设计,发现 Java 与其所熟悉语言的不同点,并由此掌握 Java 语言。 本书的特色 本书的一些特色不仅使得本书与众不同,同时也特别有助于入门者去学习