某软件公司欲设计实现一个虚拟世界仿真系统。系统中的虚拟世界用于模拟现实世界中的不

题库2022-08-02  43

问题 某软件公司欲设计实现一个虚拟世界仿真系统。系统中的虚拟世界用于模拟现实世界中的不同环境(由用户设置并创建),用户通过操作仿真系统中的1~2个机器人来探索虚拟世界。机器人维护着两个变量b1和b2,用来保存从虚拟世界中读取的字符。该系统的主要功能描述如下:(1)机器人探索虚拟世界(RunRobots)。用户使用编辑器(Editor)编写文件以设置想要模拟的环境,将文件导入系统(LoadFile)从而在仿真系统中建立虚拟世界(SetupWorld)。机器人在虚拟世界中的行为也在文件中进行定义,建立机器人的探索行为程序(SetupProgram)。机器人在虚拟世界中探索时(RunProgram),有2种运行模式:①自动控制(Run):事先编排好机器人的动作序列(指令(Instruction)),执行指令,使机器人可以连续动作。若干条指令构成机器人的指令集(InstructionSet)。②单步控制(Step):自动控制方式的一种特殊形式,只执行指定指令中的一个动作。(2)手动控制机器人(ManipulateRobots)。选定1个机器人后(SelectRobot),可以采用手动方式控制它。手动控制有4种方式:①Move:机器人朝着正前方移动一个交叉点。②Left:机器人原地沿逆时针方向旋转90度。③Read:机器人读取其所在位置的字符,并将这个字符的值赋给b1;如果这个位置上没有字符,则不改变b1的当前值。④Write:将b1中的字符写入机器人当前所在的位置,如果这个位置上已经有字符,该字符的值将会被b1的值替代。如果这时b1没有值,即在执行Write动作之前没有执行过任何Read动作,那么需要提示用户相应的错误信息(ShowErrors)。手动控制与单步控制的区别在于,单步控制时执行的是指令中的动作,只有一种控制方式,即执行下个动作;而手动控制时有4种动作。现采用面向对象方法设计并实现该仿真系统,得到如图3-1所示的用例图和图3-2所示的初始类图。图3-2中的类“Interpreter”和“Parser”用于解析描述虚拟世界的文件以及机器人行为文件中的指令集。图3-1用例图图3-2初始类图【问题1】(6分)根据说明中的描述,给出图3-1中U1~U6所对应的用例名。【问题2】(4分)图3-1中用例U1~U6分别与哪个(哪些)用例之间有关系,是何种关系?【问题3】(5分)根据说明中的描述,给出图3-2中C1~C5所对应的类名。

选项

答案

解析 【问题1】
U1/U2:Run、Step
U3:Write
U4/U5/U6:Move、Left、Read
【问题2】
U1和U2和RunProgram有泛化关系。
U3,U4,U5,U6和Manipulate Robots有泛化关系。
【问题3】
C1:World/虚拟世界
C2:Robots
C3:Instruction
C4:InstructionSet
C5:Errors
本题考查的是面向对象UML建模内容,涉及到用例图和类图。
在本题中部分信息隐含,有一定难度,需要认真阅读并理解题干说明。
【问题1】
问题1要求补充U1~U6用例名,答案可根据题干说明和图示关系判断,较为容易,具体分析过程如下:
(1)对于U1、U2用例与Run Program相关,从题干说明“机器人在虚拟世界中探索时(RunProgram),有2种运行模式:①自动控制(Run)…②单步控制(Step)…”,因此可以判断U1、U2分别为Run和Step用例,二者位置可以互换。
(2)从题干说明“手动控制机器人(ManipulateRobots)。选定1个机器人后(SelectRobot),可以采用手动方式控制它。手动控制有4种方式:①Move:…②Left:…③Read:…④Write:…”可以看到与ManipulateRobots相关的用例有Move,Left,Read,Write,又根据Write的说明“即在执行Write动作之前没有执行过任何Read动作,那么需要提示用户相应的错误信息(ShowErrors)”可以看到,与ShowErrors相关的用例是Write,即U3为Write。剩余U4、U5、U6分别为Move、Left、Read,三者位置可以互换。
【问题2】
判断用例之间的关系。用例之间的关系有三种:泛化、扩展和包含。
包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例系。当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。
(1)RunProgram有两种运行模式,即Run和Step分别是RunProgram的一种,二者与RunProgram是特殊/一般的关系,RunProgram与U1、U2是泛化关系。
(2)同理,Move、Left、Read、Write分别是手动控制的四种方式之一,因此,这四者与Manipulate Robots是特殊/一般的关系,即Manipulate Robots与U3、U4、U5、U6是泛化关系。
【问题3】
问题3由于部分信息隐含,所以难度较大。
(1)首先根据类图,存在2组部分与整体的关系,分别是C3-C4,C1-C2,其中多重度关系:C4包含1~n个C3,C1包含1~2个C2,且C1和C4都与Interpreter、Parser有关。
(2)根据说明“类“Interpreter”和“Parser”用于解析描述虚拟世界的文件以及机器人行为文件中的指令集”,因此C1、C4分别是虚拟世界的文件和机器人行为文件中的指令集,后者题干给出为Instruction Set。其中满足1…n多重度的应该为指令Instruction和InstructionSet,因此,C3为Instruction,C4为InstructionSet。C1是虚拟世界的文件,可以写作World(题干中虚拟世界只描述为World)。对于C2与World有1~2的多重度关系,根据题干说明,只有“用户通过操作仿真系统中的1~2个机器人来探索虚拟世界”符合要求,因此C2为机器人(Robot/Robots)。
(3)剩下C5与World相关,根据题干描述“用户使用编辑器(Editor)编写文件以设置想要模拟的环境,将文件导入系统(LoadFile)从而在仿真系统中建立虚拟世界(SetupWorld)”,因此建立虚拟世界需要编辑器编辑文件,并将文件导入仿真系统,因此C5为仿真系统。
转载请注明原文地址:https://tihaiku.com/congyezige/2410326.html

最新回复(0)