2022年期末考试答案及评分标准B.docx

上传人:Q****o 文档编号:26092523 上传时间:2022-07-15 格式:DOCX 页数:14 大小:133.70KB
返回 下载 相关 举报
2022年期末考试答案及评分标准B.docx_第1页
第1页 / 共14页
2022年期末考试答案及评分标准B.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《2022年期末考试答案及评分标准B.docx》由会员分享,可在线阅读,更多相关《2022年期末考试答案及评分标准B.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选学习资料 - - - - - - - - - 武汉高校 20222022 学年上学期面对对象的程序设计试卷(B)学号:姓名:院系:专业:得分:一、名词说明(每题 5 分,共计 25 分)(1)构造函数:是一种特别的成员函数,它供应了对成员变量进行初始化的方法,使得在声明对象时能自动的初始化对象(+2);构造函数的名称与类名相同(+1);构造函数不能指定任何返回值类型(+1);构造函数可以重载(+1);(2)多态: 多态性是面对对象编程的一个重要特点(+1),主要表现在函数调用时实现“ 一种接口,多种方法” (+2);多态又分为编译时多态和运行时多态两种(+2);(3)抽象类:抽象类是指这样

2、的类,它的一些行为 (成员函数) 不给出详细的定义 (+2),抽象类至少带有一个纯虚函数(+1),抽象类不能用来申明对象,只能作为基类使用,因此它又称为抽象基类(+2);(4)文档模板: 在文档 / 视图结构应用程序中,数据以文档类的对象的形式存在(+1);文档对象通过视图对象显示出来,而视图大对象又是框架窗口的一个子窗口,并且涉及文档操作的菜单和工具栏等资源也是建立在框架窗口上(+2);这样文档、视图、框架和所涉及的资源形成了一种固定的关系,这种固定关系就成为文档模板(+1);也就是说,文档模板描述了对应于每一种类型文档的视图和窗口的类型(+1);(5)序列化:对象的储存和复原的过程称为序列

3、化(+2);即对象具有的储存和加载其状态的才能( +1),对象能够在程序运行终止前将对象当前状态写入永久储备体中,以后在名师归纳总结 程序运行时通过数据的读取而复原对象的状态(+2);第 1 页,共 8 页二、简答题(每题10 分,共计 40 分)1.简述文档、视图和应用程序框架之间如何相互作用?- - - - - - -精选学习资料 - - - - - - - - - 答:文档、 视图和应用程序包含了一系列复杂的相互作用过程( 1),稳当和视图的交互式通过类的共有数据成员和成员函数实现的( 1);一个视图对象只与一个文档对象关联, 一个文档可以与多个视图关联,但一个文档对象只反映当前视图变化

4、( 2);视图中用 GetDocument 猎取文档对象进行操作 ( 1);在文档中利用 Invalidate , UpdateAllViews 或 SendMessageWM_PAINT,a,b 调用视图中的 OnDraw对文档数据进行绘图( 3);在程序任何地方可以调用 AfxGetApp 得到程序框架对象的指针, 利用框架对象指针可进一步利用 GetActiveView 猎取程序的视图对象,并对其进行操作(2);2. Windows 消息的发送有哪两种方式?主要区分是什么?Windows API 供应了哪几个函数用于消息的发送?答:发送消息的方式有:传送和寄送两种方式( 3),这两种方式

5、之间的主要区分是消息被接收对象收到后是否立刻被处理( 3);依据两种方式, Windows 供应了多个 API函数用于消息的发送,其中常用的函数是 SendMessage、PostMessage 和SendDlgItemMessage( 4);3. 何谓 DDX 和 DDV?编程时如何使用 MFC供应的 DDX 功能?答:对话框实现用户数据的输入和输出的一般方法是通过类向导将对话框控件与成员变量相关联,利用对话框数据交换(DDX)和对话框数据校验(DDV)机制实现数据的输入和输出( +3);MFC供应了 CDataExchange类实现了对话框类(成员变量)与控件名师归纳总结 之间的数据交换与

6、数据验证;对话框DDX 和 DDV 功能是由成员函数第 2 页,共 8 页DoDataExchange完成的; DDX 实现数据交换,DDV 实现数据验证(+3);用户不能直接调用函数DoDataExchange,而是调用CWnd:UpdateDataBOOL,当- - - - - - -精选学习资料 - - - - - - - - - 调用 UpdateDataFALSE时, MFC 通过调用对话框派生类的函数DoDataExchange 将数据从成员变量传递到关联的控件;调用 UpdateDataTRUE时,MFC 通过调用对话框派生类的函数 DoDataExchange 将数据从控件传递

7、到关联的成员变量( +4);4. MFC供应了哪几种设备环境类?它们各自有什么用途?答: MFC供应的设备环境类有 CDC、CPaintDC、CClientDC、CWindowDC 和CMetaFileDC,其中 CDC为基类,其它都是 MFC 的派生类( +5 );CDC 是其它设备环境类的基类,同时也可以作为一般的设备环境类使用;CDC 对全部 GDI 函数都进行了封装( +1 );CPaintDC 是 OnPaint 函数使用的设备环境类,代表一个窗口的绘图画面; OnPaint 是 WM_PAINT 消息处理函数,当窗口尺寸转变、或者当窗口复原了先前被遮盖的部分,应用程序窗口都会收到

8、WM_PAINT 消息( +1);CClientDC 类代表了客户区设备环境;当在客户区实时绘图时,需要利用 CClientDC 类定义一个客户区设备环境( +1 );CWindowDC 类代表整个程序窗口的设备环境;使用窗口设备环境可名师归纳总结 以在整个窗口区域绘图(+1 );CMetaFileDC是用于创建一个Windows图元文件的第 3 页,共 8 页设备环境; Windows图元文件包含了一系列GDI 绘图命令( +1 );三、请简述下面两个for循环的优缺点(5 分);for int i=0; iN; i+ if condition if condition for int i=

9、0; iN; i+ DoSomething; DoSomething; else DoOtherthing; else for int i=0; iInvalidateTRUE; pWndCtrl-UpdateWindow; 为了在“ 自画按钮” 上进行矩形绘制,工程已利用 ClassWizard 类向导为对话框添加 WM_DRAWITEM 消息处理函数,要用实现自画按钮的绘制;请依据要求,在 / TODO: add your message handler code here 后面添加你的绘制代码;(5 分)void CCTestDlgDlg:OnDrawItemint nIDCtl, LP

10、DRAWITEMSTRUCT lpDrawItemStruct / TODO: Add your message handler code here UpdateData; CDC dc; dc.AttachlpDrawItemStruct-hDC; if nIDCtl = IDC_BUTNDRAW CPen penPS_SOLID, m_width, m_color; CPen* pOldPen = dc.SelectObject&pen; dc.Rectanglem_x1, m_y1, m_x2, m_y2; dc.SelectObjectpOldPen; dc.Detach; CDial

11、og:OnDrawItemnIDCtl, lpDrawItemStruct; 六、编程题( 10 分):编写一个单文档画直线的绘图程序MyLine ,详细功能:在利用鼠标画线时, 按住鼠标左键并拖曳,可以随鼠标移动动态地画出当前直线,当释放左键后才真正画出一条所需要的直线;要求实现窗口重绘功能,绘图需采纳标准的十字光标;已在 CMyLineView.h 文件中定义了相关的变量,如下所示:名师归纳总结 - - - - - - -第 6 页,共 8 页精选学习资料 - - - - - - - - - public: bool m_bDragging; / 拖曳标记 HCURSOR m_hCross

12、; / 光标 CPoint m_ptEnd; / 直线终点 CPoint m_ptOrigin; / 直线起点 构造函数中的初始化工作定义如下:CMyLineView: CMyLineView m_hCross=AfxGetApp-LoadStandardCursorIDC_CROSS; m_bDragging=false; 鼠标消息 WM_LBUTTONDOWN、 WM_LBUTTONUP、WM_MOUSEMOVE 的响应函数已在视图类 CMyLineView 添加,请在 / TODO: add your messagfe handler code here 后面添加你的代码,将以下函数补充

13、完整;void CMyLineView:OnLButtonDownUINT nFlags, CPoint point / TODO: Add your message handler code here SetCapture; :SetCursorm_hCursor; m_ptOrigin = point; m_bDragging = TRUE; CView:OnLButtonDownnFlags, point; void CMyLineView:OnMouseMoveUINT nFlags, CPoint point / TODO: Add your message handler code

14、 here if m_bDragging CClientDC dcthis; dc.MoveTom_ptOrigin; dc.LineTopoint; m_ptOrigin = point; CView:OnMouseMovenFlags, point; 名师归纳总结 - - - - - - -第 7 页,共 8 页精选学习资料 - - - - - - - - - void CMyLineView:OnLButtonUpUINT nFlags, CPoint point / TODO: Add your message handler code here if m_bDragging m_bDragging = FALSE; ReleaseCapture; CView:OnLButtonDownnFlags, point; 出卷人 张勇 徐景中教研室负责人审核签字共 4 页 第 4 页名师归纳总结 - - - - - - -第 8 页,共 8 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