网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

阅读下列说明、图和C++代码,回答问题1至问题3。

【说明】

已知四个类之间的关系如图2-2所示,分别对每个类的方法进行编号,例如Shape的perimeter()方法为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为2:perimeter(),依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。

【C++代码】

Triangle *tr=new Triangle();

Square *sq=new Square();

Shape *sh =tr;

关于上述C++代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。

①sh和tr分别引用同一个对象;

②sh和tr分别引用同一类型的不同的对象:

③sh和tr分别引用不同类型的不同对象;

④sh和tr分别引用同一个对象的不同备份:

⑤sh和tr所引用的内存空间是相同的。


参考答案

更多 “ 阅读下列说明、图和C++代码,回答问题1至问题3。【说明】已知四个类之间的关系如图2-2所示,分别对每个类的方法进行编号,例如Shape的perimeter()方法为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为2:perimeter(),依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。【C++代码】Triangle *tr=new Triangle();Square *sq=new Square();Shape *sh =tr;关于上述C++代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。①sh和tr分别引用同一个对象;②sh和tr分别引用同一类型的不同的对象:③sh和tr分别引用不同类型的不同对象;④sh和tr分别引用同一个对象的不同备份:⑤sh和tr所引用的内存空间是相同的。 ” 相关考题
考题 请阅读以下技术说明、类图及C++代码,根据要求将(1)~(5)空缺处的内容填写完整。[说明]已知对某载客车辆(Car)进行类建模,如图4-19所示。其中,类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。[C++代码]car.run();}

考题 请阅读以下技术说明、类图及C++代码,根据要求将(1)~(7)空缺处的内容填写完整。[说明]已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器面板如图1-16所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如图1-17所示。在图1-17中,类RomoteController的方法onPressButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight (int degree)方法用于调整电灯灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中setChannel(int channel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。[C++代码]本试题应用命令模式能够有效让类(5)和类(6)、类(7)之间的耦合性降至最小。

考题 阅读下列说明、图和Java代码,回答问题1至问题3。【说明】已知四个类之间的关系如图2-4所示,分别对每个类的方法进行编号,例如Shape的perimeter()为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为 2:perimeter(),依此类推,其中,每个类的perimeter方法签名相同。【Java代码】Triangle tr=new Triangle();Square sq=new Square();Shape sh=tr;关于上述Java代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。①sh和tr分别引用同一个对象;②sh和tr分别引用同一类型的不同的对象:③sh和tr分别引用不同类型的不同对象:④sh和tr分别引用同一个对象的不同拷贝;⑤sh和tr所引用的内存空间是相同的。

考题 试题七(共 15 分)阅读下列说明、图和Java 代码,回答问题1 至问题3,将解答写在答题纸的对应栏内。[说明]已知四个类之间的关系如图 7-1 所示,分别对每个类的方法进行编号,例如 Shape的 perimeter()为 1 号,表示为“1:perimeter()” ,Rectangle 类的 perimeter()为 2 号,表示为“2:perimeter()” ,依此类推,其中,每个类的 perimeter方法签名相同。[Java 代码]Triangle tr = new Triangle();Square sq = new Square();Shape sh = tr;[问题 1] 关于上述 Java代码中 sh 和 tr 的以下叙述中,哪两个是正确的(写出编号) 。① sh 和 tr 分别引用同一个对象;② sh 和 tr 分别引用同一类型的不同的对象;③ sh 和 tr 分别引用不同类型的不同对象;④ sh 和 tr 分别引用同一个对象的不同拷贝;⑤ sh 和 tr 所引用的内存空间是相同的。[问题 2] 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无” ) 。tr.height() (1)sh.perimeter() (2)sq.height() (3)sq.perimeter() (4)sh.height() (5)tr.perimeter() (6)[问题 3] 下列赋值语句中哪两个是合法的(写出合法赋值语句的编号) 。① sq = sh; ② sh = tr; ③ tr = sq; ④ sq = tr; ⑤ sh = sq;

考题 从下列2道试题(试题五至试题六)中任选 1道解答。如果解答的试题数超过1道,则题号小的1道解答有效。试题五(共15分)阅读以下说明、图和C++代码,填补C++代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。【说明】已知对某几何图形绘制工具进行类建模的结果如图5.1所示,其中Shape为抽象类(应至少包含一个纯虚拟( virtual)函数),表示通用图形,Box表示矩形,Ellipse表示椭圆,Circle表示圆(即特殊的椭圆),Line表示线条。下面的C++代码用于实现图5-1所给出的设计思路,将其空缺处填充完整并编译运行,输出结果为:EllipseCircleEllipseCE【C++代码】include stringinclude iostreamusing namespace std;class Shape{public:Shape(const string name){m_name= name;}~Shape(){}(1) void paint() = 0;stringgetName()const {retumm name;}Private:string m_name;};//Box和 Line类的定义与 Ellipse类似,其代码略classEllipse (2) {public:Ellipse(const string name) : Shape(name){ cout"Ellipse" endl; }Voidpaint() { coutgetName()endl;}};classCircle (3) {public:Circle(const string name) : Ellipse(name){ cout"Circl"endl; }};class Diagram {public:void drawAShap(Shape* shape){ shape-paint(); }void drawShapes() {shapes[0] = new Circle("C");shapes[l] = new Ellipse("E");for (int i=O;i2; ++1) {drawAShap(shapes[i]);}}void close (){ /*删除形状,代码略 */ }private:Shape* shapes[2];};int main( ){Diagram* diagram = (4)diagram-drawShapes();diagram-close ();(5) diagram;}

