第六讲:类、对象的简单应用及类封装、隐蔽性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六讲:类、对象的简单应用及类封装、隐蔽性本讲基本要求
掌握:类成员函数的简单应用,用类来设计程序。
理解:公用接口、私有接口、类中的方法、“消息”的概念。
重点、难点:类成员函数的简单应用,用类来设计程序。
一、类和对象的简单应用举例(前两个为数据成员;后两个为成员函数)
例1 最简单的例子。
#includc
using namespace std;
class Time //定义Time类
{ public://数据成员为公用的
int hour;
int minute;
int sec; };
int main()
{ Time t1; //定义t1为Time类对象
cin>>t1.hour;//输入设定的时间
cin>t1.minute;
cin>>t1.sec;
cout< return O; } 运行情况如下: 12 32 43/ (输入时、分、秒) 12:32:43 (输出时间) 注意: (1)在引用数据成员hour,minute,sec时不要忘记在前面指定对象名。 (2)不要错写为类名,如写成Time.hour,Time.minute,Time.sec是不对的。因为类是一种抽象的数据类型,并不是一个实体,也不占存储空间,而对象是实际存在的实体,是占存储空间的,其数据成员是有值的,可以被引用的。 (3)如果删去主函数的3个输入语句,即不向这些数据成员赋值,则它们的值是不可预知的。可以上机试一下。 例2 引用多个对象的成员。 若有多个对象,需要分别引用多个对象中的数据成员,可以写出如下程序: (1)程序(a) #include using namespace std; class Time { public: int hour; int minute; int sec; }; int main() { Time tl; //定义对象tl cin>>t1.hour;//向n的数据成员输入数据 cin>>t1.minute; cin>>t1.sec; cout< Time t2;//定义对象t2 cin>>t2.hour;//向t2的数据成员输入数据 cin>>t2.minute; cin>>t2.sec; cout< 据成员的值 return O;} 运行情况如下: 10 32 43/ 10:32:43 22 32 43/ 22:32:43 程序是清晰易懂的,但是在主函数中对不同的对象一一写出有关操作,会使程序冗长,如果有10个对象,那么主函数会有多长呢?这样会降低程序的清晰性,使阅读困难。为了解决这个问题,可以使用函数来进行输入和输出。见程序(b)。 (2)程序(b) #include using namespace std; class Time { public: int hour; int mimlte; int sec; }; int main() { void set_time(Time &);//函数声明 void show_time(Time &);//函数声明 Time t1;//定义tl为Time类对象 Set_time(t1);//调用set_time函数,向t1对象中的数据成员输入数据 show_time(t1);//调用show3ime函数,输出d对象中的数据 Time t2;//定义t2为Time类对象 set_time(t2);//调用set_tillle函数,向[2对象中的数据成员 输入数据 show_time([2];//调用show_time函数,输出t2对象中的数据 return O; } void set_nme(Time &t) //定义函数settlme,形参t是Time类型的引用变量 { cin>>t.hour;//输入设定的时间 cin>>t.minue; cin>>t.sec; } void show time(Time &t)//定义函数show_time,形参t是引用变量 { cout< } 运行情况与程序(a)相同。 本程序在类外定义函数set_time和show_time。函数set_time用来给数据成员赋值,函数show_time用来显示数据成员的值。函数的形参t是Time类对象的引用变量,当主函数调用函数set_time(t1)时,由于set_time函数中的形参t是引用变量,因此它与实参tl共占同一段内存单元(所以说t是u的别名),执行set_time函数相当于执行以下语句,向tl中的hour,minute和sec输入数值。 cit>>t1.hour: cin>>t1.minute: cin>>t1.sec: 调用show_time(t1)时,输出对象t1中的数据。用t2作实参时情况也一样。注意:在程序中对t1和t2的定义是分别用两个语句完成的,并未写在一行上。 C语言要求所有的声明必须集中写在本模块的开头,因此熟悉C语言的程序编写人员往往养成一个习惯,把所有声明集中写在本模块的开头。但是在C++编程中并不提倡这样做。在C++中,声明是作为语句处理的,可以出现在程序中的任何位置。因此,C++的编程人员习惯不把声明写在开头,而是用到时才进行声明(如同本程序那样),这样程序比较清晰,阅读方便。