- 浏览: 124092 次
- 性别:
- 来自: 武汉
-
文章分类
最新评论
我们说IntArrayRC 是一种有特殊行为的IntArray,它支持对索引值的范围检查。子类型与基
类共享公共的接口common interface ——公有操作的公共集由于共享公共接口,允许了
子类和基类在程序内部可互换使用,而无需考虑对象的实际类型。从某种意义上来说,公共
接口封装了单个子类型中与类型相关的细节。类之间的类型/子类型关系形成了继承或派生层
次关系inheritance or derivation hierarchy。例如,下面的非成员函数swap()把指向基类
IntArray 对象的引用作为第一个参数,该函数交换索引i 和j 处的元素
#include <IntArray.h>
void swap( IntArray &ia, int i, int j )
{
int tmp = ia[ i ];
ia[ i ] = ia[ j ];
ia[ j ] = tmp;
}
下面是swap()函数的三个合法调用
IntArray ia;
IntArrayRC iarc;
IntSortedArray ias;
// ok ia 是一个IntArray
swap( ia, 0, 10 );
// ok: iarc 是IntArray 的子类型
swap( iarc, 0, 10 );
// ok: ias 也是IntArray 的子类型
swap( ias, 0, 10 );
// error: string 不是IntArray 的子类型
string str( "not an IntArray!" );
swap( str, 0, 10 );
三个数组类都提供了自己的下标操作符实现当然我们的要求是当调用如下函数时
swap(iarc, 0, 10);
IntArrayRC 的下标操作符被调用当调用如下函数时
swap( ias, 0, 10 );
IntSortedArray 下标操作符被调用等等。swap()调用的下标操作符必须潜在地随着每次调
用而改变。它必须由被交换元素的数组的实际类型来决定。在C++中,这可以由虚拟函数
virtual function 机制来自动完成。
为使IntArray 类能够被继承,我们需要在语法上做一点小小的改变,必须可选择的
减少封装的层次,以便允许派生类访问非公有的实现,而且我们也必须显式地指明哪些函数
应该是虚拟的。最重要的变化在于我们如何把一个类设计成为基类。
发表评论
-
在ubuntu7.10用终端编译运行c++程序
2008-02-27 15:54 1034<script>function StorePag ... -
函数指针大全
2009-01-01 18:44 518<script>function StorePag ... -
问题的解决
2009-05-20 00:16 519<script>function StorePag ... -
1.2 C++程序
2009-05-20 23:16 594<script>function StorePag ... -
C++的预处理器指示符
2009-05-21 22:58 899<script>function StorePag ... -
1.4 注释
2009-05-23 00:05 565<script>function StorePag ... -
1.5 输入输出初步
2009-05-23 23:18 562<script>function StorePag ... -
2.3 基于对象的设计
2009-05-27 22:17 592<script>function StorePag ... -
基于对象的设计(2)
2009-05-28 23:48 509<script>function StorePag ... -
基于对象的设计(3)
2009-05-30 00:51 527<script>function StorePag ... -
基于对象的设计(4)
2009-05-31 02:07 628<script>function StorePag ... -
基于对象的设计(5)
2009-05-31 22:50 687<script>function StorePag ... -
面向对象的设计(1)
2009-06-02 01:44 609<script>function StorePag ... -
面向对象的设计(3)
2009-06-03 22:51 608<script>function StorePag ... -
面向对象的设计(4)
2009-06-05 00:05 633<script>function StorePag ... -
面向对象的设计(5)
2009-06-05 23:17 736<script>function StorePag ... -
泛型设计(1)
2009-06-07 00:28 617<script>function StorePag ... -
泛型设计(2)
2009-06-08 01:04 678<script>function StorePag ... -
泛型设计(3)
2009-06-09 01:14 605<script>function StorePag ... -
基于异常的设计(1)
2009-06-10 00:39 547异常exception 是指在运行时刻程序出现的反情形,例如数 ...
相关推荐
面向对象设计是一种软件设计方法,它强调对象之间的交互和协作,以达到软件系统的高内聚、低耦合的目标。在软件设计中,面向对象设计方法可以帮助开发者更好地理解系统的需求和行为,从而提高软件系统的质量和可维护...
面向对象设计(Object-Oriented Design,OOD)是一种软件开发方法,它基于“对象”的概念,将现实世界的问题域转化为计算机程序。UML(Unified Modeling Language)是面向对象设计的一种标准化建模语言,用于可视化...
### UML面向对象设计基础 #### 基本概念与符号表示 《UML面向对象设计基础》一书详细介绍了面向对象软件设计的基础知识,包括基本概念、符号表示、术语、准则和原理。面向对象设计是一种软件设计范式,强调通过对象...
"面向对象程序设计—图书管理系统设计" 面向对象程序设计是当前软件开发的主流技术之一,其应用范围非常广泛,涵盖了各个行业和领域。图书管理系统是图书馆中的一种重要管理系统,它负责管理图书的存储、借阅、归还...
面向对象设计理论是软件开发领域中的核心概念,它是一种基于现实世界中对象和它们之间交互的编程模型。这种设计方法论极大地提高了代码的可维护性、可扩展性和重用性。下面将详细阐述面向对象设计的基本概念、原则...
面向对象设计模式是软件开发中的一种重要思想,它通过总结和提炼在软件设计过程中常见的问题和解决方案,形成了可复用的设计规范。标题提到的“23种面向对象设计模式”涵盖了设计模式的主要分类,这些模式在Java、...
面向对象设计是在分析的基础上进行的,它关注于如何将需求转化为软件系统的内部结构。设计阶段的输出通常包括更详细的类图、活动图、序列图、状态图和组件图等UML模型。设计过程还会确定系统组件的接口和协作方式。 ...
《面向对象设计原理与模式(Java版)》全面介绍了Java面向对象程序设计的原理和模式,帮助解决Java程序中的设计问题。此外,该书十分注重Java面向对象程序设计的每个细节,以及继承、方法、类、设计模式等在程序设计...
《面向对象程序设计:C++语言描述(原书第2版)》内容丰富,结构合理,写作风格严谨,深刻地论述了c++语言的面向对象编程的各种技术,主要内容包括:面向对象编程方法、c++语言的各种特性、stl、c++输入/输出流、mfc等。...
详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了...
4. 继承:继承是面向对象设计中的一个核心机制,它允许创建一个新类来继承现有类的属性和方法。这使得软件设计可以复用和扩展。 5. UML(统一建模语言):UML是一种标准的图形化建模语言,用于软件系统的设计和文档...
面向对象程序设计 c++面向对象程序设计 c++面向对象程序设计
面向对象设计之3_基于UML的图书管理系统的分析与设计说明 本资源摘要信息主要介绍面向对象设计和UML(Unified Modeling Language)在图书管理系统中的应用。面向对象设计是一种程序设计方法,强调使用对象、类、...
面向对象设计模式是软件开发中的重要工具,它们是经过时间考验和广泛实践验证的设计解决方案,旨在提高代码的可重用性、灵活性和可维护性。C#作为一款强大的面向对象编程语言,为开发者提供了实现这些设计模式的良好...
Java面向对象程序设计是编程领域中的重要主题,尤其在企业级应用开发中占据主导地位。本教程涵盖了这一关键概念,旨在帮助学习者深入理解和掌握Java的面向对象特性。以下是相关知识点的详细说明: 1. **面向对象...
面向对象程序设计课程设计题目 面向对象程序设计课程设计是一门旨在提高学生实际分析问题、编程和动手能力的课程设计。课程设计旨在引导学生学习掌握面向对象思想和 Java 编程语言,熟练运用 Java 工具,通过课程...