从下列的2道试题(试题五和试题六)中任选 1道解答。如果解答的试题数超过1道,则题号小的 1 道解答有效。 试题五(共15分) 阅读下列说明和C++代码,将入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某公司的组织结构图如图5-1所示,现采用组合(Composition)设计模式来构造该公司的组织结构,得到如图5-2所示的类图。 其中 Company 为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司/办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和 FinanceDepartment分别表示人力资源部和财务部。 【C++代码】 include include include using namespace std; class Company { // 抽象类 protected: string name; public: Company(string name) { (1) = name; } (2) ; // 增加子公司、办事处或部门 (3) ; // 删除子公司、办事处或部门 }; class ConcreteCompany : public Company { private: list< (4) > children; // 存储子公司、办事处或部门 public: ConcreteCompany(string name) : Company(name) { } void Add(Company* c) { (5) .push_back(c); } void Delete(Company* c) { (6) .remove(c); } }; class HRDepartment : public Company { public: HRDepartment(string name) : Company(name) {} // 其它代码省略 }; class FinanceDepartment : public Company { public: FinanceDepartment(string name) : Company(name) {} // 其它代码省略 }; void main() { ConcreteCompany *root = new ComcreteCompany('北京总公司'); root->Add(new HRDepartment('总公司人力资源部')); root->Add(new FinanceDepartment('总公司财务部')); ConcreteCompany *comp = new ConcreteCompany('上海分公司'); comp->Add(new HRDepartment('上海分公司人力资源部')); comp->Add(new FinanceDepartment('上海分公司财务部')); (7) ; ConcreteCompany *comp1 = new ConcreteCompany('南京办事处'); comp1->Add(new HRDepartment('南京办事处人力资源部')); comp1->Add(new FinanceDepartment('南京办事处财务部')); (8) ; //其它代码省略 }