问答题

阅读下列说明和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);

【参考答案】

(1) this->name
(2) list<AbstractFile*>*
(3) null......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
阅读下列说明和UML图,回答问题。 [说明] 某企业为了方便员工用餐,餐厅开发了一个订餐系统(Cafeteria Ordering System,COS),企业员工可通过企业内联网使用该系统。 企业的任何员工都可以查看菜单和今日特价。 系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订。 餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。 菜单管理员是餐厅特定员工,可以管理菜单。 送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。 顾客订餐过程如下。 (1)顾客请求查看菜单。 (2)系统显示菜单和今日特价。 (3)顾客选菜。 (4)系统显示订单和价格。 (5)顾客确认订单。 (6)系统显示可送餐时间。 (7)顾客指定送餐时间、地点和支付方式。 (8)系统确认接收订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。 系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图和一次订餐的活动图初稿分别如图10.13和图10.14所示。 [问题1] 根据说明中的描述,给出图10.13中A1和A2所对应的参与者。 [问题2] 根据说明中的描述,给出图10.14缺少的4个用例及其所对应的参与者。 [问题3] 根据说明中的描述,给出图10.14中(1)~(4)处对应的活动名称或图形符号。 [问题4] 指出图10.13中员工和顾客之间是什么关系,并解释该关系的内涵。
问答题
阅读下列说明和C++代码,在 (n) 处填入适当的字句。 [说明] 某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表10.4所示。 为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图10.11所示。 图10.11中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法fly()和takeOff()分别表示不同飞机都具有飞行特征和起飞特征;类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行为与起飞行为;类SubSonicFly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticaITakeOff与LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。 [C++代码] #include<iostream> using namespace std; class FlyBehavior public : virtual void fly() = 0; class SubSonicFly:public FlyBehavior public: void fly() cout<< 亚音速飞行! << end1; ; 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 : voicl 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; 其他代码省略