考题 试题五(共 15 分)阅读下列说明、图和C++代码,回答问题1 至问题3,将解答写在答题纸的对应栏内。[说明]已知四个类之间的关系如图 5-1 所示,分别对每个类的方法进行编号,例如 Shape的 perimeter()方法为 1 号,表示为“1:perimeter()” ,Rectangle 类的 perimeter()为2号,表示为“2:perimeter()” ,依此类推,其中,每个类的 perimeter方法都为虚函数且方法签名相同。[C++代码]Triangle *tr = new Triangle();Square *sq = new Square();Shape *sh = tr;[问题 1] 关于上述 C++代码中 sh 和 tr 的以下叙述中,哪两个是正确的(写出编号) 。① sh 和 tr 分别引用同一个对象;② sh 和 tr 分别引用同一类型的不同的对象;③ sh 和 tr 分别引用不同类型的不同对象;④ sh 和 tr 分别引用同一个对象的不同拷贝;⑤ sh 和 tr 所引用的内存空间是相同的。[问题 2] 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无” ) 。tr-height() (1)sh-perimeter() (2)sq-height() (3)sq-perimeter() (4)sh-height() (5)tr-perimeter() (6)[问题 3] 不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号) 。① sq = sh; ② sh = tr; ③ tr = sq; ④ sq = tr; ⑤ sh = sq;

考题 阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将C++程序中(1)~(5)空缺处的语句填写完整。[说明]某订单管理系统的部分UML类图如图5-15所示。图5-15中,Product表示产品,ProductList表示产品目录,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。请完善类Order的成员函数getOrderedAmount()和类SalesSystem的statistic()方法,各个类的属性及部分方法定义参见下面的C++代码。[C++代码]

考题 阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】下图是某商场购物系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中: (1) 类Manager重新实现了类Customer的方法 calMoney( );(2) 方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。(3)类Admin中的方法statMoney()中首先调用了该类的方法load( ),获取顾客列表,然后调用了类Customer中的方法calMoney( )。现拟采用面向对象的方法进行测试。 【问题1】(4分)图4-1 所示的类图中,类Manager和类Customer之间是什么关系?该关系对测试的影响是什么?【问题2】(6分)(1) 类Manager重新实现了类Customer的方法calMoney( ),这是面向对象的什么机制?是否需要重新测试该方法?(2) 类Manager中的方法getMoney ( )继承了其父类 Customer 的方法getMoney ( ),是否需要重新测试该方法?【问题3】(6分)(1)请结合题干中说明的描述,给出测试类Customer方法calMoney()时的测试序列;(2)请给出类图中各个类的测试顺序。【问题4】(4分)从面向对象多态特性考虑,测试方法statMoney( )时应注意什么?

考题 阅读下列说明,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】某软件的积分计算模块每天定时根据用户发布的文章数、文章阅读数来统计用户所获取的积分,用户分为普通用户和专家用户,两类用户具有不同的积分系数。图4-1是该模块的类图,图中属性和操作前的“+”、“#”和“-”分别表示公有成员、保护成员和私有成员。 其中:(1)类Expert重新实现了类User的方法calPoints__(4)__;(2)方法calPoints__(5)__根据每个用户每天的文章数(articleNum)、文章阅读数(readNum)来计算当天的积分;(3)类System中的方法statPoints__(6)__中首先调用了该类的方法load__(7)__,获取本系统用户列表,然后调用了类User中的方法calPoints__(8)__。现拟采用面向对象的方法进行测试。【问题1】(4分)(1)图4-1所示的类图中,类System和User之间是什么关系?(2)类Expert重新实现了类User的方法calPoints(),这是面向对象的什么机制?【问题2】(6分)类Expert中的方法calPoints()和getPoints()是否需要重新测试?【问题3】(10分)(1)请结合题干说明中的描述,给出测试类User方法calPoints()时的测试序列。(2)从面向对象多态特性考虑,测试类System中方法statPoints()时应注意什么?(3)请给出图4-1中各个类的测试顺序。