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

admin2014-11-13  47

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

    其eOCompany为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司/办事处或者部门
的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类
HRDepartment和FinanceDepartment分别表示人力资源部和财务部。
    【C++代码】
    #include
    #include<1ist>
    #include
    US ing namespace std;
    class Company(//抽象类
    protected:
    String name;
public:
  Company(string name)((1)=name;)
    (2)  ;//增加子公司、办事处或部门
    (3)  ;//删除子公司、办事处或部门
    };
    clasS ConcreteCompany:public Company(
    private:
    list<  (4)  >children;//存储子公司、办事处或部门
    publ ic:
    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:publ ic Company{
    public:
    FinanceDepartment(string name):Company(name)()//其他代码省略
    };
    VOid main(){
    ConcreteCompany*root=new ComcreteCompany(“北京总公司”);
    root一>Add(new HRDepartment(“总公司人力资源部”));
    root一>Add(new F inanceDepartment(“总公司财务部”));
    ConcreteCompany*comp=new ConcreteCompany(“上海分公司”);
    comp一>Add(new HRDepartment(“上海分公司人力资源部”));
    comp一>Add(new FinanceDepartment(“上海分公司财务部”));
    (7) ;
    ConcreteCompany*compl:new ConcreteCompany(“南京办事处”);
    comp 1一>Add(new HRDepartment(“南京办事处人力资源部”));
    comp 1一>Add(new FinanceDepartment(“南京办事处财务部”));
    (8);//其他代码省略

选项

答案(1)this一>name (2)virtual void Add(Company*c)=0 (3)virtual void Delete(Company*C)=0 (4)Company* (5)Children (6)Children (7)root一>Add(comp) (8)comp一>Add(compl)

解析 初始化函数中,将形参的值付给成员name,形参的变量名和成员变量的名称相同,需要使this指针指示被赋值的name是类的成员。增加(删除)子公司、办事处或部门用到的函数是Add和Delete。由于C0mpany是抽象类,并作为ConcreteCompany、HRDepartment、FinanceDepartment的基类,ConcreteCompany、HRD印anment继承了其父类的Add和Delete操作,因此在基类中要将Add和DeIete设置为纯虚函数。类ConcreteCompany表示具体的分公司或者办事处,其中的成员children用来存储子公司、办事处或部门,其数据类型应为Company*,当进行增加操作时,要把增加的对象存储在children的最后;当进行删除操作,则需要从children中将对应的对象移除。
(7)处的操作是把上海分公司这个对象加入到北京公司总部中。
(8)处的操作是将南京办事处这个对象加入到上海分公司中。
转载请注明原文地址:https://jikaoti.com/ti/zRi7FFFM
0

相关试题推荐
最新回复(0)