单项选择题

开一闭原则(Open-Closed Principle,OCP)是面向对象的可复用设计的基石。开一闭原则是指一个软件实体应当对 (23) 开放,对 (24) 关闭;里氏代换原则(Liskov Substitution Principle,LSP)是指任何 (25) 可以出现的地方, (26) 一定可以出现。依赖倒转原则(Dependence Inversion Principle,DIP)就是要依赖于 (27) 而不依赖于 (28) ,或者说要针对接口编程,不要针对实现编程。

(28)处填()。

A.程序设计语言
B.建模语言
C.实现
D.抽象

热门 试题

问答题
阅读下列说明和Java代码,在 (n) 处填入正确的字句。 [说明] 某公司的组织结构图如图10.6所示,现采用组合(Composition)设计模式来设计,得到如图10.7所示的类图。 其中Company为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司 办事处或者部门的方法接口。类ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment和FinanceDepartment分别表示人力资源部和财务部。 [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 ConcreteteCompany extends Company private List< (3) >children-new ArrayList< (4) >(); 存储子公司、办事处或部门 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( 总公司财务部 )); 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) ; 其他代码省略
问答题
阅读下列说明和C++代码,在 (n) 处填入适当的字句。 [说明] 现欲构造一文件 目录树,采用组合(Composite)设计模式来设计,得到的类图如10.16所示。 #include <list> #include <iostream> #include <string> using namespace std; class AbstractFile protected: string name; 文件或目录名称 public: void printName()cout<<name; 打印文件或目录名称 virtual void addChild (AbstractFile *file) =0; 给一个目录增加子目录 或文件 virtual void removeChild(AbstractFile *file) =0; 删除一个目录的子目 录或文件 virtual list<AbstractFile*> *getChildren() =0; 获得一个目录的子目录 或文件 ; class file:public AbstractFile public: File (string name) (1) =name; void addChild (AbstractFile *file)return; void removeChild (AbstractFile *file)return; (2) getChildren()(return (3) ; ; class Folder :public AbstractFile private: list <AbstractFile*> childList: 存储子目录或文件 public: Folder (string name) (4) =name; void addChild(AbstractFile*file) childList .push_back(file); void rernoveChild (AbstractFile*file) childList. remove( file); list<AbstractFile*>*getChildren()(return (5) ; ; void main() 构造一个树型的文件 目录结构 AbstractFile *rootFolder=new Folder( c: ); AbstractFile*compositeFolder=new Folder( composite ); AbstractFile *windowsFolder=new Folder( windows ); AbstractFile *file=new File( TestCompositejava ); rootFolder->addChild( compositeFolder); rootFolder->addChild(windowsFolder); composit eFolder->addChild(file);