当前位置:文档之家› 面向对象的设计方法与C++编程

面向对象的设计方法与C++编程

北京邮电大学200X-200X学年第一学期《面向对象的设计方法与C++编程》期末考试试卷+扩展+复习题试题一:填空题(没空一分,共20分)请在括号内填入你认为正确的内容。

1.软件工程是指导(计算机软件)开发和维护的(工程学科)。

2.应用软件工程方法开发软件系统的根本目的是为了改善下述四项软件品质因素:提高所开发的软件系统的(效率);降低所开发的软件系统的(成本);改善所开发的软件系统的(质量);缩短所开发的软件系统的(开发周期)。

3.抽象的对象模型由(属性)和(方法)两个部分构成。

4.一个消息必须具备的两个要素是(接受消息的对象标识)和(接受消息的对象的方法标识)。

5.一个对象拥有另一个对象的(部分)或(全部)的属性和方法的关系则称为(继承)关系。

6.失去(创建具体对象实例的(制造对象))能力的类成为抽象类。

7.一个类的属性不能出现对象拷贝则被称为(类属性)。

8.面向对象技术的三大特征是(封装)、(继承)和(多态)。

9.共生包容关系中的被包容类对象与包容类对象是(同时连带)生成的。

10.同时出现在两个具有关联关系的对象内的相同属性被称为(连接属性)。

课程复习--补充题:1.软件的生存周期是一个软件产品从(定义)、(开发)、(使用)到(废弃)的时间的总合。

2.C++语言中的静态成员函数是(类方法)的具体实现。

3.连接属性是(关联/链接)关系的两个对象内的属性。

4.边界类与(actor(角色))对呈一一对应关系。

5.复合聚合关系中的(聚合)类对象极其依赖(被聚合)类对象,在实现上往往具有被同时(构造)的特征,因而具有极高的(耦合度)。

试题二:是非判断题(每题1分,共20分)请在题后的括号内填入√(你认为正确时)或×(你认为错误时)。

1.消息必须含有返回信息。

(错)2.一个类必然具有生成对象的能力。

(错)(抽象类不具备)3.在包容关系中的被包容类也具有封装性。

(对)4.关联关系只是一个动作的抽象。

(错)(表示两个类之间的联系,通过这种联系,一个类可以访问到另外一个类的属性和方法。

)5.一个类也可以接收消息。

(对)6.关联关系中的作用名标识了该关联关系的终点对象的恰当地位。

(对)7.状态图是反映整个系统动态运行时状态变化的图形工具。

(对)8.多重继承必然存在不确定问题。

(错)9.候选键是具有关联关系的两个类中属性的一部分。

(对)10.面向对象设计方法的一个重要目标便是实现“可重用软件的设计”。

(对)11.继承关系中的成员覆盖就是重载的一种形式。

(错)(多态的一种)12.一个派生类对象的方法不能访问其继承的基类对象的某些成员是由于这些基类对象的成员不存在于派生类对象中。

(错)(继承的方式不同 public protected private)13.一个派生类对象也可以向其继承的积累对象发消息。

(对)14.状态的自动变迁是由于一个内部的事件所引发的。

(错)(由于一个内部的事件所引发的是条件变迁)15.抽象类是不包含任何属性的类。

(错)16.调用类方法必须向该类的对象发消息。

(错)17.复合包容关系中的被包容对象必须在包容对象被激活的同时构造。

(对)18.继承关系中也存在有关联关系。

(对)19.使用C++语言智能编写面向对象的程序。

(错)(这不是扯淡吗)20.在关联关系的两端插入角色描述(Role Name)有助于对该关联关系的可读性。

(对)课程复习--补充题:1.只有属性的类也具有封装性。

(×)2.在面向对象技术系统分析中,问题陈述是获取对象的重要来源。

(√)3.在面向对象技术系统分析中不使用数据流图。

(×)4.一个对象的方法只能改变本对象的属性值。

(×)(对象行为 1.主动:直接改变自身属性值;2.被动:通过访问其他对象而改变自身属性值)5.一个对象内存在另一个对象的关系称为包容关系。

(×)(聚合关系)6.含有定性的属性的类就是抽象类。

(×)(抽象类是包含一种或多种抽象方法的类,它本身不需要构造实例。

定义抽象类后,其它类可以对它进行扩充并且通过实现其中的抽象方法,使抽象类具体化。

)7.当使用一个类方法时,消息是传向一个类的。

(√)8.一个对象所呈现的不同状态称为多态。

(×)(“一个接口,多种实现”,就是同一种事物表现出的多种形态叫做多态)9.静态链接是在面向对象技术语言编译时建立的对象关系。

(√)10.RUP 的开发周期由三个阶段所构成。

(×)(四个初始阶段—细化—构造—交付)11.RUP 中的系统行为是对其全部的外来激励进行作用和反作用。

(√)12.RUP 中的系统行为可以从对象模型中获得。

(×)(用例模型)试题三:单项选择题(每题1分,共16分)下列各题均提供了四个可供选择的答案,但其中只有一个是正确的,请在各题中的括号内填入你认为正确的答案代号A、B、C或D;不填或填错不得分。

1.面向对象技术是(A )。

A.指导构建软件的系列法则B.一种探索可被认同的新理论C.由Grady Booch提出的一种动态的新语言D.基于抽象与模块化原理的新技术2.(B)项目对建模的要求度最小。

A.立交桥B.沙发C.列车D.光盘3.一个模型(C)。

