阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某软件公司欲设计实现一个虚拟世界仿真系统。系统中的虚拟世界用于模拟现实世界中的不同环境(由用户设置并创建),用户通过操作仿真系统中的l~2个机器人来探索虚拟世界。机器人维护着两个变量b1和b2,用来保存从虚拟世界中读取的字符。 该系统的主要功能描述如下: (1)机器人探索虚拟世界(Run Robots)。用户使用编辑器(Editor)编写文件以设置想要模拟的环境,将文件导入系统(Load File)从而在仿真系统中建立虚拟世界(SetupWorld)。机器人在虚拟世界中的行为也在文件中进行定义,建立机器人的探索行为程序(Setup Program)。机器人在虚拟世界中探索时(Run Program),有2种运行模式: ①自动控制(Run):事先编排好机器人的动作序列(指令(Instruction)),执行指令,使机器人可以连续动作。若干条指令构成机器人的指令集(Instruction Set)。 ②单步控制(Step):自动控制方式的一种特殊形式,只执行指定指令中的一个动作。 (2)手动控制机器人(Manipulate Robots)。选定1个机器人后(Select Robot),可以采用手动方式控制它。手动控制有4种方式: ①Move:机器人朝着正前方移动一个交叉点。 ②LeR:机器人原地沿逆时针方向旋转90度。③Read:机器人读取其所在位置的字符,并将这个字符的值赋给bl;如果这个位置上没有字符,则不改变b1的当前值。 ④Write:将b1中的字符写入机器人当前所在的位置,如果这个位置上已经有字符,该字符的值将会被b1的值替代。如果这时bl没有值,即在执行Write动作之前没有执行过任何Read动作,那么需要提示用户相应的错误信息(Show Errors)。 手动控制与单步控制的区别在于,单步控制时执行的是指令中的动作,只有一种控制方式,即执行下一个动作;而手动控制时有4种动作。现采用面向对象方法设计并实现该仿真系统,得到如图3-1所示的用例图和图3-2所示的初始类图。图3-2中的类“Interpreter”和“Parser”用于解析描述虚拟世界的文件以及机器人行为文件中的指令集。
问答题
根据说明中的描述,给出图3.1中U1~U6所对应的用例名。
【正确答案】正确答案:U1:Run U2: Step U3:Wfite U4:Read U5:Left U6:Move 注:U1和U2可以互换;U4~U6可以互换。
【答案解析】解析:本题属于经典的考题,主要考查面向对象分析方法与设计的基本概念。在建模方面,本题涉及到了UML的类图和用例图。本题的考点比较常规,题目难度不大。 在图3.1的用例图中,需要确定6个用例。在面向对象方法中,用例及用例图是描述功能需求的工具,每一个用例表示一个单一的功能单元。通过对【说明】中功能描述的阅读,可以将未出现在图3-1中的功能单元列举出来:Run、Step、Move、Left、Read和Write。下面就是要判断这6个用例在图中的对应关系了。由图3-1可知,U3中包含了Show Errors的功能,所以U3只能对应用例“Write”。其余的没有严格的顺序要求,但是在回答【问题2】时要根据所填写的用例来判断用例之间的关系。这里我们按照下列顺序填写:U1->Run;U2->Step;U3->Write;U4->Read;U5一>Left;U6->Move。
问答题
图3-1中用例U1~U6分别与哪个(哪些)用例之间有关系,是何种关系?
【正确答案】正确答案:U1~U2与Run Program有关系;是泛化关系 U3~U6与Manipulate Robots有关系;是泛化关系
【答案解析】解析:图3-1中没有将用例之间的关系完整地给出来,因此需要根据【说明】中的功能描述判定U1~U6与其他用例之间的关系。根据【说明】中的描述可知,Run和Step是Run Program的两种具体方式,所以这3个用例之间是有关系的,在UML用例图中,这种关联通常采用泛化关系描述。同理,U3~U6用例是用例Manipulate Robots的4种具体实现方法,因此这5个用例之间也是泛化关系。
问答题
根据说明中的描述,给出图3-2中C1~C5所对应的类名。
【正确答案】正确答案:C1:World C2:Roboff Robots C3:Instruction C4:InstructionSet C5:Error/Errors
【答案解析】解析:本题要求将类图中缺失的5个类补充完整。在解答此类题目时,首先考虑类图中的特殊关系,如继承关系、聚集或组合关系等,这是比较好的突破口。另外应关注类之间的多重度。在图3.2中出现了两个聚集关系:C1和C2之间以及C3和C4之间。我们先考虑C1和C2这一对,因为这两个类之间的多重度是一个具体的范围1..2。【说明】中有一句话:“用户通过操作仿真系统中的l~2个机器人来探索虚拟世界”,也就是说在虚拟世界中包含着1-2个机器人,由此可以推断C2对应的是机器人Roboff Robots,C1代表的就是整个虚拟世界World。 下面我们来看C3和C4这一对聚集关系。C4和Interpreter、Parser有关联,而这两个类与文件及机器人指令集的解析有关,由此可以推断,C3、C4这两个类也应该跟解析功能相关。由【说明】可知,系统中有两类需要解析的事物:虚拟世界文件和机器人指令集,而机器人指令集是由若干条指令构成的,这里就出现了一个聚集结构。因此C3应该对应Instruction,C4对应的是InstructionSet。 对于最后一个类,将功能需求与用例图再回顾一遍,发现在类图中还缺少关于错误信息的描述,因此C5所对应的就是类Error。