阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某公司的组织结构图如图5—1所示,现采用组合(Composition)设计模式来构造该公司的组织结构,得到如图5—2所示的类图。 其中Company为抽象类

admin2011-04-06  42

问题  阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
  【说明】
  某公司的组织结构图如图5—1所示,现采用组合(Composition)设计模式来构造该公司的组织结构,得到如图5—2所示的类图。

    其中Company为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司/办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和FinanceDepartment分别表示人力资源部和财务部。
  【C++代码】
  #include
  #include <1ist>
  #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;//存储子公司、办事处或部f1
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* compl=new ConcreteCompany(“南京办事处”);
    Compl->Add(new HRDepartment(“南京办事处人力资源部”));
    Compl->Add(new FinanceDepartment(“南京办事处财务部”));
    (8);//其它代码省略
    }

选项

答案(1)this->name (2)virtual void Add(Company*c) (3)virtual void Delete(Company*c) (4)Company* (5)(*children) (6)(*children) (7)root->Add(comp) (8)root->Add(compl)

解析 FinanceDepartment类和HRDepartment类以及ConcreteCompany类均继承类Company,实现了Company类的Add方法和Delete方法。同时,concretecompany类与Company类是组合关系,多个ConcreteCompany类组合成Company类。
转载请注明原文地址:https://kaotiyun.com/show/6lDZ777K
0

最新回复(0)