软件设计师案例分析当天每日一练试题地址:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4
往期软件设计师每日一练试题汇总:www.cnitpm.com/class/27/e4_1.html
软件设计师案例分析每日一练试题(2024/9/4)在线测试:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2024/9/4
点击查看:更多软件设计师习题与指导
软件设计师案例分析每日一练试题内容(2024/9/4)
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本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.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2024/9/4
信管网考友试题答案分享:
信管网试题答案与解析:
www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2024/9/4