阅读以下说明和JaVa代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他

admin2014-10-11  41

问题 阅读以下说明和JaVa代码,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他方法来解决同样问题。以下是一个“剪刀石头布”游戏。猜拳时的“策略’’有2种方法:第一种是“猜赢后继续出同样的招式,(winningStrategy),第二种是“从上一次出的招式种,以概率分配方式求出下一个招式的几率”(ProbStrategy)。程序中定义了Hand类表示猜拳时的“手势”,类内部以0(石头)、1(剪刀)、2(布)来表示。Hand类的实例只会产生3个。以下是JaVa语言实现,省略了不相关属性及方法,方法实现体亦有所省略,能够正确编译通过。
    【Java代码】
    //Hand.Java文件
    publiC class Hand{
    public static final int HANDVALUE—GUU=0;/石头
    public static final int HANDVALUE—CHO=1;//剪刀
    public static final int HANDVALUE—PAA=2;//布
    public static final Hand[]hand={
    new Hand(HANDVALUE_GUU),
    new Hand(HANDVALUE—CHO),
    new Hand(HANDVALUE—PAA),
    };
    private int handvalue;
    (1) Hand(int handvalue){
    this.handvalue=handvalue;
    }
    publ ic(2)Hand getHand(int handvalue){//从值取得对象实例
    return hand fhandvalue]:
    }
    }
    //Strategy.java文件
    public interface Strategy(
    public  (3)Hand nextHand();
    }
    //ProbStrategy。Java文件
    import java.util.Random;
    public class ProbStrategy implements Strategy(
    public Hand nextHand(){
    int handvalue=0;
    /*省略具体实现*/
    return Hand.getHand(handvalue);
    }
    }
    //WinningStrategy.Java文件
    import java/util.Random;
    public class WinningStrategy implements Strategy{
    /*省略了不相关属性*/
    public Hand nextHand(){
    if(!won){
    prevHand=Hand.getHand(random.nextInt(3));
    }
    return prevHand;
    }
    }
    //Player.Java艾件
    public class Player{
    private string name;
    private strategy strategy;
    public Player(string name,(4)strategy){
    this.name=name;
    this.strategy=strategy;
    }
    public Hand nextHand(){//向战略请示手势
    return(5);
    }
    }

选项

答案(1)private (2)static (3)abstract (4)Strategy (5)strategy.nextHand()

解析 Hand类要保证只产生3个实例,就要求不能随便生成Hand类,因此其构造方法需要是private型的,故空(1)填private。先看空(3),nexthand0是接口Strategy~方法,应为抽象方法,故空(3)应填abstract。再来看空(2),由对getHand()方法的调用方式Han@D@getHand(handValue)及Han@D@getHand(random.nextInt(3)),可知该方法是类Hand的静态方法,故空(2)应填static。由语句this.strategy=strategy;可知:this.strategy与strategy是同数据类型,this表示自身引用,而this.strategy是Strategy类型,故空(4)应填Strategy。方法nextHand0是“向战略请示手势”,取得手势是通过其所采用的“策略”实现的,故空(5)应填strategy.nextHand0。
转载请注明原文地址:https://kaotiyun.com/show/B4DZ777K
0

相关试题推荐
最新回复(0)