《C++面向对象高效编程(第2版)》——.10 面向对象编程(OOP)

1.10 面向对象编程(OOP)

C++面向对象高效编程(第2版)
这是面向对象软件开发环节的最后一个阶段。将OOD阶段的成果输出,将其输入至OOP阶段中。这个阶段,将用选定(或根据项目要求指定)的语言编写真正的代码。如前所述,面向对象编程是一种由合作对象(就是类的实例)构成程序的编程方法,可通过继承关系设计出相关联的类。

时间: 2024-10-31 09:56:34

《C++面向对象高效编程(第2版)》——.10 面向对象编程(OOP)的相关文章

《C++面向对象高效编程(第2版)》——导读

前言 C++面向对象高效编程(第2版) 面向对象软件开发已逐渐成为开发软件的首选.优秀的面向对象软件开发人员.设计人员.系统架构师对其需求与日俱增.要想成为一名成功的面向对象编程(OOP)人员必须忘却(摈弃)多年来面向程序编程的习惯,从新的角度分析问题. 面向对象编程要求程序员和设计者非常熟悉一些基本范式或概念.理解这些范式是在面向对象软件领域打下牢固基础的基本要求.支持OOP的语言都必须支持这些基本范式.换言之,学习OOP,简单地说,就是学习许多语言(如C++,Eiffel,SmallTalk

《C++面向对象高效编程(第2版)》——2.10 抽象数据类型—栈的实现

2.10 抽象数据类型-栈的实现 C++面向对象高效编程(第2版) 下面的示例用于说明,在C中一个简单栈的实现. Stack.h文件--让所有的抽象数据类型用户都可以使用Stack. typedef Stack* Stackld; typedef int bool; struct Stack { int data; / 在栈上存储元素 */ unsigned count; / 栈上元素的数量 / int top; / 栈顶部的指针 */ / 略去其他细节 .../ };``` Stack.c文件

《C++面向对象高效编程(第2版)》——4.10 “写时复制”的概念

4.10 "写时复制"的概念 C++面向对象高效编程(第2版) 通过以上的讨论可知,TString类相当易懂和易实现.如果经常使用该类的对象作为函数参数和按值返回的值,会出现什么情况?因为TString类使用了深复制语义,如果TString 图4-12 类对象中的字符数目很多,将花费很长的时间来复制字符和删除动态分配内存.这也意味着,创建对象和销毁对象的开销很大.我们设计TString类的初衷,就是希望客户在使用字符串的地方,都能使用TString类对象.但是,如果创建.复制.赋值和销

《C++面向对象高效编程(第2版)》——3.10 设计期间的重点——类的接口

3.10 设计期间的重点--类的接口 C++面向对象高效编程(第2版)在第2章中讨论了接口和实现的概念,现在来进一步学习它们.当客户(任何使用类创建对象或通过继承使用类创建另一个类的人)查看类时,最关心的是类中声明的内容.更具体地说,如果客户只准备创建类的对象(大多数客户都会这样做),他会注意public区域:如果客户试图通过类的继承创建(设计)一个新类,他会注意public和protected区域,这种情况下,无需过多关注private区域. 通过观察类的公有成员函数,客户可获知能对类对象进行

《C++面向对象高效编程(第2版)》——4.6 对象赋值的语义

4.6 对象赋值的语义 C++面向对象高效编程(第2版) 赋值与复制的操作非常类似.在C++中,绝大多数的复制操作都由语言隐式调用(当对象按值传递或按值返回时).当通过现有对象创建新对象时,也进行了复制操作(但不是很频繁).与复制相反的是,赋值是必须由程序员显式调用的操作.然而,在Eiffel和Smalltalk中,赋值和复制操作都由程序员显式调用.这也是基于值的语言与基于引用的语言之间的区别. 在C++中,对于对象和基本类型赋值都具有相同的含义.把基本类型变量赋值给另一个(兼容的)基本类型变量

《C++面向对象高效编程(第2版)》——2.21 确保抽象的可靠性——类不变式和断言

2.21 确保抽象的可靠性--类不变式和断言 C++面向对象高效编程(第2版) 任何抽象都必须与客户履行它的契约(contract).当客户使用类时,他希望类的对象像其发布描述的那样运行正常.另一方面,类的实现者必须千方百计地确保对象运行正常.但是,类只有在客户履行自己那部分契约后,才能正确行使它的职责.例如,类的成员函数可能要求传入的参数为非零指针(non-zero pointer).只有满足此前提条件,成员函数才能保证它的行为.因此,客户必须履行一些义务.换言之,如果客户履行了她那部分契约,

《C++面向对象高效编程(第2版)》——3.2 类要素的细节

3.2 类要素的细节 C++面向对象高效编程(第2版) 3.2.1 访问区域 客户可以访问在类的public区域中声明的任何成员.我们可以把该区域看做是通用公共(general public)的接口,它没有任何保护,是类限制最少的区域.一个设计良好的类绝不会将数据成员包含在public区域,该区域只能包含成员函数.如果在public区域包含数据成员,那么无需类的实现者,仅通过编译器即可访问这些数据成员.这违反了数据抽象和封装原则.这也是我们为什么总将数据成员放在private或protected

《C++面向对象高效编程(第2版)》——3.4 赋值操作符

3.4 赋值操作符 C++面向对象高效编程(第2版) 现在,让我们分析main程序中的语句: a = b ; // 将一个栈赋值给另一个栈 在该语句中,我们将对象b赋值给对象a,使用赋值操作符完成赋值操作.如果a和b都是简单的整数,无论a中的值是什么,编译器都会用b中的值将其擦写(overwrite).就是这么简单.但是在该例中,a和b都是我们创建的对象,这意味着由我们负责赋值操作.我们知道TIntStack类对象之间如何进行赋值,并且能够实现赋值操作符.对于任何赋值操作符,都应注意以下几点:

《C++面向对象高效编程(第2版)》——4.9 分析

4.9 分析 C++面向对象高效编程(第2版) TString类对象内部用一个指针和一个_length数据成员表示.默认构造函数将_length和_str指针都设置为0._length数据成员是获取保存在字符串中的字符数目的一种方法.无论何时修改TString类对象中的字符数目,都会即时更新_length. TString::TString(const char* arg)在分配内存后从arg中复制字符到字符串对象中,然后正确设置_length. TString::TString(char c)