再上一篇:8.7 简单链表及其应用
上一篇:8.8 类型定义
主页
下一篇:9.2 类
再下一篇:9.3 对象
文章列表

第九章 类和对象

《VC++程序设计基础》,讲述C++语言的语法和标准库,以及Visual C++ 函数库和MFC类库的使用,并附相关代码示例。

9.1概述

我们在前面所介绍的程序设计方法是用函数来实现对数据的操作,且往往把描述某一事物的数据与对数据进行操作的函数分开。这种方法的缺点是:当描述事物的数据结构发生变化时,处理这些数据结构的函数必须重新设计和调试,而在调试函数时,又有可能修改了不应修改的数据。在编写大的程序时,这给调试程序和程序的维护都带来很大的问题。由于把函数与要处理的数据分开,对数据结构或函数的任何不适当的修改都可能导致整个程序不能正确执行。

为了克服以上的缺点,当前均采用面向对象程序设计方法,简称为OOP。OOP的基本要求是将描述某一类事物的数据与所有处理这些数据的函数都封装成一个整体。这样一来,可以将描述一个事物的数据隐藏起来,可以做到只有通过这一整体中的函数才能修改这一整体中的数据。数据结构的变化,仅影响封装在一起的函数;同样地,修改函数时仅影响封装在一起的数据。真正实现了封装在一起的函数和数据不受外界的影响。这种将数据与处理这些数据的函数封装成一个整体,就构成一个类。或者说,类是对一组性质相同事物的程序描述,它由描述该类事物的共同特性的数据和处理这些数据的函数组成。

类的封装性使类中的数据在类的外部是不可见的,外部只能通过公共的接口(类中的函数)与类中的数据发生联系。这样做可以显著地提高程序模块的独立性和可维护性。

一个类可以派生出子类。子类可以从它的父类中部分或全部地继承各种形为(函数)或属性(数据),并增加新的形为和属性。这种类的封装性为类的继承提供了实现基础。

对象是类的一个实例,类在程序运行时被用作样板来建立对象。对象是动态产生和动态消亡的。对象之间的通讯是通过系统提供的消息机制来实现的。系统或对象可把一个消息发送给一个指定的对象,或某一类对象。接收到消息的对象通常必须处理所接收到的消息,对象对消息的处理是通过激活本对象内相应的函数来实现的,并根据所处理的情况返回适当的结果。

在第一章中,简单介了面向对象的程序设计。从程序设计的角度来看,面向对象的程序设计,是通过为数据和代码建立分块的内存区域,以便进行高度模块化的一种程序设计方法,这些模块(已构成类)可以被用作样板,在需要(建立对象)时再建立其拷贝。根据这个定义,一个对象占用计算机内存中的一个区域,这个区域相对独立。通过这种将不同的对象存放在不同的内存分块中的方法,在功能上实现了对象之间保持相对独立,即实现了对象的封装性。这种定义也说明了为对象分配的内存块中,不但存放描述对象的数据,而且也存放代码(函数),只有局部于对象中的代码(函数)才可以访问存放在这个对象中的数据。这就明确地限定了对象所具有的功能,即在整个程序中所起的作用,实现了对象不受外部事件的影响,保证了属于对象的数据和代码不遭受破坏。换言之,在面向对象的程序设计中,对象是受保护的。