问答题
【正确答案】(4 分)
U1:使用常规卡行驶 U2:使用单次卡行驶(各1 分)
(1):extend (2 分)
【答案解析】解析:本题属于经典的考题,主要考查面向对象分析方法以及UML的用例图和类图的相关知识。 本问题要求将图3-1所给出的用例图补充完整。用例图的构成要素有:参与者、用例以及用例之间的关系。图中缺少了两个用例,以及一个用例关系。解答此题时,首先应从说明中找到所有的用例。 用例表示系统的一个单一业务功能。从题目的描述中可以看出,系统的主要功能就是申请行驶卡,以及使用行驶卡行驶。由于行驶卡分为三种,所以在说明中详细描述了三种行驶卡的使用方法。再结合用例图来看,缺少的两个用例与用例“使用季卡行驶”有关联关系,由此可以推断出,需要补充的这两个用例必定与另外两种行驶卡相关,分别为“使用常规卡行驶”和“使用单次卡行驶”。 下面需要解决的问题是这两个用例与U1和U2的对应关系。这就需要仔细考查一下用例图所给出的用例关系。由图3-1可知,U1和“使用季卡行驶”之间是泛化(generalization)关系。当多个用例共同拥有一种类似的结构和行为时,可以将它们的共性抽象为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。根据说明中的“季卡的使用流程与常规卡类似,但是不需要打印费用单,系统自动从卡中扣除应付费用”可知,U1应该对应着用例“使用常规卡行驶”。由此不难得出U2对应着用例“用单次卡行驶”。 现在图中只剩下(1)处的用例关系没有确定。用例之间的关系在用例图上只有三种:包含(include)、扩展(extend)和泛化(generalization)。 包含关系是指当多个用例中存在相同事件流时,可以把这些公共事件流抽象成为公共用例,这个公共用例称为抽象用例,而原始用例称为基础用例。基础用例和抽象用例之间是包含关系。 如果一个用例明显地混合了两种或两种以上的不同场景,则可以将这个用例分为一个基本用例和多个扩展用例。扩展关系用“<<extend>>”表示,箭头指向基本用例。 包含关系和扩展关系的区别在于,抽象用例中的事件流一定要插入到基本用例中去,并且插入点只有一个,通常抽象用例不能脱离基本用例而独立存在。扩展用例的事件流往往可以抽象为基本用例的备选事件流,在扩展关系中,可以根据一定的条件来决定是否将扩展用例的事件流插入到基本用例的事件流中,并且插入点可以有多个。 根据以上分析可知,(1)处的用例关系选择“<<extend>>”最为合适。
问答题
【正确答案】(8 分,各1 分)
C1:RoadSegment C2:Trajectory C3:Card
C4:RegularCard C5:PrepaidCard C6:MinitripCard
(2)1 (3)1..3
【答案解析】解析:本问题考查的是类图建模。解题的重点在于根据类图中提供的类及类之间的关联关系,推断出剩余的类。 可以先观察一下类图。可以看到,需要补充的类基本上集中在两个结构上:聚集结构(类C1和C2)以及继承结构(类C3~C6)。继承结构是比较容易辨识的类之间的关联关系,图上给出了其中的一个子类SeasonCard。以这个类为线索,回到说明中寻找与类SeasonCard相关的其他类。从说明中可知,“系统提供了3种卡”,常规卡、季卡、单次卡,而“季卡和单次卡都是预付卡”。这些描述暗示,“季卡”、“单次卡”与“预付卡”之间存在着特殊/一般关系,即“is-a”关系,这是继承结构的典型标志。由此可以得出类C5和C6应该分别对应PrepaidCard(预付卡)和MinitripCard(单次卡)。根据C5和C6所对应的类,可以推断出,C4和C3必定也是与行驶卡相关的类。三种卡中,已经有两种卡有了对应的类,还剩下一种卡即“常规卡”。而“常规卡”只能是与“预付卡”同层次的概念,所以只能对应于C4,C3表示的是能代表所有这几种卡的公共概念。所以C3和C4应分别对应于Card和RegularCard。确定了C3之后,就可以识别出(2)和(3)处的多重度。Customer和Card之间是持有和被持有的关系,由于系统中只有3种卡,所以一个客户最多只能有3种卡,所以(3)处应填1..3。而对于任何一张卡来说,只能有唯一地一个所属人,因此(2)处应填1。 现在还剩下类C1和C2没有确定。由于这两个类之间是聚集关系,所以需要在说明中寻找具有“部分一整体”关系的概念。由说明中的“行程(Trajectory)由一组连续的路段构成”可知,C1和C2应分别对应于RoadSegment和Trajectory。
问答题
【正确答案】(3 分,每个类1 分)
RoadSegment 的属性:Distance
Trajectory 的属性:Entry、Exit、DateOfEntry
Card 的属性:UnitPrice、ValidPeriod
【答案解析】解析:本问题考查类的关键属性的识别。由说明中给出的描述可知,类RoadSegment的属性至少应包括Distance;类Trajectory的属性至少应包括Entry、Exit和DateOfEntry;类Card的属性至少应包括UnitPrice、ValidPeriod。