TCPL 学习笔记 第1章

章节题目:A Tour of C++
总结者:chaoyinlee@Repace
时间:2011-08-29 14:51:36

1.概要介绍

“A Tour of C++”,顾名思义即对C++语言的概览,写作本章的目的是为了让读者对C++有个整体的认识,同时对整书的内容起到抛砖引玉的作用。内容涉及更多的是C++的整体特征,而对技术细节并不深究。

第一节开门见山,提出“What is C++ ?”,回答非常精简:

  • 更好的C
  • 支持数据抽象
  • 支持面向对象编程
  • 支持泛化编程

作者接着对“面向对象程序设计”进行了简单解释。简单来说,它是对一组问题写出“好”程序的一种范型。C++就是这样一种面向对象程序设计语言,它能够很好支持面向对象风格的程序设计。

为了方便理解,我简单查阅了下“面向对象”的概念:
面向对象即在编程过程中采用的封装继承多态的编程方法。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。具有相同特性(数据元素)和行为(功能)的对象的抽象就是。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。面向对象——摘自《百度百科》

接着作者说了这段我觉得相当精辟的话:
The important issue is not so much what features a language possesses, but that the features it does possess are sufficient to support the desired programming style in the desired application areas.
最重要的不在于某个语言究竟拥有多少特征,而在于它所拥有的特征是否足以在某个所希望的应用领域中支持某种所希望的程序设计风格:

  • 所有的特征必须清晰而优美地集成在语言之中。
  • 必须能组合使用这些特征去得到一种解决方案,如果无法做这样的组合,那就会要求额外的独立特征。
  • 应尽可能减少荒谬的和专用的特征。
  • 任何特征的实现都不应该给未使用这种特征的程序强加明显的额外开销。

具体到面向对象编程语言,需要做到其定义的语言特征能支持面向对象应用的特征:封装、继承和多态。强大而不冗余,尽可能没有“荒谬和专用”的特征。

2 几种程序设计模式

2.1过程式程序设计范型:


确定你需要哪些过程;
采用你能找到的最好的算法

过程式程序设计所关注的是处理过程——执行预期的计算所需要的算法。

2.2模块程序设计范型(数据隐藏原理):


确定你需要哪些模块;

将程序分为一些模块,使数据隐藏于模块中

一组相关的过程与它们所操作的数据组织在一起,通常被称作一个模块。
C++提供了一种机制,可以把相关的数据、函数等组织到一个独立的名字空间里。例如,模块Stack的用户接口可声明如下:
namespace Stack{//接口
void push(char);
char pop();
}
void f()
{
Stack::push();
if(Stack::pop()!=’c’)error(“impossible!”);
}

2.3面向对象程序设计范型


确定你需要哪些类;

为每个类提供完整的一组操作,利用继承去明确地表示共性

在不存在共性的地方,数据抽象就足够了。在类型之间,能够通过使用继承和虚函数挖掘出共性的地方,可以看作是面向对象程序设计对于该问题的适用性的一个石蕊检验。

2.4通用程序设计范型


确定你需要哪些算法;
将它们参数化,使它们能够对各种各样适当的类型和数据结构工作

我们可以将字符堆栈推广到一个任意的堆栈类型,方法是将它做成一个模版。
模版是一种编译时的机制,因此,与“手工编写的代码”相比,它们的使用并不引起任何额外的运行时开销。

 

你可能感兴趣的:(TCPL 学习笔记 第1章)