1、软件设计师-面向对象程序设计(三)及答案解析(总分:105.04,做题时间:90 分钟)阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明现欲构造一棵文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如图 18-20 所示。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 18-6 所示。表 18-6 飞机种类及其特征飞机
2、种类 起飞特征 飞行特征直升机(Helicopter) 垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)客机(AirPlane) 长距离起飞(LongDistanceTakeOff) 亚音速飞行(SubSonicFly)歼击机(Fighter) 长距离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonicFly)鹞式战斗机(Harrier) 垂直起飞(VerticalTakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图 18-21 所示。在图 18-21
3、中,AirCraft 为抽象类,描述了抽象的飞机,而类 Helicopter、AirPlane、Fighter 和Harrier 分别描述具体的飞机种类,方法 fly()和 takeOff()分别表示不同飞机都具有飞行特征和起飞特征;类 FlyBehavior 与 TakeOffBehavior 为抽象类,分别用于表示抽象的飞行行为与起飞行为;类SubSonicFly 与 SuperSonicFly 分别描述亚音速飞行和超音速飞行的行为;类 VerticalTakeOff 与LongDistanceTakeOff 分别描述垂直起飞与长距离起飞的行为。(分数:14.98)填空项 1:_填空项 1
4、:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 18-7 所示。表 18-7 飞机种类及其特征飞机种类 起飞特征 飞行特征直升机(Helicopter) 垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)客机(AirPlane) 长距离起飞(LongDistanceTakeOff) 亚音速飞行(SubSonicFly)歼击机(Fighter) 长距
5、离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonicFly)鹞式战斗机(Harrier) 垂直起飞(VerticalTakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图 18-22 所示。(分数:14.98)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明某公司的组织结构图如图 18-23 所示,现采用组合(Composition)设计模式来构造该公司的组织结构,
6、得到如图 18-24 所示的类图。(分数:15.04)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明某公司的组织结构图如图 18-25 所示,现采用组合(Composition)设计模式来设计,得到如图 18-26 所示的类图。(分数:15.04)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明和 C+代码,将应填入空 (n) 处的字句写在对应栏内。说明某饭店在不同的时段提供多种
7、不同的餐饮,其菜单的结构图如图 18-27 所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 18-28 所示的类图。其中 MenuComponent 为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类 Menu 表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 18-27 中的甜点菜单。类 MenuItem 表示菜单中的菜式。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明和 Java
8、代码,将应填入 (n) 处的字句写在对应栏内。说明某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 18-29 所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 18-30 所示的类图。其中 MenuComponent 为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类 Menu 表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 18-29 中的甜点菜单。类 MenuLtem 表示菜单中的菜式。(分数:15.00)填空项 1:_填空项
9、 1:_填空项 1:_填空项 1:_填空项 1:_软件设计师-面向对象程序设计(三)答案解析(总分:105.04,做题时间:90 分钟)阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明现欲构造一棵文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如图 18-20 所示。(分数:15.00)填空项 1:_ (正确答案:abstract)解析:填空项 1:_ (正确答案:null)解析:填空项 1:_ (正确答案:List)解析:填空项 1:_ (正确答案:childList)解析:填空项 1:_ (正确答案:printTree(file))解析:阅
10、读下列说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 18-6 所示。表 18-6 飞机种类及其特征飞机种类 起飞特征 飞行特征直升机(Helicopter) 垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)客机(AirPlane) 长距离起飞(LongDistanceTakeOff) 亚音速飞行(SubSonicFly)歼击机(Fighter) 长距离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonic
11、Fly)鹞式战斗机(Harrier) 垂直起飞(VerticalTakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图 18-21 所示。在图 18-21 中,AirCraft 为抽象类,描述了抽象的飞机,而类 Helicopter、AirPlane、Fighter 和Harrier 分别描述具体的飞机种类,方法 fly()和 takeOff()分别表示不同飞机都具有飞行特征和起飞特征;类 FlyBehavior 与 TakeOffBehavior 为抽象类,分别用于表示抽象的飞行行为与起飞行为;类SubSoni
12、cFly 与 SuperSonicFly 分别描述亚音速飞行和超音速飞行的行为;类 VerticalTakeOff 与LongDistanceTakeOff 分别描述垂直起飞与长距离起飞的行为。(分数:14.98)填空项 1:_ (正确答案:FlyBehavior *flyBehavior)解析:填空项 1:_ (正确答案:TakeOffBehavior * takeOffBehavior)解析:(1)与空(2)答案可互换。填空项 1:_ (正确答案:flyBehavior-fly())解析:填空项 1:_ (正确答案:takeOffBehavior-takeOff())解析:填空项 1:_
13、(正确答案:SubSonicFly())解析:填空项 1:_ (正确答案:VerticalTakeOff())解析:填空项 1:_ (正确答案:Helicopter())解析:阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 18-7 所示。表 18-7 飞机种类及其特征飞机种类 起飞特征 飞行特征直升机(Helicopter) 垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)客机(AirPlane) 长距离起飞(Lon
14、gDistanceTakeOff) 亚音速飞行(SubSonicFly)歼击机(Fighter) 长距离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonicFly)鹞式战斗机(Harrier) 垂直起飞(VerticalTakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图 18-22 所示。(分数:14.98)填空项 1:_ (正确答案:FlyBehavior flyBehavior)解析:填空项 1:_ (正确答案:TakeOffBehavior takeOffBehavior)解
15、析:(1)与空(2)答案可互换填空项 1:_ (正确答案:flyBehavior.fly())解析:填空项 1:_ (正确答案:takeOffBehavior.takeOff())解析:填空项 1:_ (正确答案:extends)解析:填空项 1:_ (正确答案:SubSonicFly())解析:填空项 1:_ (正确答案:VerticalTakeOff())解析:阅读下列说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明某公司的组织结构图如图 18-23 所示,现采用组合(Composition)设计模式来构造该公司的组织结构,得到如图 18-24 所示的类图。(分数:15.04
16、)填空项 1:_ (正确答案:mis-name)解析:填空项 1:_ (正确答案:virtual voidAdd(Company *c)=0)解析:填空项 1:_ (正确答案:virtual void Delete(Company *c)=0)解析:填空项 1:_ (正确答案:Company*)解析:填空项 1:_ (正确答案:children)解析:填空项 1:_ (正确答案:children)解析:填空项 1:_ (正确答案:root-Add(comp))解析:填空项 1:_ (正确答案:comp-Add(comp1))解析:阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对
17、应栏内。说明某公司的组织结构图如图 18-25 所示,现采用组合(Composition)设计模式来设计,得到如图 18-26 所示的类图。(分数:15.04)填空项 1:_ (正确答案:abstract class)解析:填空项 1:_ (正确答案:this.name)解析:填空项 1:_ (正确答案:Company)解析:填空项 1:_ (正确答案:Company)解析:填空项 1:_ (正确答案:children)解析:填空项 1:_ (正确答案:children)解析:填空项 1:_ (正确答案:root.Add(comp))解析:填空项 1:_ (正确答案:comp.Add(comp
18、1))解析:阅读下列说明和 C+代码,将应填入空 (n) 处的字句写在对应栏内。说明某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 18-27 所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 18-28 所示的类图。其中 MenuComponent 为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类 Menu 表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 18-27 中的甜点菜单。类 MenuItem 表示菜单中的菜式。(分数
19、:15.00)填空项 1:_ (正确答案:virtual void add(MenuComponent *menuComponent)=0)解析:填空项 1:_ (正确答案:MenuComponent*)解析:填空项 1:_ (正确答案:menuComponents.push_back(menuComponent))解析:填空项 1:_ (正确答案:(*iter))解析:填空项 1:_ (正确答案:allMenus)解析:阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 18-29 所示。现在采用组合(Comp
20、osition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 18-30 所示的类图。其中 MenuComponent 为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类 Menu 表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 18-29 中的甜点菜单。类 MenuLtem 表示菜单中的菜式。(分数:15.00)填空项 1:_ (正确答案:abstract class 或 public abstract class)解析:填空项 1:_ (正确答案:public abstract void add(MenuComponent menuComponent)或 abstract void add(MenuComponent menuComponent)或 protected abstract void add(MenuComponent menuComponent))解析:填空项 1:_ (正确答案:add(menuComponent))解析:填空项 1:_ (正确答案:menuComponent.print())解析:填空项 1:_ (正确答案:aIIMenus.print())解析: