友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第9章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




处还有许多与Microsoft Developer Studio相关的参考资料,这里就 

不再一一尽述,需要时可以从该节点逐级展开至所需内容。  


…………………………………………………………Page 37……………………………………………………………

      第二章 面向对象编程与C++语言  



面向对象的编程是当前程序设计中的热门话题,在这方面已有很多的 

书籍和其它文献可供参考,而且,全面的讲述面向对象的编程技术也 

不是本书的任务,在这里,本章仅仅介绍使用Visual  C++进行面向对 

象编程中所用到的一些关键概念,这些概念是进一步学习Visual  C++ 

所必须的。除了介绍面向对象编程和C++语言的基本概念外,本章还 

介绍了在使用C++的类时所需注意的一些问题。  



另一个需要注意的问题是,尽管本章会介绍面向对象编程和C++语言 

的基本概念,但是,我们仍然假定阅读本书的读者具有C++语言的基 

础知识,至少,需要使用过C++中的类和对象,并且对它们有一定的 

了解。本章也会介绍类和对象的概念以及如何使用它们,但是,假设 

你在阅读这些内容之前,对它们还是一无所知,那么,我们建议你最 

好先看一下一些专门介绍面向对象编程和C++语言的入门知识,本书 

不需要你非常深入的了解这些内容,因为我们假定你懂得C++语言, 

但不假定你精通C++语言,本章正是写给那些虽然能够使用C++语言中 

的类和对象进行编程,但是对一些概念的认识还不够清晰的C++初学 

者。如果你已经对C++语言以及它在Visual    C++中的实现非常之熟 

悉,那么,你也可以暂时跳过本章的内容,继续阅读本书的其它章 

节。  



本章所要讲述的内容包括:  



 l 面向对象的编程的编程技术  



 l 对象及其特点  



 l 使用C++中的类  



 l 从已有的类中派生新的类  



 l 多态及其在C++中的实现  



 l 类模板  



           第一节 面向对象的编程技术  



本节阐述面向对象的程序设计方法中的若干重要概念、方法和思想。 

在刚开始的时候,也许你对这些概念还不大能搞得清楚,但是,随着 

对C++的使用和了解的深入,当你再回过头来仔细推敲这些概念,就 


…………………………………………………………Page 38……………………………………………………………

会发现对它们有了新的认识。  



传统的 “结构化程序设计”方法是由荷兰学者Dijkstra在70年代提出 

的,它把面向机器代码的程序抽象为三种基本程序结构:顺序结构、 

选择结构和重复结构,并提出了一系列的设计原则,如自上而下、逐 

步求精、模板化编程等。根据这些原则,按照程序所需实现的功能, 

自上而下层层展开。上层是定义算法的模块,最下层是实现算法的模 

块。按照这样的规范构成的模块是高度功能性的,有很强的内聚力。 

但各模块的数据处于实现功能的从属地位,因此,各模块与数据间的 

相关性就较差,无论把数据分放在各个模块里还是作为全局量放在总 

控模块中,模块之间都有很大的耦合力。在Windows程序中,多个模 

块是并发执行的,这样,这种耦合力就会极易导致程序系统出现混 

乱。  



而且,在传统的语言中,程序是由传递参数的程序和函数的集合组 

成,每个过程处理它的参数,并可能返回某个值,这种程序是以过程 

为中心的。在传统的面向过程的程序设计中,程序员必须基于过程来 

组织模块,这必然会导致程序的结构与应用领域中结构差异很大。  



现行程序设计方法的另一个大的缺点是围绕着各种软件系统中关键结 

构的作用域与可见性。许多重要的函数或过程的实现主要地取决于关 

键的数据结构。如果一个或多个这样的数据结构了发生了变化,这种 

变化将涉及到许多方面,许多函数和过程必须重写。有时几个关键的 

数据结构发生变化,将导致整个软件系统的结构崩溃。随着软件规模 

和复杂性的增长,这种缺陷日益明显。当程序达到一定规模后,为了 

修改一个小的错误,常可能引出多个大的错误,究其原因,问题就出 

在传统的程序设计方式上。  



而当前的软件应用领域已从传统的科学计算和事务处理扩展到了其它 

的很多方面,如人工智能、计算机辅助设计和辅助制造等,所需处理 

的数据也已从简单的数字和字符串发展为记录在各种介质上并且有多 

种格式的多媒体数据,如数字、正文、图形、声音和影像等。数据量 

和数据类型的空前激增导致了许多程序的规模和复杂性均接近或达到 

了用结构化程序设计方法无法管理的程度。  



为了最大限度的得用已有的资源和减少程序开发的工作量,需要有一 

种比传统的过程式结构化程序设计方法抽象能力更强的新方法,面向 

对象的程序设计方法正是在这种背景下诞生的。  



2。1。1 面向对象的程序设计  


…………………………………………………………Page 39……………………………………………………………

面向对象的程序的最根本的目的就是使程序员更好的理解和管理庞大 

而复杂的程序,它在结构化程序设计的基础上完成进一步的抽象。这 

种在设计方法上更高层次的抽象正是为了适应 目前软件开发的特点。  



最早的 “面向对象”设计语言是Smalltalk语言,该语言是1972年美 

国Xeron公司Palo  Alto研究中心为快速处理各种信息而在Alto个人机 

上研制的软件,1983年正式发行了Smalltalk  2。0版。Smalltalk  80 

被认为是最纯的面向对象的语言,该语言只有一种数据类型—对象。 

Smalltalk未能推广,Alto机上的软件也从未出售过,但它所开创的 

面向对象程序设计方法将结构化程序设计的抽象层次又增高了一层, 

对程序设计方法产生的影响是巨大的。继Smalltalk之后,出现了许 

多的面向对象的程序设计语言,如Eiffel、Clos、C++和Objective…C 

等,其它的非面向对象的程序设计语言,如Pascal、Basic等也引进 

了新的面向对象的机制,产生了新的Object  Pascal、Visual  Basic 

等面向对象的变种。  



使用面向对象的程序设计方法绝非是要摒弃现有的结构化程序设计方 

法,相反,它是在充分吸收结构化程序设计优点的基础上,引进了一 

些新的、强有力的概念,从而开创了程序设计工作的新天地。面向对 

象的程序设计方法把可重复使用性视为软件开发的中心问题,通过装 

配可重用的部件来生产软件,而不是像目前编程所用的那样,通过调 

用函数库中的函数来实现。这里要注意,我们是基于应用程序这一个 

层次来阐述这些问题是,事实上,在对象内部的实现上,我们常常使 

用过程式的结构化程序设计方法,也常常调用C/C++函数库中的很多 

有用的函数,然而从程序的总体结构上说,它是由一系列对象构成 

的,对象之间能够以某种方式进行通信和协作,从而实现程序的具体 

功能。  



面向对象的程序设计中最基本的概念是对象,一般意义上的对象指的 

是一个实体的实例,在这个实体中包括了特定的数据和对这些数据进 

行操作的函数。对于面向对象的程序设计,一个对象具有状态 

(state)、行为(behavior)和标识 (identity)。对象的状态包括它的 

属性和这些属性的当前值。对象的行为包括可以进行的操作以及所伴 

随的状态的变化。对象的标识用来区别于其它的对象。而一个对 

象的行为由它所支持的接口来定义。我们通常不显式的指定对象 

的状态,而被其接口所包含。使用IUnknown::QueryInterface在接口 

之间进行移动的能力定义了对象的标识。  



对象的核心概念就是通常所说的 “封装性”(encapsulation)、 “继 

承性”(inheritance)和 “多态性”(polymorphism),下面我们分别 

阐述其具体含义。  


…………………………………………………………Page 40……………………………………………………………

2。1。2 封装  

返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!