手机应用程序开发

实验二:C++导引

引言

在本实验中,我们将熟悉标准C++语言的使用和原理。主要内容包括:

实验准备:新建工程向导

1.打开Carbide.c++ v2.0,一个短暂的初始化过程之后,Carbide.C++窗口就会显示出来了。选择“File->New->Symbian OS C++ Project”,弹出“New Symbian OS C++ Project”对话框,选择S60下的Open C Console Application,如下图所示。

2.单击“Next”输入Project name,然后一直默认单击“Next”直到最后单击“Finish”,这样一个Open C控制台应用程序就建成了,这时会发现窗口左边的上面Project Explorer和下面Symbian Project Navigator都多了一个自定义工程名文件夹。这里取工程名为“Test”,如下图所示。

3.点击窗口左边上面Project Explorer中的Test前面的+号,再点击其中src子文件夹前面的+号,这时会发现一个Test.cpp文件,双击它,我们要实现控制台应用程序的某些功能都在这个文件里进行添加或修改,如下图所示。

第一部分:基本程序结构

1.条件语句:用if/if-else/if-else-if语句实现。

实验1.1:

写一程序,从键盘上输入1年份year(4位十进制数),判断其是否闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。

2.分支语句:用switch语句实现。

实验1.2:

    从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。

3.循环语句:用while/do-while/for循环实现。

实验1.3:

求n的阶乘n!(n!=1*2*……*n)。

4.函数的声明、定义和调用

实验1.4:

重新实现求n的阶乘n!(n!=1*2*……*n),使用递归函数的方法。

第二部分:类和对象

1.描述点的Point类,示例代码如下图所示。

实验2.1:

分别实现该类中定义的五个公有成员函数。

2.根据上面对Point类的定义,演示使用Point类的对象,示例代码如下图所示。

实验2.2:

为上面演示使用Point类的对象的每行代码添加注释,并写出最后运行结果。

第三部分:构造函数和析构函数

在Point类中注释掉部分公有成员函数,添加私有数据成员以及构造函数和析构函数的声明,如下图所示。

实验3.1:

    实现Point类的构造函数、拷贝构造函数和析构函数,使得主函数调用构造函数时能够显示“Constructor of the Point class is called!”、调用拷贝构造函数时能够显示“Copy Constructor of the Point class is called!”、调用析构函数时能够显示“Destructor of the Point class is called!”。(实验提示:因为有了私有数据成员name,所以需要在头文件中加入<string.h>和<stdlib.h>,因为实现构造函数和析构函数时需要用到这两个库中的某些函数。另外,实现析构函数更要提高警惕,稍不注意,在主函数调用它时会出现运行错误!)

    这里提供主函数和运行结果,请同学们根据如下图所示中的主函数调用实现如下图所示中的运行结果。

第四部分:继承性和多态性

1.继承性

在Point类下面定义Rectangle类,它公有继承Point类,如下图所示。

实验4.1:

    实现Rectangle类的构造函数、拷贝构造函数、析构函数和显示函数,使得主函数调用构造函数时能够显示“Constructor of the Rectangle class is called!”、调用拷贝构造函数时能够显示“Copy Constructor of the Rectangle class is called!”、调用析构函数时能够显示“Destructor of the Rectangle class is called!”。其中构造函数、拷贝构造函数和显示函数分别用两种方法实现。

    这里提供主函数和运行结果,请同学们根据如下图所示中的主函数调用实现如下图所示中的运行结果。

2.多态性

1)在Point类中添加虚函数area(),如下图所示。

2)在Rectangle类中添加虚函数area(),如下图所示。

2)在Rectangle类下面定义Circle类,它公有继承Point类,如下图所示。

实验4.2:

    分别实现三个类中的area()函数,尤其要实现Circle类的构造函数、拷贝构造函数、析构函数、显示函数以及area()函数,使得主函数调用构造函数时能够显示“Constructor of the Circle class is called!”、调用拷贝构造函数时能够显示“Copy Constructor of the Circle class is called!”、调用析构函数时能够显示“Destructor of the Circle class is called!”、调用area()函数时能够返回圆的面积值并显示。

    这里提供主函数和运行结果,请同学们根据如下图所示中的主函数调用实现如下图所示中的运行结果。

第五部分:异常

1.在主函数上面自定义一个函数,如下图所示。

2.在主函数里调用这个函数,如下图所示。

实验5.1:

先手工写出上述程序的运行结果,然后再上机运行程序,看看与自己所写的运行结果是否一致。

第六部分:模板(选做)

实验6.1:

在前几个实验的基础上,利用模版实现如下功能(当主函数代码如上边图所示时,实验结果如下边图所示):

(1)string类型:

(2)int类型:

(3)double类型:

第七部分:模块系统与大型程序组织

    把上述若干个小实验写的代码中诸如类的定义等放到头文件.h中,类的实现等放到代码文件.cpp中,通过在代码文件中嵌套相应的头文件来实现某些功能,比如计算圆的面积等。

程序提交

把最后的.h和.cpp文件压缩,连同实验报告统一发送到邮箱waterzhj@ustc.edu.cn,截止日期2009年5月12日。