第四章 类与对象习题 5
4.2.15 简叙 Windows 下应用程序的运行方式。
答:Windows 系统支持多个应用程序同时执行,在界面形式上,它支持多个窗口同时活动。 它的运行机制是“消息传递和事件驱动(message based and event driven)”。
Windows 系统使用事件驱动的编程模式。所谓事件的含义非常广泛。输入设备的动作, 如敲打键盘、按鼠标等会产生一系列的事件(注意不是一个事件)。操作系统所作的一举一 动也被当作某种类型的事件,应用程序也会产生各种事件。事件用来标识发生的某件事情。
Windows 系统对于应用程序环境中发生的每一个事件都会以对应的某种消息的形式标 识,并放入相应的 Windows 建立的消息队列中,然后由对应的应用程序或窗口函数去处理。 窗口函数处理是分层的,前面处理不了的送到后面,最后处理不了剩下的全由缺省的窗口函 数处理。
4.2.16 类的成员函数在什么情况下应该定义为私有的?这样做的目的是什么? 答:除接口函数和创建本类对象的构造函数和撤消该对象的析构函数外。其余成员函数应该 定义为私有的,这是开发类时故意对外隐蔽起来的操作,而这些往往是最复杂最关键的部分。 类中故意的隐藏也为以后的升级扩展留下了余地,只要接口不变,内部再变,也不必修改原 来的程序,就象 MFC(微软基础类)升级后,由 MFC 底层类所编的程序完全不必修改,自 动升级。
二.编程与综合练习题
4.3 构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员 包括设置日期时间和输出时间,其中年、月请用枚举类型,并完成测试。(包括用成员 函数和用普通函数)
解:本题要求仅是定义类的练习,并非实用的提供日期时间的程序。实用的日期时间程序 见附录二的日期时间函数。 #include
enum YR{Y2000,Y2001,Y2002,Y2003,Y2004,Y2005};//
enum MT{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}; class Timedate{ private:
YR year; MT
month; int date; int hh; int mm; int ss; public:
Timedate(){year=Y2000;month=Jan;date=1;hh=0;mm=0;ss=0;} Timedate(YR a,MT b,int c){
year=a; month=b;
date=c;
hh=12;mm=30;ss=0;
第四章 类与对象习题
}
void getdate(YR &,MT &,int &);//使用引用一次取得3个数值 void gettime(int &,int &,int &); void
putdate(YR ,MT ,int ); void
puttime(int ,int ,int ); void list();
};
void Timedate::getdate(YR &y,MT &m,int &d){
y=year; m=month;
d=date; }
void Timedate::gettime(int &a,int &b,int &c){
a=hh; b=mm; c=ss; }
void Timedate::putdate(YR a,MT b,int c){
year=a; month=b; date=c; }
void Timedate::puttime(int a,int b,int c){
hh=a; mm=b; ss=c; }
void Timedate::list(){//成员函数,直接访问私有的数据成员
cout<<\switch(year){ case
Y2000:cout<<\break; case
Y2001:cout<<\break; case
Y2002:cout<<\break; case
Y2003:cout<<\break; case
Y2004:cout<<\break; case
6
Y2005:cout<<\break; }
switch(month){ case
Jan:cout<<'/'<<\break; case
Feb:cout<<'/'<<\break; case
Mar:cout<<'/'<<\break; case
Apr:cout<<'/'<<\break; case
May:cout<<'/'<<\break; case
Jun:cout<<'/'<<\break;
第四章 类与对象习题
case
Jul:cout<<'/'<<\break; case
Aug:cout<<'/'<<\break; case
Sep:cout<<'/'<<\break; case
Oct:cout<<'/'<<\break; case
Nov:cout<<'/'<<\break; case
Dec:cout<<'/'<<\break; } cout<<'/'< cout<<\cout< 7 } int main(int argc, char* argv[]){ Timedate A(Y2004,Mar,3),B; A.list(); B.list(); B.putdate(Y2005,Oct,18); B.puttime(17,30,00); B.list(); return 0; } 4.4 设计并测试一个矩形类(Rectangle),属性为矩形的左下与右上角的坐标,矩形水平 放置。操作为计算矩形周长与面积。测试包括用成员函数和普通函数。 解:这里的矩形的 4 边分别与 x 轴 y 轴平行,为最简单的情况。注意参数有缺省值的函数 的声明和定义格式。 #include double left, top ; double right, bottom; public: 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++程序设计(第二版_吴乃陵_况迎辉)课后答案(7)在线全文阅读。
相关推荐: