軟件設計師案例分析當天每日一練試題地址:www.yifanwine.com/exam/ExamDayAL.aspx?t1=4
往期軟件設計師每日一練試題匯總:www.yifanwine.com/class/27/e4_1.html
軟件設計師案例分析每日一練試題(2023/3/27)在線測試:www.yifanwine.com/exam/ExamDayAL.aspx?t1=4&day=2023/3/27
點擊查看:更多軟件設計師習題與指導
軟件設計師案例分析每日一練試題內容(2023/3/27)
閱讀下列說明和C++代碼,將應填入    (n)    處的字句寫在答題紙的對應欄內。
【說明】
某圖書管理系統(tǒng)中管理著兩種類型的文獻:圖書和論文?,F在要求統(tǒng)計所有館藏文獻的總頁碼(假設圖書館中有一本540頁的圖書和兩篇各25頁的論文,那么館藏文獻的總頁碼就是590頁)。采用Visitor(訪問者)模式實現該要求,得到如圖5-1所示的類圖。
	
 
	圖5-1 Visitor模式類圖
【C++代碼】
class LibraryVisitor;
class LibraryItemInterface{
public:
(1)      ;
};
class Article : public LibraryItemInterface {
private:
string  m_title;        //論文名
string  m_author;    //論文作者
int m_start_page;
int m_end_page;
public:
Article(string p_author, string p_title, int p_start_page,int p_end_page );
int getNumberOfPages();
void accept(Library Visitor* visitor);
};
class Book : public LibraryItemInterface {
private:
string  m_title;       //書名
string  m_author;   //作者
int m_pages;         //頁數
public:
Book(string p_author, string p_title, int p_pages);
int getNumberOfPages();
void accept(LibraryVisitor* visitor);
};
class LibraryVisitor {
public:
(2)     ;
(3)     ;
virtual void printSum() = 0;
};
class LibrarySumPrintVisitor : public LibraryVisitor  {          //打印總頁數
private:
int sum;
public:
LibrarySumPrintVisitor();
void visit(Book* p_book);
void visit(Article* p_article);
void printSum();
};
// visitor.cpp
int Article: :getNumberOfPages(){
retum m_end_page - m_start_page;
}
void Article::accept(LibraryVisitor* visitor) {       (4)      ;}
Book: :Book(string p_author, string p_title, int p_pages ) {
m_title = p_title;
m_author = p_author;
m_pages = p_pages;
}
int Book::getNumberOfPages(){    return m_pages;  }
void Book::accept(LibraryVisitor* visitor){       (5)     ;  }
//其余代碼省略
信管網試題答案與解析:www.yifanwine.com/st/38155962.html
信管網考友試題答案分享:
信管網試題答案與解析:
www.yifanwine.com/st/38155962.html