};
intSample:
:
c=1;
voidmain()
{Samplea1,a2;
a1.show();
a2.show();
}
分析:
1)类和对象分析:
程序定义一个Sample类,主函数定义了两个Sample类的对象a1,a2,它们共同使用一个静态数据成员c。
类图和对象图如下:
2)结果预测:
先创建a1,调用构造函数Sample(),a1.a=a1.b=0,c=2;接着创建a2,再次调用构造函数Sample(),a2.a=a2.b=0,而c会在a1的基础上再自增,即c=3,所以在后面执行show()函数的时候,c的值始终是3,因为c自始至终都只有一份拷贝。
3)调试运行(演示)
结果:
3.2编写并调试程序
1)编写一个名为score的类,用于统计一个班的学生成绩。
其中使用一个静态成员数据totals来存储总分以及一个静态成员函数re_totals()返回该总分。
并编写相应的测试程序。
程序设计分析
A.对象分析:
研究的对象是学生的成绩,每个学生有各自的分数,他们的分数加起来就构成这群学生的总分。
设计具体的学生数据测试:
学生1
学生2
学生3
学生4
总分
89
91
95
85
360
B.类的分析和设计:
依题意知只有一个类score。
它使用一个静态成员数据totals来存储总分,和一个存储学生成绩的数据项s。
另外,还有一个静态成员函数re_totals()返回该总分和构造函数
C.操作设计:
类声明和实现:
Main()实现:
D.运行测试:
错误一:
错误一分析:
原来类的构造函数方面出错,因为定义对象数组
的时候是要调用无参数的构造函数的,而本程序代码类的设计中只有有参数的构造函数
,所以稍作修改,并把原来的有参数构造函数改成一般的成员函数,最终的修改完成代码如下:
再次运行并得到运行结果:
2)设计一个名为football的类,用于统计一个俱乐部的联赛成绩。
其中使用一个静态成员数据totals来存储总分以及一个静态成员函数re_totals()返回该总分。
并编写相应的测试程序。
程序设计分析
E.对象分析:
研究的对象是俱乐部联赛的成绩,每场比赛都有它的积分(赢3分,输-1分,平1分),他们的积分加起来就构成联赛的总分。
设计具体的学生数据测试:
联赛1
联赛2
联赛3
总分
3
-1
1
3
F.类的分析和设计:
依题意知只有一个类football。
它使用一个静态成员数据totals来存储总分,和一个存储学生成绩的数据项s。
另外,还有一个静态成员函数re_totals()返回该总分和构造函数
G.操作设计:
类声明和实现:
Main实现(测试部门):
运行结果如下:
*4课后练习
调试下面的程序,指出程序实现的功能及程序输出结果,调试下列例程,进一步理解对象成员、友元、静态成员等概念。
1)调试程序1
类分析:
结果预测:
2)调试程序2
类分析:
结果预测:
运行结果如下:
3)调试程序3
类分析:
预测结果: