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

admin2014-10-11  38

问题 阅读下列函数说明和c++代码,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(Strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他方法来解决同样问题。以下是一个“剪刀石头布”游戏。猜拳时的“策略”有2种方法:第一种是“猜赢后继续出同样的招式”(WinningStrategy),第二种是“从上一次出的招式中,以概率分配方式求出下一个招式的几率”(ProbStrategy)。程序中定义了Hand类表示猜拳时的“手势”,类内部以O(石头)、1(剪刀)、2(布)来表示。Hand类的实例只会产生3个。以下是C++语言实现,能够正确编译通过。
    【C++代码】
    ClasS Hand{
    private:
    int handvalue;
    StatiC Hand*hand0;
    StatiC Hand*handl;
    Static Hand*hand2:
    (1):
    Hand(int handvalue){
    thiS一>handvalue=handvalue;
    }
    publiC:
    (2)Hand*getHand(int handvalue)(
    /*省略具体实现*/
    }
    };
    Hand*Hand::hand0=new Hand(0);
    Hand*Hand::handl=new Hand(1);
    Hand*Hand::hand2=new Hand(2);
    ClasS Strategy{
    public:
    (3)Hand*nextHand()=0;
    };
    class WinningStrategy  :public strategy{
    private:
    boo1 won;
    Hand*prevHand;
    public:
    WinningStrategy(){
    won=false;
    }
    Hand*nextHand(){
    if(!won){
    prevHand=Hand::getHand(rand()%3);
    }
    return prevHand;
    }
    };
    class  probStrategy:public  strategy{
    public:
    Hand*nextHand(){
    int handvalue=0;
    /*省略具体实现*/
    return Hand::getHand(handvalue);
    }
    };
    Class Player(
    private:
    string name;
    Strategy*Strategy;
    public:
    Player(string name,(4)strategy){
    thiS一>name=name;
    thiS一>strategy=strategy;
    }
    Hand*nextHand()(//向战略请示手势
    return (5);
    }
    };

选项

答案(1)private(2)static(3)virtual (4)Strategy*(5)strategy一>nextHand()

解析 Hand类要保证只产生3个实例,就要求不能随便生成Hand类,因此其构造方法需要是private型的,故空(1)应填pnvate。先看空(3),由后面的“=0”易判知nexthand()函数是纯虚函数,故空(3)应填virtual。再来看空(2),由对getHand()方法的调用方式}land::gettland(1rand()%3)及}land::getHand(handvalue),可知该方法是类Hand的静态方法,故空(2)应填static。
由语句this一>strategy=strategy;可知:this一>strategy与strategy同数据类型,this表示自身指针,而this一>strategy是Strategy*类型,故空(4)应填Strategy*,注意是指针。方法nextHand0是“向战略请示手势”,取得手势足通过其所采用的“策略”实现的,故空(5)应填strategy一>nextHand0。注意指针写法。
转载请注明原文地址:https://kaotiyun.com/show/64DZ777K
0

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