您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 北京邮电大学房鸣老师C++期末试卷
校园共享在校园,爱分享总复习一.基本要求与非基本要求·掌握软件工程的基本分析方法;·掌握UML有关对象系统的分析与构建方法;·理解RUP的分析工作流程与迭代式开发的方法;·掌握C++语言的面向对象技术基本程序设计方法;·了解C++语言的非面向对象技术的程序设计手段;二.考题的结构⒈填空题(20%)考查学生对面向对象技术的最基本概念的掌握情况。绝大多数是有关软件工程和面向对象技术的概念定义。⒉是非判断题(20%)考查学生对面向对象技术的各种概念的理解深度和广度。⒊单项选择题(16%)考查学生对UML和RUP的基本概念和术语的综合掌握水平。⒋分析题(30%)考查学生对面向对象技术的建模方法有关的知识点的综合掌握水平。该题目由六个小题组成。⒌C++语言综合题(14%)给定一段C++程序,分析题目所体现和反应的面向对象技术的基本概念,考查学生逻辑分析的能力。三.练习校园共享在校园,爱分享⒈填空题①软件的生存周期是一个软件产品从(定义)、(开发)、(使用)到(废弃)的时间的总合。②失去定义对象能力的类被称为(抽象类)。③C++语言中的静态成员函数是(类方法)的具体实现。④连接属性是(关联/连接)关系的两个对象内的属性。⑤边界类与(Actor(角色))对呈一一对应关系。⒉是非判断题①只有属性的类也具有封装性。(×)②在面向对象技术系统分析中,问题陈述是获取对象的重要来源。(√)③在面向对象技术系统分析中不使用数据流图。(×)④一个对象的方法只能改变本对象的属性值。(×)⑤一个对象内存在另一个对象的关系称为包容关系。(×)(原因:有可能是派生)⑥含有定性的属性的类就是抽象类。(×)⑦当使用一个类方法时,消息是传向一个类的。(√)⑧一个对象所呈现的不同状态称为多态。(×)⑨静态链接是在面向对象技术语言编译时建立的对象关系。(√)⑩RUP的开发周期由三个阶段所构成。(×)(六个阶段)⑩+1RUP中的系统行为是对其全部的外来激励进行作用和反作用。(√)校园共享在校园,爱分享⑩+2RUP中的系统行为可以从对象模型中获得。(√)⒊单项选择题1.面向对象技术是(A)。(A)指导构建软件的系列法则(B)一种探索可被认同的新理论(C)由GradyBooch提出的一种动态的新语言(D)基于抽象与模块化原理的新技术2.一个模型(C)。(A)对于十分理解其工作内容的团队成员可以不使用。(B)必须是有结构的和动作的体系。(C)是一个实例的简化。(D)一个建构精确计划的原由。3.建模的根本目的是(D)。(A)有助与于一个系统的可视化。(B)获得一个准备构建系统的模板。(C)见证设计成果。(D)上述三条的总合。4.最好的模型将与(B)联系在一起。(A)Java-Script代码(B)实体(C)C++(D)与面向对象开发者联系在一起的命题5.(B)项目对建模的要求度最小。(A)立交桥(B)沙发(C)列车(D)光盘校园共享在校园,爱分享6.以下RUP中的(D)视聚焦在结构问题上。(A)用例(B)处理(C)实现(D)逻辑7.使用UML建模时(C)的处理不是其最基本特征。(A)迭代与增量(B)用例驱动(C)弹性设计(D)以架构为核心8.一个对象的状态(C)。(A)是一个被称为“状态”的属性或属性集(B)始终不发生常规的变化(C)被描述成对象的属性和关系(D)仅是一个对象可能存在的条件⒋分析题①指出下列对象之间的关系·地球与太阳(关联关系)·家庭影院与音箱(包容关系)·信息与印刷品(继承关系)·钥匙与锁(关联关系)·灯泡与灯丝(包容关系)·计算机与打印机(关联关系)·公司与雇员(包容关系)·建筑体与墙(包容/继承关系)校园共享在校园,爱分享②试在下图给定的括号内写出已知关联关系的作用名(RoleName):张三(通知人)(被通知人)李四人(老板)(雇员)③根据给定的C++程序绘制对象模型图阅读下述C++程序后试在其右侧对应的对象图中填充描述其关系的对象模型符号。#includeiostreamusingnamespacestd;classA{protected:inti;public:A(intx):i(x){}intvirtualoperator!()=0;};classB:publicA{A*p;public:B(intx,A*y=NULL):A(x){p=y;}猫老鼠捉(捕猎者)(猎物)张三李四通知()()人付酬()()AB校园共享在校园,爱分享intoperator!(){if(p)return!*p;elsereturn1;}};voidmain(){A*p1=newB(1);A*p2=newB(2,(A*)p1);cout!*p2endl;}④已知下图所示的某系统中关于A和B的顺序图,图中给出了关于classA的3个不同状态,试绘制与该类对应的状态图,设没有明示的状态迁移视为可通达。校园共享在校园,爱分享:A:B1:2:4:5:6:7:10:11:12:13:状态1状态1状态2状态38:9:3:状态2解:经过对图中已知的消息逻辑,绘制出如下图所示的状态图:状态1Entry/4状态2Entry/8状态3Entry/116101⒌C++语言综合题①设下述C++程序运行于字长为32位的硬件环境中,请在以下C++校园共享在校园,爱分享程序的右侧写出将该源程序变为类模板的对应程序代码。#includeiostreamusingnamespacestd;classA{intorder;public:A(){coutThecurrentorderis;cinorder;}A(intx):order(x){}intoperator!(){returnorder;}};classB{A*p;public:B(intx){p=newA[x];}intGetOrder(intx){return!p[x];}~B(){if(p)delete[]p;}};voidmain(){Bb(2);for(inti=0;i2;i++){coutb.GetOrder(i)endl;}cin.get();}改写后成为:#includeiostreamusingnamespacestd;templateclassT1classA{T1order;public:校园共享在校园,爱分享A(){coutThecurrentorder’svalueis;cinorder;}A(T1x):order(x){}T1operator!(){returnorder;}};templateclassT2,classT3classB{T2*p;public:B(intx){p=newT2[x];}T3GetOrder(intx){return!p[x];}~B(){if(p)delete[]p;}};voidmain(){BAint,intb(3);for(inti=0;i3;i++){coutb.GetOrder(i)endl;}cin.get();}另一种改法(不保证老师喜欢):templatetypenameTclassA{Torder;public:A(){coutThecurrentorder’svalueis;cinorder;}A(Tx):order(x){}Toperator!(){returnorder;}};templatetypenameTclassB{AT*p;校园共享在校园,爱分享public:B(intx){p=newAT[x];}TGetOrder(intx){return!p[x];}~B(){if(p)delete[]p;}};voidmain(){Bintb(2);for(inti=0;i2;i++){coutb.GetOrder(i)endl;}cin.get();}②下述C++程序存在若干处错误,以不改变程序结构为前提,请在出错的行首做一标记(如*),并将改动最少的正确语句写在所在行或出错部位的右侧。例1:#includeiostreamusingnamespacestd;classA{protected:inti;public:A(intx):i(x){}virtualintoperator!()=0;virtualintoperator~()=0;//补充定义虚基函数,使基类能访问派生类同名成员函数};classB:publicA{inti;public:B(intx,inty):i(x),A(y){}校园共享在校园,爱分享intoperator!(){returni;}intoperator~(){returnA::i;}};voidmain(){A*p=newB(2,1);coutI=!(*p)endl;//Display:I=1coutI=~(*p)endl;//Display:I=1//由newB(2,1)知,只有B的基类A中i为1,因此需要调用成员函数operator~()访问基类A中i。原代码中调用operator!(),返回值是2,不合要求。此处~(*p)等价于(*p).operator~()}例2:#includeiostreamusingnamespacestd;classA{protected:inti;public:A(intx):i(x){}virtualintoperator~()=0;virtualintoperator!()=0;//补充定义虚基函数,使基类能访问派生类同名成员函数};classB:publicA{protected:inti;A*p;public:B(intx,inty):i(x),A(y){p=(A*)this;}intoperator!(){returni;}校园共享在校园,爱分享intoperator~(){returnp-i;}//标准规则限制必须用基类强制intoperator~(){returnA::i;}//强制使用基类中i};voidmain(){A*p=newB(1,2);cout!*pendl;//Display:1cout~*p;//Displaay:2}③下述C++程序尚未完成,试根据已知条件补上类A中欠缺的成员函数。例1:#includeiostreamusingnamespacestd;classA{inti;A*p;public:A():p(NULL){}A(intx):i(x){p=newA[x];}A&operator[](intx){returnp[x];}//补充定义operator[](int)voidoperator=(intx){i=x;}//补充定义operator=(int)intoperator!(){returni;}//补充定义operator!()~A(){if(p)delete[]p;}//因有动态内存分配,补充定义析构函数,释放内存};voidmain(){Aa(5);for(inti=0;i5;i++){a[i]=i;//此处等价于a.operator[](i).operator=(i);校园共享在校园,爱分享cout!a[i];//displayresult:01234//此处等价于a.operator[](i).operator!();}cin.get();}例2:#includeiostreamusingnamespacest
本文标题:北京邮电大学房鸣老师C++期末试卷
链接地址:https://www.777doc.com/doc-2635504 .html