类class及其对象object的封装encapsulation.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类class及其对象object的封装encapsulation.DOC

第三章 类(class)及其对象(object)的封装(encapsulation) ——数据及其操作的统一管理 3.1 封装性 上面第二章§2.6.5“函数指针与其指针数组”的举例程序err__action_1.cpp中,要求void (*action[ ] ) ( )函数指针数组和字符指针数组char *err_msg[ ]的各单元顺序必须完全对应,也即,必须将两个数组中有关冷却水、通风或润滑油的各单元全都一一对应才有意义。删除单元时,void act_water( ); //函数:采取动作,开启水阀 void regulate( ); //函数:调节水阀开启度,以便控制水量 …… } 其中例如,随后可将字符指针char *err_msg初始化为指向字符串“No cooling water”。 再看另一个例子。第二章§2.7“引用”中提到,主函数内具有引用的变量必须是全局变量而不能为某个函数内部的局部变量,不然当退出该函数时,将出现“悬挂引用”的现象。但根据软件工程的观点,应尽少使用全局变量。为解决此问题,可依靠“封装”。如下: class ref_example { double temp; //数据:水温 double ref; //数据:水温变量temp的引用 } 随后该引用ref可初始化为double ref = temp;。 该类的对象可被定义为全局性,因此这个对象的各个成员也都全局性引用不会遭遇“悬挂引用”的命运。§3.5.1.1“特定类型数据成员的初始化”中介绍。 以下程序依靠封装,能够保证需要修改数据时才能修改,不准修改数据时就不能修改。 [例1]使用封装以便保护数据 // encapsul.cpp // The case of using capsulation to protect datum i(不是data) #include iostream.h class integ //用户建立一个类,以便封装 { int j; //被保护的数据 public: integ( ) { j = 6; } //构造函数 int sq() { return j*j; } //求平方的函数 void inc() { j++; } //求增量的函数 int read() { return j; } //读数据的函数 }; void main() { int j; integ obj; //建立对象并初始化 cout obj.read() endl; //读数据 j = obj.sq( ); //求平方 cout j endl; //读平方值 obj.inc( ); //求增量 cout obj.read() endl; //读增量值 } /* Results: 6 36 7 */ 从以上程序看出,不允许外部函数(如主函数main( ))等直接访问(读取或修改)class integ中的数据成员j,而必须通过调用类class integ的成员函数read( ),才能读取j。如需求其平方值,则须调用成员函数sq( ),但这些函数仍然无法改变数据j。如欲将数据加一,则须调用成员函数inc( )。 封装是指将对象的属性(attribute)(或称数据内容)和作用于这些属性上的操作(operation)(或称函数、行为或服务)集合包装在一起,组成为一个实体。此实体称为“类”。 封装具有以下特点: 用户无法访问所有私有数据和了解函数细节(即如何提供服务的细节,也即函数定义)。 用户只须知道函数接口部分所提供的操作功能,即可根据这些操作功能来调用函数,从而访问私有数据。 3.2 类(class)及其对象(object) 3.2.1 C++类及其构成 在第一章§1.2.1“编程语言特征”中曾提到:客观世界的各事物可按其共性分为各个类(称为基类),这些类是具有相同共性的各事物的集合,它是面向对象语言中相对独立的程序单位,是这些事物的统一抽象。 在面向对象程序设计语言中,“类”是一组具有相同数据结构和相同操作(方法、函数)的集合,是对一系列具有相同性质的对象的抽象,它描述的不是个别对象而是全体对象的共同特征。 C++具有两种数据类型,第二章中介绍了第一种类型,即基本数据类型(即预定义类型)。本章将介绍第二种类型,即用户自定义的数据类型。主要是“类”。 对象是类的实例(instance),它具有自己的属性,可以执行一定操作(函数)。 C++中,“类”被表达为一个具有特定功能的程序块。一个类具有两个成员部分:数据成员(data members)和成员函数(member functi

文档评论(0)

capt + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档