軟件設計師案例分析當天每日一練試題地址:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4
往期軟件設計師每日一練試題匯總:m.xiexiliangjiufa.com/class/27/e4_1.html
軟件設計師案例分析每日一練試題(2023/3/27)在線測試:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4&day=2023/3/27
點擊查看:更多軟件設計師習題與指導
軟件設計師案例分析每日一練試題內容(2023/3/27)
閱讀下列說明和C++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某圖書管理系統(tǒng)中管理著兩種類型的文獻:圖書和論文?,F(xiàn)在要求統(tǒng)計所有館藏文獻的總頁碼(假設圖書館中有一本540頁的圖書和兩篇各25頁的論文,那么館藏文獻的總頁碼就是590頁)。采用Visitor(訪問者)模式實現(xiàn)該要求,得到如圖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; //頁數(shù)
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 { //打印總頁數(shù)
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) ; }
//其余代碼省略
信管網試題答案與解析:m.xiexiliangjiufa.com/st/38155962.html
信管網考友試題答案分享:
信管網試題答案與解析:
m.xiexiliangjiufa.com/st/38155962.html