您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 整理版-北邮面向对象C++试题(房鸣赵晶玲)
二、是非判断题C++/RUP/UML1.使用C++语言只能编写面向对象的程序(×)2.UML中的活动图可以描绘面向对象分析和设计的全过程的工作流程(√)3.使用C++语言不能同时编写出面向过程和面向对象的程序(√)4.RUP的开发周期由三个阶段所构成。(×)(四个阶段初始阶段-细化-构造-交付)5.RUP中的系统行为是对其全部的外来激励进行作用和反作用。(√)6.RUP中的系统行为可以从对象模型中获得。(×)类1.一个类必然具有生成对象的能力(×)2.一个类也可以接收消息(√)3.调用类方法必须向该类的对象发消息(×)4.抽象类是不包含任何属性的类(×)5.当使用一个类方法时,消息是传向一个类的。(√)6.只有属性的类也具有封装性。(×)7.含有定性的属性的类就是抽象类。(×)关系1.在包容关系中的被包容类也具有封装性(√)2.关联关系只是一个动作的抽象(×)3.关联关系中的作用名标识了该关联关系的终点对象的恰当地位(√)4.候选键是具有关联关系的两个类中属性的一部分(×)5.多重继承必然存在不确定问题(×)6.继承关系中的成员覆盖就是重载的一种形式(×)(重构就是√)7.继承关系中也存在有关联关系(√)8.复合包容关系中的被包容对象必须在包容对象被击活的同时构造(√)9.在关联关系的两端插入角色描述有助于对该关联关系的可读性(√)10.确定候选键是对关联关系模型优化的一种手段(√)对象1.面向对象设计方法的一个重要目的便是实现“可重用软件的设计”(√)2.一个派生类对象的方法不能访问其继承的基类对象的某些成员是由于这些基类对象的成员不存在于派生类对象中(×)3.一个派生类对象也可以向其继承的基类对象发消息(√)4.面向对象的分析方法中存在自顶向下,逐步求精的过程(×)5.一个对象的方法只能改变本对象的属性值。(×)6.一个对象内存在另一个对象的关系称为包容关系。(×)(原因:有可能是派生)7.一个对象所呈现的不同状态称为多态。(×)8.静态链接是在面向对象技术语言编译时建立的对象关系。(√)9.在面向对象技术系统分析中,问题陈述是获取对象的重要来源。(√)10.在面向对象技术系统分析中不使用数据流图。(×)11.一个以限制性继承的派生类对象访问其继承的基类对象时必须通过消息手段。(√)状态1.状态图是反映了整个系统动态运行时状态变化的图像工具(√)2.状态的自动变迁是由于一个内部的事件所引发的(×)消息必须含有返回信息(×)三、选择题对象1.面向对象技术是(A)A.指导构建软件的系列法则B.一种探索可被认同的新理论C.由GradyBooch提出的一种动态的语言D.基于抽象与模块化原理的新技术2.一个对象的状态(A)A.是一个被称为状态的属性或属性集B.始终不发生常规的变化C.被描述成对象的属性和关系(个体)D.仅是一个对象可能存在的条件3.一个可见的对象行为可以被模型化为该对象的(C)A.属性B.责任C.操作D.方法4.在一个对象系统内两个彼此间具有(C)结构的对象间的访问必须依赖消息手段A.同类对象B.完备的聚合关系C.拓展继承关系D.友元5.一个可见的对象行为可以被模型化为该对象的(D)A.属性B.责任C.操作D.方法模型/建模6.(B)项目对建模的要求度最小A.立交桥B.沙发C.列车D.光盘7.一个模型(C)A.对于十分理解其工作内容的团队成员可以不使用B.必须是有结构的和动作的体系C.是一个实例化的简化D.一个构建精确计划的原由8.最好的模型将与(B)联系在一起A.Java-Script代码B.实体C.C++D.与面向对象开发者联系在一起的命题9.建模的根本目的是(D)A.有助于与一个系统的可视化B.获得一个准备构建系统的模版C.见证设计成果D.上述三条的总和UML/RUP10.使用UML建模时(C)的处理不是其最基本特征A.迭代与增量B.用例驱动C.弹性设计D.以架构为核心11.在UML中,使用(A)词汇表示可以将具有共同用途的模型元素组成多个组A.PackageB.ClassC.EncapsulationD.Generalization12.以下RUP中的(D)视聚焦在结构问题上A.用例B.处理C.实现D.逻辑13.Rational推出的RUP方法中所倡导的迭代式开发模式的最根本目的是为了(B)A.降低开发成本B.降低开发风险C.减少开发时间D.节省开发的人力资源14.短语(B)可以最好的体现泛化关系A.ispartofB.isakindofC.isareplicaofD.isaninheritanceof类15.一个类(D)A.是一个对象的封装B.表现为一个对象的分层结构C.是一个对象的实例D.是一个对象的抽象定义封装16.封装(B)A.允许对处于封装状态的内容进行直接处理B.涉及到信息的隐藏C.会导致维护成本的提高D.在实现时所引用的改变会影响到客户端17.封装(A)A.是指一种对象组成结构的存在形式B.是指只有属性的对象组成结构的存在形式C.是指只有方法的对象组成结构的存在形式D.是指外界可以任意访问对象内成员的对象组成结构的存在形式多态18.多态可以被描绘成(A)A.在一个接口上隐藏多个不同实现的形态B.继承C.信息放置形态D.泛化19.多态是(A)A.系统面对一个服务请求而设置了多个不同接口的形态B.继承C.信息放置形态D.泛化关系20.利用继承派生关系中的重构手段获得的新系统是为了(C)A.仅仅延长该系统的寿命B.修正原系统内的缺陷C.允许多个不同版本的功能可以同时使用D.掩盖原系统内的缺陷21.将模块与计划合并为一体化的目的是(A)A.在可管理的单元上降低一些复杂程度B.构建的模块便于交流C.创建巨大且难于理解的系统D.系统的局部不能独立开发四、分析题1.指出下列对象之间的关系软件工程与面向对象的分析与设计方法(包容关系)矛与盾(关联关系)数字交换系统与通信系统(继承关系)人与心脏(包容关系)Pentium芯片与PentiumIV芯片(继承关系)计算机与磁带机(关联?关系)多媒体与三维图形设备(继承关系)石油与汽油(关联?关系)道路与车辆(关联关系)煤炭与碳元素(继承关系)--抽象类-继承地球与太阳(关联关系)家庭影院与音箱(包容关系)信息与印刷品(继承关系)钥匙与锁(关联关系)灯泡与灯丝(包容关系)计算机与打印机(关联关系)公司与雇员(包容关系)建筑体与墙(继承关系)2.试在下图给定的括号内写出已知关联联系得作用名(RoleName)。张三(通知人)(被通知人)李四人(老板)(雇员)3.阅读下述C++程序后试在其右侧对应的对象图中填充描述其关系的对象模型符号4.阅读下述C++程序后试在其右侧对应的对象图中填充描述其关系的对象模型符号,并试在题目的下方写出执行本程序的输出结果。还是执行本程序的输出结果是:1B继承A&B包含A???A*p1=newB(1);p1p=NULLA*p2=newB(2,(A*)p1);p2pp15.某大学推行完全学分制的学籍管理方式,其规定如下:学生在入学后的第一个学年内必须完成学绩分超过23分才能被允许(收到确认通知)进入第二学年的学习,否则将被按照肄业处理,进入第二学年后可以被允许(收到确认通知)进入下一个学年学习的最低学绩分数分别为27、30和30分(含对应分数者)。完成第四个学年的学绩分30分(含30)以上者可以准许毕业(获得毕业证书)。若在后三学年中的某一年中没有完成该学年规定的学绩分者,则可以在对应学年中重新学习一年,若仍不能达到规定学绩分者的学籍将被自动按肄业处理。试据上述脚本绘制出对应的状态图。(9分)解:本题的状态图如下:课程复习--补充题:一盏信号灯在三种不同的外电压作用下可呈现出不同的颜色:外电压为0V时信号灯不亮;外电压为50V时信号灯呈红色;外电压为100V时信号灯呈黄色;外电压为150V时信号灯呈绿色。在不改变外电压的条件下,该信号灯在呈现黄色或绿色20秒后会分别自动变回红色或黄色。若此时改变其外电压则信号灯的颜色仍会呈现为对应电压的颜色(如100V外电压的作用下变为黄色;在150V外电压的作用下会变为绿色)。试绘出该信号灯颜色变化的状态图。解:(设时间条件为Time)本题的状态图如下:6.已知下图所示的某系统中关于A和B的顺序图,图中给出了关于classA的3个不同状态,试绘制与该类对应的状态图,设没有明示的状态迁移视为可通达。第1学年第2学年第3学年第4学年毕业肄业≥23分≥27分≥30分≥30分第一次27第二次27<23第一次30第二次30第一次30第二次30解:经过对图中已知的消息逻辑,绘制出如下图所示的状态图:五、改写、补做与纠错题1.下述C++程序结构为类B继承类A的派生结构,以不改变对象关系结构为前提,试在源程序的右侧写出只将基类变为类模板结构的全部C++代码,并修改程序内与其相关的其他部分的配套语句。: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++程序运行于字长为32位的硬件环境中,请在以下C++程序的右侧写出将该源程序变为类模板的对应程序代码。修改前:修改后:10-11考试题#includeiostreamusingnamespacestd;templateclassT1classA{T1flag;public:A(){}A(T1n){flag=n;}voidoperator=(T1x){flag=x;}};templateclassT2classB{T2*p;staticintsum;public:B(intn){p=newT2[n];sum=n;}T2&operator[](intm){returnp[m];}staticintcount(){returnsum;}};intBAint::sum=0;voidmain(){intx;cinx;BAintb(x);for(inti=0;ix;i++){b[x]=i;}coutBAint::count()endl;}2.下述C++程序存在若干处错误,以不改变程序结构为前提,请在出错的行首做一标记(如*),并将改动最少的正确语句写在所在行下方或出错部位的右侧。更正错误如下:No.1$:No.2$:在标志处下一行添加如下语句No.3$:No.4$:No.5$:课程复习--补充题:1.+程序存在若干处错误,以不改变程序结构为前提,请在出错的行首做一标记(如*),并将改动最少的正确语句写在所在行或出错部位的右侧。例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){}virtualinto
本文标题:整理版-北邮面向对象C++试题(房鸣赵晶玲)
链接地址:https://www.777doc.com/doc-2336239 .html