阅读以下说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 在股票交易中,股票代理根据客户发出的股票操作指示进行股票的买卖操作。其类图如图5-1所示,相应的C++代码附后。 【C++代码】 #include #i

admin2016-11-11  29

问题 阅读以下说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
在股票交易中,股票代理根据客户发出的股票操作指示进行股票的买卖操作。其类图如图5-1所示,相应的C++代码附后。

【C++代码】
    #include
    #include
    #include
    using namespace std;
    class Stock{
    private:
       string name;    int quantity;
    public:
       Stock(string name,int quantity){this一>name=name;this->quantity
    =quantity;)
    void buy(){cout<<"[买进]股票名称:"<<name<<",数量:"<<quantity<<endl;}
    void sell()  {cout<<"[卖出]股票名称:"<<name<<",数量:"<<quantity<<endl;}
   };
    Class Order{
    public:
       virtual void execute()=0;
    };
    class BuyStock:____________(1){
    private:
        Stock*stock;
    public:
  BuyStock(Stock*stock){__________(2)=stock;}
    void execute(){    stock->buy();    }
    };
    //类SellStock的实现与BuyStock类似,此处略
    class Broker{
    private:
        vectororderList;
    public:
       void takeOrder(_________(3)order){    orderList.push back(order);}
       void placeOrders()  {   
          for(int i=0;i<orderList.size();i++){__________(4)->execute();}
          orderList.clear();
       }
    };
    class StockCommand{
    public:
       void main()  {
           Stock* aStock=new Stock("股票A",10);
           Stock* bStock = new Stock("股票B",20);
           Order* buyStockOrder=new BuyStock(aStock);
           Order* sellStockOrder=new SellStock(bStock);
           Broker* broker=new Broker();
           broker->takeOrder(buyStockOrder);
           broker->takeOrder(sellStockOrder);
          broker->___________(5)  ();
        }
    };
    int main(){
        StockCommand*stockCommand=new StockCommand();
        stockCommand->main();
        delete stockCommand;
    }

选项

答案(1)public Order (2)this->stock 或(*this).stock (3)Order* (4)orderList[i] 或 *(orderList+i) (5)placeOrders

解析 本题考查C++语言程序设计能力,涉及类、对象、函数的定义和相关操作。要求考生根据给出的案例和代码说明,认真阅读理清程序思路,然后完成题目。
    先考查题目说明,在股票交易中,股票代理根据客户发出的股票操作指示进行股票的买卖操作。根据说明进行设计,题目说明中给出了类图。涉及到股票(Stock)、股票代理(Broker)、股票操作指示(StockCommand)、买卖股票(Order接口、BuyStock与SellStock类)等类以及相关操作。
    Stock类定义了两个函数buy()和sell(),分别实现买和卖的操作。在构造函数中接收参数name和quantity,分别表示买卖股票的名称和数量,对当前所创建对象中的name和quantity赋值,用this表示区别当前对象,所以构造函数为:
    Stock(string name,int quantity){
        thiS->name=name;
        this->quantity=quantity;
    }
    Order虚类声明纯虚函数execute():virtual void execute()=0;表示执行股票交易(即买和卖)的函数原型。
    BuyStock继承Order,构造函数接收参数stock,实现函数execute(),进行股票买入,stock->buy()。SellStock和BuyStock类似,继承Order,构造函数接收参数stock,实现函数execute(),进行股票卖出,stock->sell()。
    Broker类实现接受客户的买卖指示tackOrder(),接收BuyStock或者SellStock的实例,BuyStock和SellStock均是Order的子类,所以BuyStock和SellStock的实例也是Order,因此tackOrder()所接收的参数用Order类型。接收到买卖指示之后,存入Vector类型的orderList中,即orderList.push_back(order)。placeorders()函数是实现将所有买卖股票的指示进行实际买入和卖出操作,即采用for循环,对每个orderList中的Stock实例,调用在BuyStock和SellStock中实现的execute()加以执行。
    for(int i=0;i<orderList.size();i++){orderList->execute();}
    StockCommand主要是根据操作指示进行股票交易,实现为一个函数main(),其中创建欲进行交易的股票对象aStock和bStock,创建买aStock卖bStock股票的对象buyStockOrder和sellStockOrder对象:
    Order* buyStockOrder=new BuyStock(aStock);
    Order* sellStockOrder=new SellStock(bStock);
    再创建股票代理Broker类的对象broker,并接收买卖股票的指示:
    broker->takeOrder(buyStockOrder);
    broker->takeOrder(sellStockOrder);
    最后将所有买卖指示用placeOrders()下执行命令:
    broker>placeOrders  ();
主控逻辑代码在main()函数中实现。在main()函数中,先初始化StockCommand类的对象指针stockCommand,代码为:
    StockCommand*StockCommand=new StockCommand();
    即生成一个股票指示,并调用其main()函数启动股票交易,即调用stockCommand的main()函数,实现股票的买卖指示的创建和执行。主控main()函数中,使用完数组对象之后,需要用delete操作释放对象,对stockCommand对象进行删除,即
    delete StockCommand;
    因此,空(1)需要表示继承Order类的“public Order”;空(2)需要表示当前对象的stock属性,填入“this->stock”或“(*this).stock”;空(3)需要填入BuyStock和SellStock均能表示的父类“Order*”;空(4)需要orderList中每个对象指针调用execute(),即填入“orderList”或“*(orderList+i)”;空(5)处为调用“placeOrders()”来下达执行命令。
转载请注明原文地址:https://kaotiyun.com/show/u9jZ777K
0

最新回复(0)