C++程序设计(第二版_吴乃陵_况迎辉)课后答案(7)

2019-01-07 13:07

第四章 类与对象习题 5

4.2.15 简叙 Windows 下应用程序的运行方式。

答:Windows 系统支持多个应用程序同时执行,在界面形式上,它支持多个窗口同时活动。 它的运行机制是“消息传递和事件驱动(message based and event driven)”。

Windows 系统使用事件驱动的编程模式。所谓事件的含义非常广泛。输入设备的动作, 如敲打键盘、按鼠标等会产生一系列的事件(注意不是一个事件)。操作系统所作的一举一 动也被当作某种类型的事件,应用程序也会产生各种事件。事件用来标识发生的某件事情。

Windows 系统对于应用程序环境中发生的每一个事件都会以对应的某种消息的形式标 识,并放入相应的 Windows 建立的消息队列中,然后由对应的应用程序或窗口函数去处理。 窗口函数处理是分层的,前面处理不了的送到后面,最后处理不了剩下的全由缺省的窗口函 数处理。

4.2.16 类的成员函数在什么情况下应该定义为私有的?这样做的目的是什么? 答:除接口函数和创建本类对象的构造函数和撤消该对象的析构函数外。其余成员函数应该 定义为私有的,这是开发类时故意对外隐蔽起来的操作,而这些往往是最复杂最关键的部分。 类中故意的隐藏也为以后的升级扩展留下了余地,只要接口不变,内部再变,也不必修改原 来的程序,就象 MFC(微软基础类)升级后,由 MFC 底层类所编的程序完全不必修改,自 动升级。

二.编程与综合练习题

4.3 构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员 包括设置日期时间和输出时间,其中年、月请用枚举类型,并完成测试。(包括用成员 函数和用普通函数)

解:本题要求仅是定义类的练习,并非实用的提供日期时间的程序。实用的日期时间程序 见附录二的日期时间函数。 #include #include using namespace std;

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 #include using namespace std; class Rectangle {

double left, top ; double right, bottom; public:


C++程序设计(第二版_吴乃陵_况迎辉)课后答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2014年7月《设计原理》试卷Doc1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: