摘要:希賽網(wǎng)軟考頻道小編為大家整理了2019上半年軟考程序員下午真題第六部分,供大家參考。
6、閱讀下列說明和C++代碼,將應填入(n)處的字句寫在答題紙的對應欄內(nèi)。
【說明】
現(xiàn)如今線下支付系統(tǒng)可以使用現(xiàn)金(Cash)、移動支付、銀行卡(Card)(信用卡 (CreditCard)和儲蓄卡(DebitCard))等多種支付方式(PaymentMethod)對物品(Item) 賬單(Bill)進行支付。圖6-1是某支付系統(tǒng)的簡略類圖。
問題內(nèi)容:
【 C++代碼 】
#include <iostream>
#include〈vector〉
#include〈string〉
using namespace std;
class PaymentMethod {
public: virtual void pay(int cents)=0;
};
// Cash、DebitCard和Item實現(xiàn)略,Item中g(shù)etPrice( )獲取當前物品對象的價格
class Card : public PaymentMethod {
private: string name, num;
public:
Card(string name, string num) {this->name = name; this->num = num; }
string toString( ) {
return this->getType( ) + " card[name = "+ name + ",num = " + num + "]"; )
}
void pay(int cents) {
cout<< "Payed " <<cents << " cents using " <<toString( ) <<end1;
this->executeTransaction(cents);
}
protected:
virtual string getType( )=0;
virtual void (1) =0:
};
class CreditCard (2) {
public:
CreditCard(stringname, stringnum) (3) {
}
protected:
string getType( ) { return " CREDIT " ; }
void executeTransaction(int cents) {
cout<<cents << " paid using " <<getType( )<< " Card." << end1;
}
};
class Bill {//包含所有購買商品的賬單
private:
vector< Item*> items; //包含物品的 vector
public:
void add(Item* item){ items.push_back(item); }
int getTotalPrice( ){ /*計算所有item的總價格,代碼略*/}
void pay(PaymentMethod* paymentMethod) {//用指定的支付方式完成支付
(4) (getTotalPrice( ));
}
};
class PaymentSystem{
public:
void pay( ) {
Bill* bill = new Bill( );
Item* item1= new Item"1234",10); Item* item2 = new Item("5678",40);
bill->add(item1); bill->add(item2); //將物品添加到賬單中
(5) (new CreditCard("LI SI", "98765432101")); //信用卡支付
}
};
Intmain( ) {
(6) = new PaymentSystem( );
payment->pay( );
return 0;
}
相關(guān)推薦:2019上半年程序員下午真題及答案
在線題庫:程序員歷年真題自測估分
軟考備考資料免費領取
去領取