题目详情

某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy)设计模式来实现该需求,所设计的类图如图5-1所示。

中级软件设计师,历年真题,2019年上半年(下午)《软件设计师》真题

图5-1类图

【Java代码】

import java.util.*;

interface BrakeBehavior{

public(1);

/*其余代码省略*/

};

class LongWheelBrake implements BrakeBehavior{

public void stop(  ){System.out.println("模拟长轮胎刹车痕迹!");}

/*其余代码省略*/

};

class ShortWheelBrake implements BrakeBehavior{

public void stop(  ){System.out.println("模拟短轮胎刹车痕迹!");}

/*其余代码省略*/

};

abstract class Car{

protected(2)wheel;

public void brake(  ){(3);}

/*其余代码省略*/

}:

class ShortWheelCar extends Car{

public ShortWheelCar(BrakeBehavior behavior){

(4);

}

/*其余代码省略*/

};

class StrategyTest{

public static void main(String[]args){

BrakeBehavior brake=new ShortWheelBrake(  );

ShortWheelCar car1=new ShortWheelCar(brake);

car1.(5);

}

}

正确答案及解析

正确答案
解析

(1)void stop()

(2)BrakeBehavior

(3)wheel.stop()

(4)wheel=behavior

(5)brake()

策略模式是定义一系列算法,把他们一个个封装起来,并且使它们之间可相互替换,从而让算法可以独立于使用它的用户而变化。

(1)第一空接口BrakeBehavior有内容缺失,结合其实现类LongWheelBrake代码如下:

class LongWheelBrake implements BrakeBehavior{

public void stop(){System.out.println("模拟长轮胎刹车痕迹!");}

/*其余代码省略*/

};

第一空需要补充stop()方法,即(1)void stop()

(2)(3)第二、三空是抽象类Car缺少属性wheel的类型和brake()方法的方法体。

abstract class Car{

protected(2)wheel;

public void brake(){(3);}

/*其余代码省略*/

}:

根据图示策略模式,Car与BrakeBehavior是整体与部分的关系,因此Car的属性有这一个部分,即(2)BrakeBehavior,这里在类Car中,命名了一个与之联系的部分BrakeBehavior类型wheel。对于BrakeBehavior类,所包含的方法是stop,因此第(3)空填写的方法应该是wheel.stop()。这样就将Car与BrakeBehavior联系起来了。

(4)第四空是实现子类ShortWheelCar缺失ShortWheelCar(BrakeBehavior behavior)此带参构造方法的方法体:

class ShortWheelCar extends Car{

public ShortWheelCar(BrakeBehavior behavior){

(4);

}

/*其余代码省略*/

};

构造方法是对类的构造,带参构造函数一般是对其属性进行参数赋值,第四空将实现子类与其父类联系起来,子类继承父类属性wheel,此处应该是对参数wheel赋值,即(4)wheel=behavior

(5)第五空是实际调用测试过程,缺失方法名:

class StrategyTest{

public static void main(String[]args){

BrakeBehavior brake=new ShortWheelBrake();

ShortWheelCar car1=new ShortWheelCar(brake);

car1.(5);

}

}

由代码可知,car1是ShortWheelCar(brake)实例化的对象,类ShortWheelCar本身没有方法,只有默认继承父类的一个方法brake(),因此此处调用的是brake(),即(5)brake()。

包含此试题的试卷

你可能感兴趣的试题

单选题

E-mail地址由分隔符“()”分为前后两部分,分别指明用户名及邮件

  • A.//
  • B.\\
  • C.@
查看答案
单选题

某 html 文档中有如下代码,则在浏览器中打开该文档时显示为( )。

<form>

Listl:

<input type="text" name="List1" />

<br / >

List2:

<input type="text" name="List 2 " />

< /form>

初级程序员,章节练习,初级程序员真题

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案
单选题

设有商品关系P(商品名,条形码,供应商号,价格,数量), “条形码”唯一标识关系P中的每一个元组,商品名不能为空,供应商号是关系P的外键。另有供应商关系S(供应商号,供应商名,地址,电话)。关系 P 中的商品名是唯一的。建立商品关系 P 的 SQL语句如下所示:

CREATE TABLE P( 商品名CHAR(30)( ),

条形码CHAR(30) ( ) ,

供应商号 CHAR(5) ,

价格 CHAR(20) ,

数量CHAR(20)

( )(供应商号) REFERENCES S(供应商号));

查询供应商及价格小于等于 2500 元且大于等于 1280 元的“电冰箱”的数量的SQL语句为:

SELECT商品名,供应商名,价格,数量

FROM P

WHERE商品名= ’电冰箱’ AND ( ) ;

将供应商号“12021”所供应的商品价格上涨3%的SQL语句为:

UPDATE P

( )

WHERE 供应商号= ’12021’;

查询供应商地址包含“西安”的供应商名及电话的SQL语句为:

SELECT供应商名,电话

FROM S

WHERE ( );

  • A.NULL
  • B.UNIQUE
  • C.NOT NULL
  • D.NOT NULL UNIQUE
查看答案
单选题

函数f()、g()的定义如下所示。已知调用f时传递给其形参x的值是1,若以传值方式调用g,则函数f的返回值为( );若以传引用方式调用g,则函数f的返回值为( )。

初级程序员,章节练习,初级程序员真题

  • A.3
  • B.4
  • C.6
  • D.7
查看答案
单选题

初级程序员,章节练习,初级程序员真题

初级程序员,章节练习,初级程序员真题

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案

相关题库更多 +