A.对于十分理解其工作内容的团队成员可以不使用B.必须是有结构的和动作的体系C.是一个实例的简化D.一个构建精确计划的原由4.在UML中,使用(A)词汇表示可以将具有共同用途的模型元素组成多个组。

A.PackageB.ClassC.EncapsulationD.Generalization5.最好的模型将与(B)联系在一起。

A.Java-Script代码B.实体C.C++D.与面向对象开发者联系在一起的命题6.使用UML建模时(C)的处理不是其最基本的特征。

A.迭代与增量B.用例驱动C.弹性设计D.以架构为核心7.建模的根本目的是(D)。

A.有助于一个系统的可视化B.获得一个准备构建系统的模板C.见证设计成果D.上述三条的总和8.一个对象的状态(C)。

A.是一个被称为“状态”的属性或属性集B.始终不发生常规的变化C.被描述成对象的属性和关系D.仅是一个对象可能存在的条件9.以下RUP中的(D)是聚焦在结构问题上。

A.用例B.处理C.实现D.逻辑10.短语(B)可以最好的体现泛化关系。

A.is a part ofB.is a kind ofC.is a replica ofD.is an inheritance of11.封装(B)。

A.允许对处于封装态的内容进行直接处理B.涉及到信息的隐藏C.会导致维护成本的提高D.在实现时所引起的改变会影响到客户端12.一个可见的对象行为可以被模型化为该对象的(C)。

A.属性B.责任C.操作D.方法13.多态可以被描绘成(A)。

A.在一个接口上隐藏多个不同实现的形态B.继承C.信息放置形态D.泛化14.将模块与计划合并为一体化的目的是(A)。

A.在可管理的单元上降低一些复杂程度B.建构的模块便于交流C.创建巨大且难于理解的系统D.系统的局部不能独立开发15.Rational推出的RUP方法中所倡导的迭代式开发模式的最根本目的是为了(C)。

A.降低开发成本B.降低开发风险C.减少开发时间D.节省开发的人力资源16.一个类(D)。

A.是一个对象的封装B.表现为一个对象的分层结构C.是一个对象的实例D.是一个对象的抽象定义试题四:分析题(共30分)1.指出下列对象之间的关系。

(每题1分,共10分)1)软件工程与面向对象的分析与设计方法(包容关系)2)矛与盾(关联关系)3)数字交换系统与通信系统(继承关系)4)人与心脏(包容关系)5)Pentium芯片与Pentium IV芯片(继承关系)6)计算机与磁带机(关联?关系)7)多媒体与三维图形设备(继承关系)8)石油与汽油(关联?关系)9)道路与车辆(关联关系)10)煤炭与碳元素(继承关系)-- 抽象类->继承课程复习--补充题:·地球与太阳( 关联 关系)·家庭影院与音箱( 包容 关系) ·信息与印刷品( 继承 关系) ·钥匙与锁 ( 关联 关系) ·灯泡与灯丝( 包容 关系)·计算机与打印机( 关联 关系) ·公司与雇员( 包容 关系) ·建筑体与墙( 包容 关系)2. 试在下图给定的括号内写出已知关联联系得作用名(Role Name )。

(每图1分,共4分)3. 阅读下述C++程序后试在其右侧对应的对象图中填充描述其关系的对象模型符号。

(3分)4.阅读下述C++程序后试在其右侧对应的对象图中填充描述其关系的对象模型符号,并试在题目的下方写出执行本程序的输出结果。

(4分)执行本程序的输出结果是:1 B继承A & B包含A???A* p1 = new B(1); →p1 → p = NULL A* p2 = new B(2, (A*)p1); →p2 → p → p15.某大学推行完全学分制的学籍管理方式,其规定如下:学生在入学后的第一个学年内必须完成学绩分超过23分才能被允许(收到确认通知)进入第二学年的学习,否则将被按照肄业处理,进入第二学年后可以被允许(收到确认通知)进入下一个学年学习的最低学绩分数分别为27、30和30分(含对应分数者)。

完成第四个学年的学绩分30分(含30)以上者可以准许毕业(获得毕业证书)。

若在后三学年中的某一年中没有完成该学年规定的学绩分者,则可以在对应学年中重新学习一年,若仍不能达到规定学绩分者的学籍将被自动按肄业处理。

试据上述脚本绘制出对应的状态图。

(9分)解:本题的状态图如下:一盏信号灯在三种不同的外电压作用下可呈现出不同的颜色:外电压为0V 时信号灯不亮;外电压为50V 时信号灯呈红色;外电压为100V 时信号灯呈黄色;外电压为150V 时信号灯呈绿色。

在不改变外电压的条件下,该信号灯在呈现黄色或绿色20 秒后会分别自动变回红色或黄色。

若此时改变其外电压则信号灯的颜色仍会呈现为对应电压的颜色(如100V 外电压的作用下变为黄色;在150V 外电压的作用下会变为绿色)。

试绘出该信号灯颜色变化的状态图。

解:(设时间条件为Time)本题的状态图如下:试题五:改写、补做与纠错题(共14分)1.下述C++程序结构为类B继承类A的派生结构,以不改变对象关系结构为前提,试在源程序的右侧写出只将基类变为类模板结构的全部C++代码,并修改程序内与其相关的其设下述C++程序运行于字长为32位的硬件环境中,请在以下C++程序的右侧写出将该源程序变为类模板的对应程序代码。

2.下述C++程序存在若干处错误,以不改变程序结构为前提,请在出错的行首做一标记(如*),并将改动最少的正确语句写在所在行下方或出错部位的右侧。

相关主题