
本书将Java程序设计技术与面向对象思想并重,将当前用来建模和开发具有工业水准软件系统的统一建模语言(UML)与Java结合介绍,强调面向对象的软件开发过程。全书在系统而全面地讲述Java程序设计语言的基础上,介绍了模型驱动的体系结构、UML概念和RUP过程,使Java程序员可以利用UML工具集来记录其设计抉择,从战略高度理解项目规划和建立企业级Java应用程序的过程,从而高效地开发出成功的项目。全书强调理论和实践的结合,案例丰富,紧扣面向对象分析与设计技术的最新进展。
全书内容丰富,易学,既可作为高等院校“Java程序设计”或“面向对象技术”课程的教材或教学参考书,也可作为广大软件开发人员和系统分析人员的自学参考书。
刘晓冬 博士、清华大学副教授,清华大学深圳研究生院宽带网多媒体研究中心副主任。中国计算机学会高级会员,中国计算机学会多媒体专委会委员。1971年出生,哈尔滨人。1989-1993年就读于哈尔滨工业大学计算机科学与工程系获学士学位,1993-1996年在哈尔滨工业大学计算机科学与工程系获硕士学位,1996-1999年在哈尔滨工业大学计算机科学与工程系获博士学位,1999-2001年在清华大学电子系做博士后,2001年至今任清华大学深圳研究生院教师。从事计算机学习和研究开发工作20多年,具有扎实的理论功底和实践创新能力。作为主讲教师为清华大学研究生开设过《编译原理》、《JAVA程序设计》、《面向对象技术》、《数据结构》、《C++语言程序设计》等十余门课程,累计授课1000多学时。他主持和作为骨干研究人员开发的项目获得过国家广电总局科技创新一等奖、广东省科技进步二等奖和北京市科技进步三等奖。申请发明专利5项,目前已获授权三项。在国内外发表论文40余篇。
Java语言是目前非常流行的一种面向对象的程序设计语言,具有简单、面向对象、独立于平台等特点,这使得Java语言在健壮性、安全性、可移植性等方面具有优势。Java不仅是一种语言,也是一个完整的平台,它具有庞大的类库、高质量的执行环境,这使它涉及的概念、规则比较多,不少初学者感到学习困难,希望能有一本适合于初学者的Java教材,本书就是为了满足这部分广大读者的需要而编写的。由于Java不仅是一种优秀的程序设计语言,也是一种正在不断发展和完善的语言。为此,本书包括了很多Java新特性,如泛型、自动装箱和枚举等。
目前国内外与Java程序设计相关的同类教材主要是从介绍Java语言本身的构成及一些程序设计技巧出发,面向对象思想和面向对象软件开发过程的讲解不够。本书的特色是将Java程序设计技术与面向对象思想并重,将当前用来建模并开发真正具有工业水准软件系统的统一建模语言(UML)与Java结合介绍,来强调面向对象的软件开发过程,以帮助读者深刻地理解Java面向对象程序设计的思想精髓,写出更标准、更完美的代码。
书中结合作者多年的教学和研发经验,给出一些来源于实践,非常具有启发性的实际项目开发案例,使读者从中体会书中的知识点。全书强调设计和实现的结合,重视对软件开发方法学有指导作用的重要概念。
全书共分4篇。第1篇包括第1章和第2章,主要介绍Java的历史、特点和Java编程的基础知识。第2篇包括第3章~第12章,主要介绍面向对象的分析与建模技术,特别介绍了UML语言中包括的13种图: 类图、复合结构图、组件图、部署图、对象图、包图、活动图、序列图、通信图、交互概况图、时序图、用例图和状态机图。Java程序员可以使用这些图来记录其设计抉择,协同开发,从战略的高度理解项目规划和开发软件的过程,从而建立起企业级Java应用程序。第3篇包括第13章~第24章,主要介绍了Java的面向对象程序设计技术,包括类和对象、数组、字符串、继承与多态、接口、内部类与枚举、异常处理、I/O流与文件、图形用户界面设计、Java applet、多线程、网络编程以及泛型等。第4篇包括第25章,主要以一个实用的手机拍照程序为例,介绍如何将UML和Java相结合,协同开发高质量的应用程序。
本书既可以作为高等院校“Java程序设计”或“面向对象技术”课程的教材或教学参考书,也适合于希望掌握Java和UML面向对象程序设计技术的大型系统的软件分析人员和开发人员作为自学参考书。
感谢栗强、王瑞、傅崇刚、刘芳、邓独、徐秀兵、韦奕多和王鹏等在本书的编写和校对过程中提供的帮助,感谢我的妻子、女儿和父母在我写书期间给我的支持和鼓励,也感谢在本书编写和出版过程中帮助过我的所有朋友。
由于水平与时间有限,书中可能会出现一些疏漏或缺陷,恳请广大读者批评指正。
刘晓冬〖〗2007年6月
第1篇Java程序设计基础
第1章Java语言简介
1.1Java的历史
1.2Java的特点
1.3简单的Java程序介绍
1.4Java程序的上机步骤
习题1
第2章Java编程基础
2.1标识符与关键字
2.2变量与基本数据类型
2.2.1变量定义与赋值
2.2.2逻辑型数据
2.2.3字符型数据
2.2.4整型数据
2.2.5浮点型数据
2.3运算符和表达式
2.3.1算术运算符和算术表达式
2.3.2赋值运算符和赋值表达式
2.3.3增量和减量运算符
2.3.4关系运算符和关系表达式
2.3.5逻辑运算符和逻辑表达式
2.3.6位运算符
2.3.7条件运算符和条件表达式
2.3.8表达式中的类型转换
2.3.9运算符的优先级与结合性总结
2.4控制台输入/输出
2.4.1数据输出
2.4.2数据输入
2.5程序控制语句
2.5.1Java语句概述
2.5.2if条件语句
2.5.3switch分支语句
2.5.4while循环语句
2.5.5dowhile循环语句
2.5.6for循环语句
2.5.7foreach循环语句
2.5.8循环嵌套
2.5.9break语句
2.5.10continue语句
习题2
〖〗〖〗Java与UML面向对象程序设计教程第2篇面向对象分析与设计
第3章面向对象技术概述
3.1面向对象的基本概念
3.1.1对象的本质特征
3.1.2面向对象技术的起源
3.1.3面向对象的概念定义
3.2统一建模语言(UML)
3.2.1UML的演化
3.2.2UML的构成
3.2.3UML的视图
3.3统一过程(RUP)
3.3.1统一过程(RUP)的特点
3.3.2统一过程(RUP)的发展阶段
3.3.3统一过程(RUP)的核心工作流
3.3.4统一过程(RUP)常用的迭代策略
3.4UML 2.0的新特点
3.5IBM Rational建模工具软件
习题3
第4章用例图
4.1用例图概述
4.2用例图中的标记符元素
4.2.1主体
4.2.2参与者
4.2.3用例
4.2.4用例之间的关系
4.3建立用例模型
4.3.1问题描述
4.3.2确定参与者
4.3.3确定用例
4.3.4用例描述
4.3.5检查用例模型
习题4
第5章序列图和通信图
5.1交互图概述
5.2序列图基本元素
5.2.1生命线
5.2.2消息
5.2.3控制焦点
5.3组合片段
5.3.1alt和opt操作符
5.3.2loop和break操作符
5.3.3par操作符
5.4交互引用
5.5门
5.6注释和约束
5.7状态常量
5.8建立序列图的步骤
5.9通信图基本元素
5.10建立通信图的步骤
习题5
第6章类图和对象图
6.1类图概述
6.2类符号
6.2.1类的属性
6.2.2类的操作
6.2.3静态限定
6.2.4抽象限定
6.3接口符号
6.4类之间的关系
6.4.1关联关系
6.4.2泛化关系
6.4.3依赖关系
6.4.4实现关系
6.5建立类图
6.5.1确定类的方法
6.5.2建立类图的步骤
6.6对象图
习题6
第7章活动图和交互概况图
7.1活动图概述
7.2活动图基本元素
7.2.1动作节点
7.2.2控制节点
7.2.3对象节点
7.2.4活动分区
7.3交互概况图
习题7
第8章状态机图
8.1状态机图概述
8.2状态机图基本元素
8.2.1状态
8.2.2转换
8.2.3事件
8.3复合状态
8.4子机状态
8.5历史状态
习题8
第9章复合结构图和组件图
9.1概述
9.2复合结构图基本元素
9.2.1部件
9.2.2连接器
9.2.3端口
9.3协作
9.4组件图基本元素
9.4.1组件
9.4.2接口
9.4.3工件
习题9
第10章包图
10.1包图概述
10.2包
10.3包之间的关系
10.3.1依赖关系
10.3.2泛化关系
习题10
第11章时序图
11.1时序图概述
11.2时序图基本元素
习题11
第12章部署图
12.1部署图概述
12.2部署图基本元素
12.2.1节点
12.2.2工件
12.2.3关系
习题12
第3篇Java面向对象程序设计
第13章类和对象
13.1声明Java类
13.2声明与访问对象
13.3信息隐藏与封装
13.4构造器
13.5this关键字
13.6垃圾回收与finalize方法
13.7参数传递
13.8static关键字
13.8.1静态变量
13.8.2静态方法
13.8.3静态初始化块
13.9包
13.9.1Java源文件布局
13.9.2定义包
13.9.3导入包
13.9.4类路径
13.9.5包作用域
习题13
第14章数组
14.1声明数组
14.2创建数组
14.3初始化数组
14.4多维数组
14.5不规则数组
14.6复制数组
14.7变长参数
习题14
第15章字符串
15.1创建字符串
15.2代码点
15.3字符串加法
15.4字符串截取
15.5字符串比较
15.6字符串搜索
15.7StringBuffer类
15.7.1构造器
15.7.2长度和容量
15.7.3插入操作
15.7.4删除操作
15.7.5修改操作
15.8StringBuilder类
15.9命令行参数
习题15
第16章继承与多态
16.1继承
16.2super关键字
16.3多态
16.4重写
16.5重载
16.6抽象类
16.7final关键字
16.8Object类
16.9自动装箱
习题16
第17章接口、内部类与枚举
17.1接口
17.1.1接口定义
17.1.2接口实现
17.2内部类
17.2.1普通内部类
17.2.2局部内部类
17.2.3匿名内部类
17.2.4静态内部类
17.3枚举
习题17
第18章异常处理
18.1异常及其种类
18.2捕获异常
18.2.1try/catch语句
18.2.2捕获多个异常
18.2.3嵌套的try语句
18.2.4finally子句
18.3抛出异常
18.4声明异常
18.5自定义异常
18.6链式异常
习题18
第19章I/O流与文件
19.1流的概念
19.2字节流与字符流
19.2.1InputStream
19.2.2OutputStream
19.2.3Reader和Writer
19.3过滤流
19.4随机访问文件
19.5对象序列化
19.6文件管理
习题19
第20章图形用户界面设计
20.1容器
20.1.1框架
20.1.2面板
20.2绘制图形
20.2.1图形对象
20.2.2设置颜色
20.2.3设置字体
20.2.4加载图像
20.3布局管理器
20.3.1FlowLayout
20.3.2BorderLayout
20.3.3GridLayout
20.3.4GridBagLayout
20.3.5CardLayout
20.4事件处理机制
20.4.1事件处理模型
20.4.2事件分类
20.4.3事件适配器
20.5GUI组件
20.5.1文本组件
20.5.2选择组件
20.5.3菜单
20.5.4工具栏
20.5.5对话框
习题20
第21章Java applet
21.1applet基础
21.2applet的生命周期
21.3编写applet
21.4applet标记
21.5常用applet方法
习题21
第22章多线程
22.1线程的概念
22.2线程的建立
22.2.1继承Thread类
22.2.2实现Runnable接口
22.3线程的同步
22.3.1同步语句块
22.3.2同步方法
22.4线程的交互
22.5线程的优先级
22.6线程的生命周期
习题22
第23章网络编程
23.1统一资源定位符(URL)
23.2TCP Socket通信
23.3UDP Socket通信
习题23
第24章泛型
24.1泛型类
24.2泛型方法
24.3泛型接口
24.4类型参数的界限
24.5通配符类型参数
24.6泛型的约束
习题24
第4篇Java与UML协同应用开发
第25章手机拍照程序开发
25.1需求分析
25.2用例图
25.3状态机图
25.4类图
25.5序列图
25.6正向工程
25.7Java代码实现
习题25
参考文献