首页
登录
从业资格
某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起
某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起
admin
2022-08-02
55
问题
某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表5-1所示。表5-1
为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图5-1所示。
图5-1中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法fly( )和takeOff( )分别表示不同飞机都具有飞行特征和起飞特征;类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行为与起飞行为;类SubSonicFly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff与LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。【C++代码】#include<iostream>using namespace std;class FlyBehavior{public:virtual void fly( )=0;};class SubSonicFly:public FlyBehavior{public:void fly( ){cout<<"亚音速飞行!"<<endl;}};class SuperSonicFly:public FlyBehavior{public:void fly( ){cout<<"超音速飞行!"<<endl;}};class TakeOffBehavior{public:virtual void takeOff( )=0;};class VerticalTakeOff:public TakeOffBehavior{public:void takeOff( ){cout<<"垂直起飞!"<<endl;}};class LongDistanceTakeOff:public TakeOffBehavior{public:void takeOff( ){cout<<"长距离起飞!"<<endl;}};class AirCraft{protected:(1);(2);public:void fly( ){(3);}void takeOff( ){(4);};};class Helicopter:public AirCraft{public:Helicopter( ){flyBehavior=new(5);takeOffBehavior=new(6);}(7){if(!flyBehavior)delete flyBehavior;if(!takeOffBehavior)delete takeOffBehavior;}};//其它代码省略
选项
答案
解析
(1)FlyBehavior*flyBehavior(2分)
(2)TakeOffBehavior*takeOffBehavior(2分)
(3)flyBehavior->fly()(2分)
(4)takeOffBehavior->takeOff()(2分)
(5)SubSonicFly()(2分)
(6)VerticalTakeOff()(2分)
(7)~Helicopter()(3分)
注:空(1)与空(2)答案可互换
本题目考查了设计模式中的策略设计模式,实际上与2007年上半年考核内容相同。
从本题的叙述中可以看出,存在4种不同的飞机类型,但每种飞机类型的起飞特征和飞行特征并不完全相同,这就使得我们很难采用比较直接的方法来实现重用。例如,定义一个抽象的飞机类,实现飞机的起飞特征,然后4种飞机直接重用该特征。但是,我们可以观察到,尽管飞机的起飞特征和飞行特征有所不同,有一点可以肯定的是,每一种飞机都具备了飞行特征和起飞特征。因此,可以抽象出一个飞机类,其中含有飞行特征与起飞特征,但关于两个特征的实现要单独抽取出来,所以又形成了FlyBehavior类和TakeOffBehavior类分别表示抽象的飞行和起飞特征,而这两个类的子类则分别实现不同的起飞特征和飞行特征,最终转化为,在创建一个具体的飞机时,给其配上不同的起飞特征和飞行特征即可。
本题中的空(1)和空(2)应该填写成员变量,根据类图可以得知,此处应该表示的是飞行和起飞特征变量,在C++中可以采用指针来表示。空(3)和空(4)处需要实现飞行与起飞特征,但AirCraft是抽象的类,所以把实现代理给指针变量。Helicopter类需要指定由父类继承而来的成员变量的初始值,因为Helicopter的特征是垂直起飞和亚音速飞行,因此生成这两个特征的对象,分别赋值给flyBehavior和takeOffBehavior变量。
转载请注明原文地址:https://tihaiku.com/congyezige/2409483.html
本试题收录于:
中级 软件设计师题库软件水平考试初中高级分类
中级 软件设计师
软件水平考试初中高级
相关试题推荐
管理信息系统输入设计的最根本原则是()A.提高效率、减少错误 B.提高可靠性
某公司的数据库应用系统中,其数据库服务器配置两块物理硬盘,可以采用下述存储策略,
在数据库系统运行中,经常会找出频繁执行的SQL语句进行优化。常见的优化策略有:
在数据库系统运行中,经常会找出频繁执行的SQL语句进行优化。常见的优化策略有:
在DBS的日常维护工作中,不属于“新旧系统转换”的工作是()。A.异构数据库系
在数据库应用系统的体系结构中,常用的是C/S(客户机/服务器)结构和B/S(浏览
数据库应用系统在运行过程中,发现随着数据量的不断增加,有部分查询业务和数据更新业
某本科高校新建教务管理系统,支撑各学院正常的教学教务管理工作。经过初步分析,系
某海外代购公司,为扩展公司业务,需要开发一个信息息化管理系统。请根据公司现有业务
某省针对每年举行的足球联赛,拟开发一套信息管理系统,以方便管理球队、球员、主教练
随机试题
WhatisHilaryKingsley?[br][originaltext]M:IhavewithmeHilaryKingsley,
MuslimSudanisoneoftheIslamized【B1】______regions.InEastAfricamusic
[originaltext]W:TodaywehavewithusDrMichaelWhite,aspacescientist,to
()是我国大多数高血压患者发病最主要的危险因素。A.心理因素 B.超重
患者,男性,38岁,患血栓闭塞性脉管炎,处于局部缺血期。护士对患者日常生活中的健
下面关于沥青混合料运输、摊铺说法错误的是()。A、运料车应在摊铺机前100~30
公路工程施工总承包企业资质可一共分为()。A、二级 B、三级 C、
(共用题干)患者女,58岁。乳腺癌根治术后行5-FU药物化疗。 入住隔离病
酶原没有活性是因为 A.酶蛋白肽链合成不完全B.缺乏辅酶 C.酶原已经变性
可以预防沥青混凝土路面横向接缝病害的措施是()。A.尽量采用平接缝 B.
最新回复
(
0
)