《编程的奥秘》配套升级版
《.NET 2.0面向对象程序设计(VB2005篇)》
写作缘由
微软中国公司与电子工业出版社计划出一系列Visual Studio 2005的技术书籍,找着了我负责VB2005一书的写作,除此之外,还有国内知名的作者徐锋写作《ASP.NET 2.0》,赵松涛写作《SQL Server2005》等。
书籍写作构想:
我去年写了一本《编程的奥秘》,选用VB.NET语言和VS2003,书出版以后,收到了很多读者的来信,对这本书予以了充分的肯定,同时也表达了不少中肯的意见,在此,我对这些热心的读者给予衷心的感谢,读者的反馈也激励了我努力写出更高质量的原创技术书籍,帮助更多的人掌握软件开发技术。
虽然我个人认为语言仅是一个工具,但许多读者来信要求我下本书用C#写作。考虑到大家的要求,这本书以VB2005语言为主,但在一些语法关键点上同步介绍C# 2.0,并在附录集中介绍VB2005与C#2.0的语法差异,我希望做到:一个基本功扎实的程序员阅读完这本书后,可以自如地使用VB2005与C# 任何一种语言编程。
虽然微软公司要求我讲清楚VB2005语言,但我打算以VB2005为载体,深入介绍面向对象理论,努力突显出面向对象技术与理论的跨语言特性,在正文中不仅有C#代码,甚至会有Java和C++的特性对比。这部分内容,集中在第二篇中。
除了介绍语言,我还计划对.NET Framework编程的一些高级特性比如多线程,动态代码编译,反射,串行化等作深入的探讨与应用,努力向读者展示.NET 2.0强大而灵活的功能。这也是微软公司要求我们作者做到的。我相信,在了解了.NET这一主流软件开发平台的特性之后,您一定会喜欢上她,并乐意在此平台之上开发自己的软件。呵呵,微软公司看到我给他们做广告,一定高兴。但从客观的软件技术角度来看,我认为.NET的确是一个优秀的软件开发平台,这点是必须承认的。
VS2005 TeamSuite版本在软件工程领域特性方面有很大的增强,在本书中,从软件工程角度,集中介绍了VSTS版本中的代码自动化、单元测试、静态代码分析、程序性能分析等特性,并通过实例展示这些特性如何被用来提升代码的质量。相信这部分对于正在软件开发一线努力工作的程序员们有较大的帮助。
我个人一直强调实践的重要性,因此,在本书中我设计了两个大的实例,一个是经典的四则运算器,其目的是展示数据结构等软件理论在软件开发中的应用,并展示出如何应用面向对象的思想去设计软件,其实是OOD和OOP的实例介绍。此实例目前已开发完成。
另一个大的实例是一个经典游戏,我选择的是人人都喜欢玩的俄罗斯方块,展示.NET2.0和面向对象理论给软件开发所带来的强大推动力。此实例目前正处于设计阶段。
其余的小例子就更多了,这点相信读过我的《奥秘》一书的读者有体会。
这本书的内容与《编程的奥秘》其实是一个深化与互补的关系,唯一相同的可能就是语言介绍部分,但上面也说了,本书的语言介绍是有相当深度的。因此,本书的读者最少应该学过C,并且具备一定的开发经验,比较适合计算机专业研究生和高年级本科生,以及在软件公司的程序员阅读。如果您以前没学过面向对象语言,没有编程经验,请先去看《编程的奥秘》一书,至少看完前四章。补充一下,《奥秘》一书的后半部介绍的内容是具有相当深度的,此书的章节划分具有明显的阶梯性,不能跳着读。而本书各部分地位是平等的,可以跳着读。
下面是本书目录初稿,敬请读者提出宝贵意见。
全书目录
第一篇 认识.NET 2.0与VS2005
第一章 认识.NET
1.1 什么是.NET?
1.2 面向对象的Visual Basic语言
1.2.1面向对象技术简介
1 结构化编程与面向对象编程
2 OOAD、OOP的基本概念
3 四种基本的面向对象特性: 封装 抽象 继承 多态
1.2.2 Basic语言的发展史:VB与其它语言如C#、Java,C++的对比
1.2.3支持混合语言开发的.NET软件开发平台
第二章 学会使用集成开发环境VS2005
2.1 安装与版本说明:在2005中升级2003的项目
2.2 熟悉帮助文档MSDN及相关网站:学会配置联机帮助
2.3 可以创建的项目类型
2.4 解决方案管理器的使用
2.5 界面设计器与代码编辑器
2.5.1使用控件设计用户界面
2.5.2代码编辑器的使用
2.6 理解事件驱动的编程模式
2.7 编译和运行程序
2.7.1程序启动对象的确定
2.7.2两种开发模式:设计模式与运行模式
2.7.3两种编译模式:Debug模式与Release模式
2.8 学会程序调试方法
2.8.1软件中存在的三种错误类型
2.8.2学会使用VS 2005调试程序:
实例:平方根的简化
即时窗口、设置断点、条件编译
2.9 .NET程序的发布
2.9.1发布前的准备
2.9.2了解.NET程序正确运行的条件
2.9.3 .NET程序发布方式:XCOPY 、ClickOnce、制作安装程序
2.10 总结:RAD环境下编程的基本概念
第二篇 深入把握面向对象理论与技术
第三章 理解类与对象
3.1 从引例开始:介绍类与对象的关系
引例1:单击按钮显示多个窗体
引例2:开发一个实现加减乘除功能的MathOpt类
3.2 编写与使用类
3.2.1设计自己的类
1 类的组成:学会编写方法,属性与字段,列出C语言中的对应的概念
成员的访问级别
设计具有混合访问级别的属性
运算符重载
2 特殊的类:模块
3.2.2类的可视化设计
向项目中加入类图
使用类图设计类
3.3 理解对象
3.3.1数据类型的基本概念
3.3.2值类型变量与引用类型变量
1 变量的内存布局
2 Is与IsNot运算符比对对象引用
3 赋值运算符的含义
3.3.3对象的创建与销毁:构造函数,垃圾收集机制
3.4 类库工程与Assembly
1 类库的使用:Imports语句、命名空间
2 使用VS2005开发类库
Partial类
3 程序集与动态链接库
4 组件化开发:项目依赖与编译顺序
第四章 基于对象的编程
4.1 对象的组合
4.1.1集合对象:
1 集合的概念
2 访问集合元素的访问
3 .NET 2.0提供的常用集合对象:System.Collection命名空间中的类
4.1.2通过类之间的关联组合对象:剖析VS2005窗体和其上控件的关系
4.1.3应用:实现常用的数据结构
数组、堆栈、链表、循环链表、双向链表、队列、树、多叉树、图
4.2 在对象中传送信息
4.2.1对象间信息传送方式概述
1基本方式:设置属性,调用方法
2 高级方式:使用委托,事件驱动,回调,定时调用
4.2.2基本方式应用实例:多窗体编程
1在程序中添加新窗体
2 多窗体间的相互访问
3窗体上控件的动态创建
4.3 对象的保存与重建
4.3.1对象的序列化
4.3.2对象克隆
第四章 继承,接口与多态
4.1 继承的概念
4.1.1在继承中重载或覆盖基类的方法
4.1.2子类变量与父类变量之间的相互赋值
4.1.3继承条件下的对象创建与销毁
4.1.4 .NET Framework中继承特性的应用实例:窗体继承
4.2 抽象基类与接口
4.3 理解多态
4.3.1接口多态与继承多态
4.3.2多态的应用
第五章 异常处理
5.1 异常处理的概念:为什么要使用异常处理?
5.2 编程实现异常处理
5.2.1基本语法:Try...Catch...Finally
5.2.2扩充的语言特性:Using...End Using 块
5.3 .NET 2.0公共语言运行库的结构化异常处理原理:编写高容错程序三原则
第六章 范型编程
6.1 四种编程范式介绍:结构化,基于对象,面向对象,范型
6.2 使用范型的好处
1 减少类的数目
2 初步剖离数据结构与算法
3 提升程序运行效率
4 减少编码错误:可以在编译时检查类型,可以使用IDE的下拉列表
6.3 范型的使用与开发
6.3.1使用.NET 2.0提供的范型类
6.3.2编写自己的范型类
第七章 经典面向对象编程实例分析:四则运算器
7.1 概述: 四则运算器特性分析
7.1 理论的威力:建立数学模型
7.1.1算法分析:前序、中序与后序表达式
7.1.2用类封装数学算法
7.2 软件体系结构设计
7.2.1确定软件处理流程
7.2.2明确软件功能需求:容错性和可扩展性
7.2.3设计用户界面:使用窗体嵌入实现界面切换
7.2.4设计结果
7.3 迭代开发过程
7.3.1测试驱动的开发方法
7.3.2整个软件模块开发次序的确定
7.3.3进一步扩充与完善
第三篇 基于.NET Framework 2.0开发
第八章 使用My名字空间
第九章 事件驱动与异步编程
9.1 委托
9.1.1 Delegate类与语言关键字Delegate
9.1.2使用委托
1在多窗体编程中使用委托
2 使用多路广播委托
9.2 异步编程
9.2.1同步与异步的概念
9.2.2使用委托将同步方法包装为异步方法
9.3 事件驱动
9.3.1事件的含义与应用场景
9.3.2编程实现事件
自定义事件:Customize与Event关键字
9.3.3应用实例
在多窗体编程中使用事件
定时操作
第十章 进程与线程
10.1 理解概念:进程与线程,应用程序域
用实例说明多线程切换与多进程切换在完成同一任务上的差别
设计多层分布式实例,通过中间层组件模拟实现多进程访问共享资源。
10.2 使用进程
10.2.1在程序中启动与停止进程
10.2.2获取进程信息
10.2.3在进程间共享信息
剪贴板
使用共享资源
10.3 使用线程
10.3.1线程的创建,启动和停止
10.3.2线程同步
1.线程状态与死锁
2.等待另一个线程的完成
3.访问共享资源
4..NET 2.0中用于实现线程同步的类:
Interlocked、Monitor、Mutex ReaderWriterLock、BackgroundWorker
10.3.3线程安全
1 集合的线程安全
2 多线程中的可视化控件:启动窗体问题
10.3.4使用线程池
10.3.5多线程应用实例:计算文件夹的容量
第十一章 GDI+技术及其应用
11.1 GDI+概论与计算机绘图原理
11.2 GDI+基础
绘图表面:Graphics对象
绘制基本形状
图形重绘原理:Paint事件的深入介绍
11.3 GDI+应用
11.3.1绘制数学函数图形
直角坐标系
极坐标系
11.3.2递归与分形
11.4 开发经典游戏——俄罗斯方块
第十二章 .NET Framework深度应用
12.1 开发软插件系统
12.1.1确定对象类型:TypeName 和 TypeOf…Is
12.1.2使用字符串名调用属性或方法:CallByName
12.1.3动态对象创建:使用反射技术,泛型反射技巧
12.2 简易集成软件开发环境的开发
动态代码生成与编译
12.3 数据处理
数据的压缩、加密和解密
第四篇 使用VS2005软件工程特性提升开发效率
第十三章 单元测试
13.1 软件测试概论
13.1.1什么是软件测试?
13.1.2为何要进行软件测试?
13.1.3怎样进行软件测试?
13.2 使用VS2005进行单元测试
13.2.1自动创建测试代码
13.2.2运行测试并修正代码错误
13.2.3测试类的私有方法
13.2.4了解测试的代码覆盖率
13.3 分析.NET Framework单元测试框架的设计模式
13.4 在软件开发中应用单元测试:测试驱动的开发方法
第十四章 写出高质量的代码
14.1 VS2005的代码自动化开发特性
14.1.1动态插入代码段:Insert Snippet
14.1.2查找变量的所有引用
14.1.3代码重构
14.1.4自动生成程序文档
14.2 静态代码分析:Code Analyze
14.2.1在IDE中激活静态代码分析特性
14.2.2使用 Error Correction options窗口更改代码
14.2.3利用Code Analyze特性学习编写优质代码
14.3 程序性能分析
14.3.1程序为何运行得如此之慢?——影响程序性能的因素
14.3.2使用VS2005程序性能分析器
1 两种不同的性能分析方法
Sampling
Instrmentation
2 理解VS2005程序性能分析指标
VS2005程序性能分析器的各个视图
3 实例演示:在RichTextBox中给长文本加上行号
瓶颈在哪里?
修正代码,对比前后效果
小结:如何编写更快的代码
结束语:走向软件开发的新天地
附录
VB2005与C#简明语法对应手册
参考文献
缩略语
中英术语翻译对照表