●某餐厅的点菜过程如下面的顺序图所示,现采用命令(Command)模式来实现该场景。那么下面顺序图中,
●某餐厅的点菜过程如下面的顺序图所示,现采用命令(Command)模式来实现该场景。那么下面顺序图中,与命令模式中的类“Command”对应的类是(28);与类Receiver对应的类是(29)。
(28) A.Cook
B.Customer
C.Order
D.Waitress
(29) A.Cook
B.Customer
C.Order
D.Waitress
●某餐厅的点菜过程如下面的顺序图所示,现采用命令(Command)模式来实现该场景。那么下面顺序图中,与命令模式中的类“Command”对应的类是(28);与类Receiver对应的类是(29)。
(28) A.Cook
B.Customer
C.Order
D.Waitress
(29) A.Cook
B.Customer
C.Order
D.Waitress
阅读下列说明和 C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某快餐厅主要制作井出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员(Waiter)调度厨师制作套餐。现采用生成器(Builder) 模式实现制作过程,得到如图 5-1 所示的类图。图5-1 类图 【C++代码】 include<iostream> include <string> using namespace std; class Pizza { private: string parts; public: void setParts(string parts) { this->parts=parts; } string getParts() { return parts; } }; class PizzaBuilder { protected:Pizza* pizza; public: Pizza* getPizza() { retum pizza; } void createNewPizza() { pizza = new Pizza(); } (1 ); } class HawaiianPizzaBuilder :public PizzaBuilder { public: void buildParts() { pizza->setParts("cross +mild + ham&pineapple"); } }; class SpicyPizzaBuider: public PizzaBuilder { public: void buildParts() { pizza->setParts("pan baked +hot + ham&pineapple"); } } Class Waiter{ Private: PizzaBuilder* pizzaBuilder; public: void setPizzaBuilder(PizzaBuilder* pizzaBuilder) { /*设置构建器*/ (2 ) } Pizza* getPizza() { return pizzaBuilder->getPizza(); } void construct() { /*构建*/ pizzaBuilder->createNewPizza(); (3 ) } }; int main(){ Waiter*waiter=new Waiter(); PizzaBuilder*hawaiian pizzabuilder=new HawaiianPizzaBuilder() (4 ); (5 ); cout<< "pizza: "<< waiter->getPizza()->getParts()<< endl; } 程序的输出结果为: pizza: cross + mild + ham&pineapple
阅读下列说明和 Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员 (Waiter) 调度厨师制作套餐。现采用生成器 (Builder) 模式实现制作过程,得到如图 6-1 所示的类图。【Java代码】 class Pizza { private String parts; public void setParts(String parts) { this.parts = parts; } public String toString() { return this.parts; } } abstract class PizzaBuilder { protected Pizza pizza; public Pizza getPizza() { return pizza; } public void createNewPizza() { pizza = new Pizza(); } public (1) ; } class HawaiianPizzaBuilder extends PizzaBuilder { public void buildParts() { pizza.setParts("cross + mild + ham&pineapp1e”}; } class SpicyPizzaBuilder extends PizzaBuilder { public void buildParts() { pizza.setParts("pan baked + hot + pepperoni&salami"); } } class Waiter { private PizzaBuilder pizzaBuilder; public void setPizzaBuilder(PizzaBuilder pizzaBuilder) { /*设置构建器*/ (2 ) ; } public Pizza getPizza(){ return pizzaBuilder.getPizza(); } public void construct() { /*构建*/ pizzaBuilder.createNewPizza(); (3 ) ; } } Class FastFoodOrdering { public static viod mainSting[]args) { Waiter waiter = new Waiter(); PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder(); (4 ) ; (5 ) ; System.out.println("pizza: " + waiter.getPizza()); } } 程序的输出结果为: Pizza:cross + mild + ham&pineapple
阅读下列说明和uML图,回答问题l至问题4,将解答填入答题纸的对应栏内。
【说明】
某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:Cafeteria Ordering system),企业员工可通过企业内联网使用该系统。
企业的任何员工都可以查看菜单和今日特价。系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订。餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。菜单管理员是餐厅特定员工,可以管理菜单。送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。
顾客订餐过程如下:
1.顾客请求查看菜单; 2.系统显示菜单和今日特价;
3.顾客选菜; 4.系统显示订单和价格;
5.顾客确认订单;
6.系统显示可送餐时间;
7.顾客指定送餐时间、地点和支付方式;
8-系统确认接受订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图和一次订餐的活动图初稿分别如图6—4和图5—5所示。
根据【说明】中的描述,给出图6—4中A1和A2所对应的参与者。
A.l2、P2
B.l2、C2
C.C1、P2
D.C1、P3
A.AE,BD,CF
B.AC,BF,DE
C.AF,BC,DE
D.AE,BC,DF
试题二(18分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
项目经理在为某项目制定进度计划时会治疗如下所示的前导图(如图2所示)。图中活动E和活动B之间为结束-结束关系,即活动E结束后活动B才能结束,其他活动之间的关系为结束-开始关系,即前一个活动结束,后一个活动才能开始。
【问题1】(6分)
请指出该网络图的关键路径并计算出项目的计划总工期。
【问题2】(8分)
根据上面的前导图,活动C的总时差为(1)天,自由时差为(2)天。杨工是该项目的关键技术人员,他同一时间只能主持并参加一个活动。若杨工要主持并参与E、C、I三个活动那么项目工期将比原计划至少推迟(3)天。在这种情况下杨工所涉及的活动序列(含紧前和紧后活动)为(4) 。
请将上面(1)到(4)处的答案填写在答题纸的对应栏内。
【问题3】(4分)
针对问题2所述的情形,如仍让杨工主持并参与E、C、I三个活动,为避免项目延期,请结合网络图的具体活动顺序叙述项目经理可采取哪些措施。
试题三(共 15 分)
阅读下列说明和 UML 图,回答问题 1 至问题4,将解答填入答题纸的对应栏内。
【说明】
某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:Cafeteria Orderin
System),企业员工可通过企业内联网使用该系统。
企业的任何员工都可以查看菜单和今日特价。
系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支
付、预约规律的订餐,在特殊情况下可以覆盖预订。
餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资
支付的顾客生成付费请求并发送给工资系统。
菜单管理员是餐厅特定员工,可以管理菜单。
送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注
册工资支付的顾客,由送餐员收取现金后记录)。
顾客订餐过程如下:
1. 顾客请求查看菜单;
2. 系统显示菜单和今日特价;
3. 顾客选菜;
4. 系统显示订单和价格;
5. 顾客确认订单;
6. 系统显示可送餐时间;
7. 顾客指定送餐时间、地点和支付方式;
8. 系统确认接受订单,然后发送 Email 给顾客以确认订餐,同时发送相关订餐信息通
知给餐厅员工。
系统采用面向对象方法开发,使用 UML 进行建模。系统的顶层用例图和一次订餐的活动图初稿分别如图 3-1和图 3-2 所示。
【问题 1】(2 分)
根据【说明】中的描述,给出图 3-1中 A1 和 A2所对应的参与者。
【问题 2】(8 分)
根据【说明】中的描述,给出图 3-1中缺少的四个用例及其所对应的参与者。
【问题 3】(4 分)
根据【说明】中的描述,给出图 3-2中(1)~(4)处对应的活动名称或图形符号。
【问题 4】(1 分)
指出图 3-1 中员工和顾客之间是什么关系,并解释该关系的内涵。
A.AE,BD,CF
B.AC,BF,DE
C.AF,BC,DE
D.AE,BC,DF