- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.1 类的引入
§5.1类的引入 [复习:第一章中的“实体“,”类“,”对象”;其中:描述行为--函数;描述状态--数据] 1.循环计数器(时钟,角度计数,月份计数.......) 1)角度计数器(设当前角度为a), a的下一个角度为?? (a+1)%360 a的上一个角度为?? (a-1+360)%360 2)月份计数器(设当前月份为m),则 m的上一个月份为?? ((m-1)+1)%12+1 m的下一个月份为?? ((m-1)-1+12)%12+1 3)分析: 以这种来处理循环计数器,显然不很直观:希望能改为一种更直观方式;同时,开发大型程序除正确性,可靠性以外,以更好的可读性,可重用性为主要目标。显然,直接采用具体循环计数器形式导致可读性,可重用性出现更大差距,更好的考虑是:相关的操作尽是通过函数来实现。 4)解决: 求循环计数器的下一个值(加):increment(); 求循环计数器的上一个值(减):decrement(); 不同循环计数器的起点和终点是不同的, 设其起点为:?? min_val 设其终点为:?? max_val 设置其起点,终点值函数:?? set_mode() 循环计数器当前值:?? current() 求循环计数器当前值:?? get_value() 置循环计数器当前值:?? set_value() 5)归纳: 3个基本数据?? min_val(起始值),max_val(终止值),current(当前值) 对这些数据进行操作的函数 set_mode()?? //设置起始值,终止值 get_value()?? //取当前值 set_value()?? //置当前值 increment()?? //循环计数器值加1 decrement()?? //循环计数器值减1 问题 为了使这5个函数都能对min_val,max_val,current进行访问,如何调协这三个数据? 方法1:把min_val,max_val,current均设置为全局变量,但缺点是:文件外的其它模块能通过extern来访问它们,造成不安全性。 方法2:把它们设置为静态全局变量;此时,文件模块内的5个函数能访问,而其他文件模块无法通过extern来访问它们,有了安全必威体育官网网址性。 6)信息隐藏:将一个文件模块的内部数据和操作隐藏起来,其它程序只能通过该文件模块提供的分不开操作来访问它们的保护措施称为信息隐藏。 封装:将一组数据和这些数据上的相关操作组织在一起的措施称为封装。 2.循环计数器程序设计 1)传统直接程序设计:程序直接干预数据并直接对数据进行操作。缺点:可读性差,可重用性差。 2)用文件形式构成程序 ①用文件方式把循环计数器封装起来,其它程序通过#include把循环计数器文件包含进来 ②为保护循环计数器内部数据,对内部数据的操作均要通过规定的函数来访问; ③为了更有效的保护内部数据,将循环计数器分为2个文件:循环计数器对外分开的函数原型,它只提供应用界面,不涉及内部数据与数据定义(以.hpp为后缀);函数定义文件(以.cpp为后缀),它包括内部数据和函数定义(两个文件分别命名为cirnum1.cpp和curnum1.cpp); 3.讨论 用文件作为循环计数器封装的模块; 模块中包含有循环计数器内和对这些数据上的操作; 其它程序则通过函数提供的界面才能访问内部数据。 1)关于循环计数器的构造:即用文件作为循环计算机器封装的模块。 2)要通过模块才能访问内部数据--提高数据必威体育官网网址及安全;由于数据是模块内命名,即使其它模块有同名,也不会冲突(静态全局变量--仅在本模块内作用)。 3)不足:要在程序中同时使用三个循环计数器,分别用户处理角度(模为360),月份(模为12),时间(模为60),这时,采用文件模块形式就难实现了: ●文件模块中给出的是具体数据,而不是对数据的抽象描述; ●虽使用静态全局变量了模块内数据与其它模块的名字,但函数名冲突问题仍未解决。 4)希望:能将循环计数器作为一个类似类型的机制,将来使用循环计数器时能象使用普通数据类型一样随时声明所需的具体循环计数器,而所希望的“类型”将具有如下构成形式: 但这不同于传统的数据类型(传统的数据类型只有对数据的描述,而这种“新的类型”却还包含有对操作的描述!) 4.类作为构造程序的基本单位 1)类
文档评论(0)