第六讲:类、对象的简单应用及类封装、隐蔽性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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++的编程人员习惯不把声明写在开头,而是用到时才进行声明(如同本程序那样),这样程序比较清晰,阅读方便。

相关文档
最新文档