软件水平考试

阅读下列说明和C++代码,在(n)处填入正确的字句。[说明]某公司的组织结构图如

来源:网考网软件水平 所有评论

【分析解答题】阅读下列说明和C++代码,在 (n) 处填入正确的字句。
[说明]
某公司的组织结构图如图10.4所示,现采用组合Composition)设计模式来构造该公司的组织结构,得到如图10.5所示的类图。
其中Company为抽象类,定义了在组织结构图上添加Add)和删除Delete)分公司/办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和FinanceDepartment分别表示人力资源部和财务部。


[C++代码]
#include <iostream>
#include <list>
#include <string>
using namespace std;
classCompany//抽象类
protected:
string name;
public:
Company(string name) (1) =name;
(2) ;//增加子公司、办事处或部门
(3) ;//删除子公司、办事处或部门

classConcreteCompany: publicCompany
private:
list< (4) >children;//存储子公司、办事处或部门
public:
ConcreteCompany(string name):Company (name)
voidAddCompany*c) (5) .push back (c);
voidDeleteCompany*c) (6) .remove (c);
;
class HRDepartment: publicCompany
public:
HRDepartment(string name):Company(name)//其他代码省略

class FinanceDepartment: publicCompany
public:
FinanceDepartment(string name):Company(name)//其他代码省略

void main()
ConcreteCompany *root=newComcreteCompany("北京总公司");
root->Add (new HRDepartrnent("总公司人力资源音"));
root->Add(new FinanceDepartment("总公司财务部"));
ConcreteCompany *comp=newConcreteCompany("上海分公司");
comp->Add (new HRDepartment("上海分公司人力资源部"));
comp->Add(new FinanceDepartment("上海分公司财务部"));
(7) ;
ConcreteCompany *compl=newConcreteCompany("南京办事处");
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(comp1) 答案解析:[解析] 初始化函数中,将形参的值赋给成员name,形参的变量名和成员变量的名称相同,需要使用this指针指示被赋值的name是类的成员。 增加、删除子公司、办事处或部门用到的函数是Add和Delete。山于Company是抽象类,并作为ConcreteCompany、HRDepartment、FinanceDepartment的基类,ConcreteCompany、HRDepartment继承了其父类的Add和Delete操作,因此在基类中要将Add和Delete设置为纯虚函数。 类ConcreteCompany表示具体的分公司或者办事处,其中的成员children用来存储子公司、办事处或部门,其数据类型应为Company*,当进行增加操作时,要把增加的对象存储在children的最后;当进行删除操作,则需要从children中将对应的对象移除。 空(7)处的操作是把上海分公司这个对象加入到北京公司总部中。 空(8)处的操作是将南京办事处这个对象加入到上海分公司中。 document.getElementById("warp").style.display="none"; document.getElementById("content").style.display="block"; 查看试题解析出处>>

相关推荐

发布评论 查看全部评论