图书前言

前    言

  镰刀、锄头等第一代人力工具可把物质资源加工成材料,扩展了人的体质功能,孕育了农业时代的生产力,创建了农业文明。机车、机床等第二代动力工具可把能量资源转换成为动力,扩展了人的体力功能,形成了工业时代的生产力,建立了工业文明。

  20世纪后半叶,人类开始认识到信息也可以作为一种资源,甚至是更为重要的资源。综合利用物质材料、能源动力和信息知识,可制造新一代既有活力又有智能的生产工具。第三代生产工具用于扩展人类的智力功能,从而培育出信息时代的生产力,把工业文明进一步升华为更加辉煌的信息文明。

  为迎接信息社会的来临,以信息化带动工业化,以工业化促进信息化,走出一条科技含量高、经济效益好、资源消耗低、环境污染少、人力资源优势得到充分发挥的新型工业化道路,是世界各国现代化的必然选择。

  在引领时代的软件行业,软件工程师始终是最为紧俏的科研人才。当今软件开发人才的培养速度难以企及软件行业的发展,主要在于对程序设计的片面理解和传统的教育模式。随着软件技术的发展,企业对软件人才的需求不再呈现金字塔式的结构。现在,许多初级程序设计工作更多的是使用自动化工具完成,程序设计的门槛已经降低。在人才培养上,过多地强调程序设计语言的语法式教学或过细地解析API的列表式培训已经不合时宜,难以有效地培养合格的软件工程师。

  众所周知,作为第三代智能工具的典型代表,计算机的主要功能是实现计算的自动化,涉及计算的对象(数据)和计算的过程(算法)。数据和算法用程序来描述,计算自动化的核心任务就是程序设计。除了数据和算法,程序设计还涉及程序设计语言、计算环境、程序设计范式等多个方面。程序设计类的教材,有的突出程序设计语言,有的偏重程序设计工具,难以将程序设计所涉及的方方面面有效结合起来。本书以面向对象范式为主线,将程序设计语言、工具库和方法学等有机“串接”起来,注重文化传承,中西结合,以及现实世界与机器世界的关联,旨在培养深刻理解程序设计核心概念、基本原理,掌握实用程序设计技术和方法,具备自主学习和终身学习的意识,具有不断学习、适应发展、能解决实际应用问题的能力的实用型软件工程师。

  面向对象程序设计范式具有封装、继承、多态等优点,能显著提高程序的可重用性和可扩展性,是现代开发大型应用软件的主要技术。支持面向对象程序设计范式的程序设计语言有很多,如C++、Java、C#等。20世纪80年代以来,C/C++一直是使用最为广泛的商业化程序设计语言。高校计算机相关专业普遍开设有面向对象程序设计类课程,使用的教材一般是用C++进行描述的。但是,C++过度的功能扩张破坏了面向对象的设计理念,而且学习周期长,开发效率低,软件行业迫切需要一种能在控制力和生产率之间达到良好平衡的全新程序设计语言。因此,C++已经难以适应行业和高校的教学要求。C#是一种简单、现代、通用、完全面向对象的程序设计语言。它从C/C++发展而来,汲取了C/C++、Delphi、Java等多种语言的精华,具有语法简洁、与Internet结合紧密、安全高效、灵活兼容等优点。C#语言简洁易懂,更适合高校和培训机构传授面向对象设计理念和技术。从C#入手,可以更容易体验和感悟现代化程序设计方法和技术,掌握可重用面向对象软件的开发方法,大幅度提高复杂软件系统的生产率和质量。本书是我校“面向对象程序设计”精品资源共享课程教改研究的结晶,用C#语言描述和介绍面向对象程序设计范式,思路新颖、图文并茂,不仅适用于本科院校的学生,也可作为各类培训班学生面向对象程序设计或桌面应用开发类课程的首选学习用书。

  本书作者是具有软件开发和项目管理经验的大学教师。作为国家注册的高级程序员,在软件企业长期从事软件开发、程序设计、技术培训等工作,开发过多项软件系统。从教后,主讲计算机科学基础、面向对象程序设计、软件工程、程序设计范式、软件设计模式、软件项目管理等多门课程,对软件工程、程序设计、技术培训、专业教育等有着深刻的理解和丰富的实践经验。本书是作者教学和培训经验的积累,具有如下特色。

  (1) 概念探源:计算机科学知识源于欧美国家,从源头梳理概念可以帮助读者把握知识发展脉络,为跟踪学习先进技术指引方向,培养技术研究能力和终身学习意识。本书的大部分核心概念都从Wikipedia指出出处,对一些容易引起混淆的概念,都针对原文进行了详细解析。我国计算机相关术语来自英文资料,在引进时可能会遇到翻译障碍。例如,C语言的“函数”由function翻译而来,而“函数”术语本身是由清朝数学家李善兰翻译而来。但从程序设计角度,function译为“功能模块”或“过程模块”也许更便于理解。本书的概念探源试图引导学生从概念入手逐步加深对程序设计语言实现机理的理解,进而掌握程序设计技术和方法。

  (2) 注重思想:一种程序设计语言可以体现多种范式,如C#语言既支持过程式,也支持面向对象、组件化等思想;一种范式也可以在多种程序设计语言中体现,如C++、Java、C#等语言都支持面向对象程序设计范式。每门语言都有各自的特点及难点。针对不同的任务,应该用不同的语言实现。同一个任务,用同一种语言实现,不同的方法会有不同的效率。本书解析了用不同思想解决同一问题的优缺点,以加深对面向对象程序设计范式的理解。书中还适当点缀中国文化思想,在增强趣味性的同时,对于中西方文化的结合和传承也有一定的启示意义。

  (3) 分层递进:从基础级的变量与过程到对象级的封装、继承与多态,从模式级的委托与事件到实用级的集合与泛型,从应用级的图形处理、文件存储、数据库访问到企业级的复杂软件项目开发,逐层递进,分类学习。本书前半部分(第1~4章)以概念及C#语言实现机理为主,强调计算机与现实之间的关系;后半部分(第5~9章)以应用.NET框架类为主,强调程序设计的实用性。

  (4) 案例驱动:本书所涉及的主要概念都以完整的案例加以说明,与现实紧密结合,避免了技术的枯燥性,增强了实用性和趣味性。第6~8章用一个完整的案例串接起来形成一个有机的整体,为实现多层应用程序打下基础。第9章以企业信息化为目标,实现了一个基于分层软件体系结构的管理信息系统的原型。以此案例作为软件开发能力构建的目标,可有的放矢地驱动学习的进程。

  另外,本书还为重要的知识点配备了全程板书式授课的教学微视频,可用于MOOC模式的教学或自学。

  在本书的编写过程中,参考了很多国内外同行的有关资料,西南石油大学计算机科学学院的廖浩德、杨力、杨云、高磊、王世元,现代教育中心的向海昀、汪立欣,教务处的符晓等教师参加了写作思路的研讨、收集资料、编写和程序调试等工作。张豫新全程负责教材的编写和出版事宜,包括案例设计、文字录入、图形绘制、内容合成和编辑审校等。西南石油大学教务处、教材科、计算机科学学院和理学院等部门的领导、工作人员和教师多年来对作者始终给予了热情的支持和鼓励。清华大学出版社对本书的出版十分重视并做了周到的安排,使本书得以在短时间内顺利出版。在此向他们表示诚挚的谢意。

  由于作者水平有限,疏漏之处在所难免,敬请广大读者批评指正。

  

  

  

                                                                   编  者