- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]中科院C课件chapter_3
第三章 类(class)及其对象
(object)的封装(encapsulation)
——数据及其操作的统一管理
3.1 封装性
封装可以解决数据与函数代码之间的相容性和数据的保护问题。
先看C 语言中不使用封装的例子。
[例1]不用封装的例子
// no_encapsul.cpp
// The case of no capsulation
#include iostream.h
int sq_int(int a)
{
return a*a;
}
double sq_dbl(double a)
{
return a*a;
}
void main()
{
int j=5;
double d=2.5;
j = sq_int(j);
d = sq_dbl(d);
cout j endl;
cout d endl;
}
/* Results:
25
6.25 */
此程序比较简练(当然还可以再简练些),但它改变了j 和d 的值。
如果希望在不改变这两个值的情况下求出它们的平方值,则可以将主程
序修改如下,增加两个变量:
void main()
{
int j=5, k;
double d=2.5, f;
k = sq_int(j);
f = sq_dbl(d);
cout k endl;
cout f endl;
}
以上程序中,虽然两个变量j 和d 没有改变,但其它函数仍有可能
修改这两个变量。如何保证需要修改时才修改,不准修改时就不修改。
这要依靠封装。
[例2]使用封装以便保护数据
// 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) (或称函数、行为或服务)集合包装在一起,组成为一个
实体。
封装具有以下特点:
1. 用户无法访问所有私有数据和函数细节(即如何提供服务的细节,
也即函数定义)。
2. 用户只知道函数接口部分所提供的操作功能,根据这些操作功能来
调
您可能关注的文档
- [工学]《计算机通信技术》课件 第9章 通信程序的编制方 法.ppt
- [工学]《计算机硬件基础》第7章日常使用中简单维护.ppt
- [工学]《道路工程》第3章 道路平面设计.ppt
- [工学]《面向对象程序设计c++》综合复习题集及答案详解2.doc
- [工学]【2012多媒体技术】CH04-1 多媒体网络与通信技术.ppt
- [工学]【TransCAD】交通规划·北京交通大学.pdf
- [工学]《计算机组成原理》实验指导书.doc
- [工学]【众多高校认可】触发器【经典教学课件】.ppt
- [工学]《设备电气控制综合实训》教师指导手册-主轴.doc
- [工学]【大学本科毕业设计】基于PLC的变频调速恒压供水系统-----自动化等专业 2.doc
文档评论(0)