試題六
閱讀下列說明和Java代碼,將應(yīng)填入 (n) 處的字句寫在對應(yīng)欄內(nèi)。
[說明]
某公司的組織結(jié)構(gòu)圖如圖6-1所示,現(xiàn)采用組合(Composition)設(shè)計模式來設(shè)計,得到如圖6-2所示的類圖。
其中Company為抽象類,定義了在組織結(jié)構(gòu)圖上添加(Add)和刪除(Delete)分公司/辦事處或者部門的方法接口。類ConcreteCompany表示具體的分公司或者辦事處,分公司或辦事處下可以設(shè)置不同的部門。類HRDepartment和FinanceDepartment分別表示人力資源部和財務(wù)部。
[Java代碼]
import java.util.*;
(1) Company {
protected String name;
public Company(String name)( (2) =name;}
public abstract void Add(Company c); //增加子公司、辦事處或部門
public abstract void Delete(Company c); //刪除子公司、辦事處或部門
}
class ConcreteCompany extends Company {
private List< (3) > children=new ArrayList < (4) >45;
//存儲子公司、辦事處或部門
public ConcreteCompany(String name) { super(name); }
public void Add(Company c) { (5) . add(c); }
public void Delete(Company c) { (6) .remove(c); }
class HRDepartment extends Company {
public HRDepartment(String name) { super(name); }
//其他代碼省略
Class FinanceDepartment extends Company {
public FinanceDepartment(String name) { super(name); }
//其他代碼省略
}
public class Test {
public Static void main(String[] args) {
ConcreteCompany root=new ConcreteCompany("北京總公司");
root.Add(new HRDepartment("總公司人力資源部"));
root.Add(new FinanceDepartment("總公司財務(wù)部"));
ConcreteCompany comp=new ConcreteCompany("上海分公司");
comp.Add(new HRDepartment("上海分公司人力資源部"));
comp.Add(new FinanceDepartment("上海分公司財務(wù)部"));
(7) ;
ConcreteCompany comp1=new ConcreteCompany("南京辦事處");
comp1.Add(new HRDepartment("南京辦事處人力資源部"));
comp1.Add(new FinanceDepartment("南京辦事處財務(wù)部"));
(8) ; //其他代碼省略
}