[December 29, 2006] 读书笔记《C++ PROGRAM DESIGN》

英文版的封面

C++ PROGRAM DESIGN    An Introduction to Programming and Object-Oriented Design

书名:C++程序设计----程序设计和面向对象设计入门(第3版)

作者:James P.Cohoon Jack W.Davidson

出版者:清华大学出版社

2002年1月第1版

定价:76元 (好贵啊~ 我这本是借的:)

这本书是影印版,意思是这本书是英文版,一共是953页,前前后后我看了4个月左右

看到第十三章,最后的Chapter 14 Templates and polymorphism 和 Chapter 15

Software project-Bug Hunt! 没有看。美中不足的是,我没有动手操作上面的代码。

这本书非常适合初学者,内容上都是深入浅出,看起来也很有趣。前提是:你只是想学

C++而不是为了考试。相比之下,国内的很多教材,可以称得上是“考试的教材”,因为

更专注于细节的讲述,比如计算一个 a=1; ++a++; 等等,常常学完了之后,考试能够

得很高的分数,而面对实际问题,甚至不知道如何开始。

记下一点东西,算是“不动笔墨不读书”吧。

第一章 Computing and the object-oriented design methodology

介绍什么是程序,什么是面向对象。关于程序举了一个自动售货机机器语言的例子

很有意思。

第二章 The fundamentals

介绍C++的基本类型,特别讲述了cin cout 。学过这章,完全可以写一写计算的

简单程序。

第三章 Modifying objects

介绍string object,引入EzWindow object,最后讲述了机器计算的历史。

第四章 Control construts

介绍if while 这样的控制语句,然后讨论了一下关于语言风格的问题。比如:使用

if 时“{”和“}”的放置等等。我认为这对于保证程序的可读性很重要。

第五章 Function basics

介绍如何使用函数,预定义,条件编译,这些在编写大型或者说“复杂一点”的程序

时候是非常有用的。还有关于iostream, stream的观念是抽象出来的,与具体设备无关的;

fstream 也就是文件的读写。

第六章 Programmer-defined functions

介绍变量的作用域和形参实参。常量参数存在的必要:能够高效的传递an object

属于programming tip 。function overload 递归。

第七章 The class construct and object-oriented design

以Ez-Window为例子讲述面向对象的思想。从class开始讲起。如何申明一个class

如何访问这个class中的objects,如何与这个object的成员交互。附录继续介绍history of computing.这次

讲述的是ENIAC和EDVAC。其中插入了关于ENIAC专利的事情。如何“After more than 25 years,Atanasoff's

contributions to the development of the electronic digital computer were finnally made public”       第八章 Implementing abstract data types

引入ADT(abstract data type)的概念。以实现实数这个类,及其运算为例子

展示如何使用OOP(国内教材好像更喜欢使用复数为例子?)

ADT Library设计上的minimality(最小化原则)

第九章 List  列表结构

列表结构的实现主要有array的和class方式。后者是面向对象的方法,也是本章

介绍的重点。还介绍了重要的算法:sort(排序) insertionSort

Container Class,Standard Template Library (STL)

Binary searching

Maze Runner

第十章 The EzWindows API  一个详细的例子

第十一章 Pointer and dynamic memory

指针是C语言灵活性的体现,也是诸多bug的根源。

pointer to functions

(题外话:我很少使用指针处理算法,因为现在PC内存足够大,

使用指针通常需要额外的debug得不偿失)

第十二章  Testing and debugging

很有趣的一章,介绍测试方法:

black-box testing

white-box testing

12.2.2 debugging tips and techniques

Simplify the problem         Stabilize the error

Locate the error

Explain the bug to someone else

Recognize common bugs

Recompile everything

Gather more information

Pay attention to the compiler

Fix bugs as you find them

第十三章 Inheritance

每一个程序员都梦想着有一天:他维护的程序只需要添加代码而不必去debug它们。

至少每天我在浏览他人的代码时,始终充满这样的想法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注