程序设计华南理工大学 第5章类2隐藏实现.ppt

程序设计华南理工大学 第5章类2隐藏实现.ppt

ID:56531119

大小:267.00 KB

页数:34页

时间:2020-06-27

程序设计华南理工大学 第5章类2隐藏实现.ppt_第1页
程序设计华南理工大学 第5章类2隐藏实现.ppt_第2页
程序设计华南理工大学 第5章类2隐藏实现.ppt_第3页
程序设计华南理工大学 第5章类2隐藏实现.ppt_第4页
程序设计华南理工大学 第5章类2隐藏实现.ppt_第5页
资源描述:

《程序设计华南理工大学 第5章类2隐藏实现.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第五章类:隐藏实现面向对象程序设计(C++)5.2隐藏实现:例内部电路(实现)有不同;但操作界面(接口)总是相同的。KV-HR32M90Ver1.1Ver1.05.2隐藏实现:必要性让库的使用者远离一些他们不需要知道的内部实现;允许库的设计者改变内部实现,而不必担心对客户程序员造成什么影响。5.2隐藏实现:原则Public:turn_on();turn_off();volume_up();volume_down();change_channel();private:change_red();change_blue();chan

2、ge_green();……boundary将类的功能描述部分作为共有部分接口提供给用户;将数据的内部表示、功能的内部实现作为私有部分隐藏起来。5.2.1C++的访问控制Public/private/protectedPublic:公有成员,其后声明的所有成员可以被所有的人访问。Private:私有成员,除了该类型的创建者和类的内部成员函数之外,任何人不能访问。Protected:保护成员,与Private基本相同,区别是继承的结构可以访问Protected成员,但不可以访问Private成员。intmain(){Bb;b.i=

3、1;//OK,public//!b.j='1';//illegal,//!b.f=1.0;//illegal,b.func();//OK,public}///:~注:protected修饰符将在后续章节解释设置访问控制structB{private:charj;floatf;public:inti;voidfunc();};voidB::func(){Btempb;tempb.j=‘a’;//OKi=0;j='0';f=0.0;};OOP的观点访问控制在库的设计者(实现者)和库的使用者之间划了一道明显的界线;j和f需要保护;i

4、和func()可以公开若试图访问一个私有成员,就会产生一个编译时错误。5.2.2友元友元:显示地声明哪些人“可以访问我的私有实现部分”。表明的是一种“信任”的关系。structCfather{friendstructCMother;//赋予CMother访问//Cfather的salary的权利private:longsalary;…;};structCMother{priavte:voidinspect(){Cfatherobj_TaDie(8000);cout<<“月收入:”<

5、元不是类的成员,只是一个声明。友元可以是外部全局函数、类或类的成员函数;友元是一个“特权”函数,破坏了封装。当类的实现发生变化后,友元也要跟着变动。例:友元//Friendallowsspecialaccess//DeclarationstructX;//不完全的类型说明structY{voidf(X*);};structX{//Definitionprivate:inti;public:voidinitialize();friendvoidg(X*,int);//全局函数友元friendstructZ;//类友元friend

6、voidY::f(X*);//成员函数友元friendvoidh();//全局函数友元};voidX::initialize(){i=0;//类X的初始化函数}voidg(X*x,inti){x->i=i;//访问X的私有成员i}voidY::f(X*x){x->i=47;//访问X的私有成员i}voidh(){Xx;x.i=100;//直接访问私有成员}intmain(){Xx;Zz;z.g(&x);}///:~structZ{private:intj;public:voidinitialize();voidg(X*x);}

7、;voidZ::initialize(){j=99;}voidZ::g(X*x){x->i+=j;}OOP的视点友员不是OOP的特征,破坏了封装性,这也是C++不是“纯”面向对象语言的原因之一。5.2.3从struct到class封装:数据成员+成员函数抽象数据类型访问控制:接口与实现的分离C的struct+封装+访问控制=类(Class)思考:CStash和CStack中,哪些成员应该设置为私有的?哪些成员应该设置为公有的?例1:带访问控制的类StashclassStash{private:intsize;//Sizeof

8、eachspaceintquantity;//Numberofstoragespacesintnext;//Nextemptyspaceunsignedchar*storage;voidinflate(intincrease);public:voidinitialize(in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。