问答题 阅读以下说明和图,回答下面问题。
[说明]
某公司欲开发一个管理选民信息的软件系统,对系统的基本需求描述如下。
(1)每个人(Person)可以是一个合法选民(Eligible)或者无效的选民(Ineligible)。
(2)每个合法选民必须通过该系统对其投票所在区域(即选区,Riding)进行注册(Registration),每个合法选民仅能注册一个选区。
(3)选民所属选区由其居住地址(Address)决定。假设每个人只有一个地址,地址可以是镇(Town)或者城市(City)。
(4)某些选区可能包含多个镇;而某些较大的城市也可能包含多个选区。
现采用面向对象方法对该系统进行分析与设计,得到如下图所示的初始类图。
问答题 根据说明中的描述,给出图中C1~C4所对应的类名(类名使用说明中给出的英文词汇)。
【正确答案】
【答案解析】C1:Address;C2:Riding;C3:Ineligible;C4:Eligible。[解析] 由“每个人可以是一个合法选民或者无效选民”可知C3和C4是这两者中的一个,由C4和C2关联可知,C4为合法选民(Eligible),则C3为无效选民(Ineligible)。由city和Town共同指向C1,“选民所属选区由其居住地址(Address)决定。假设每个人只有一个地址,地址可以是镇(Town)或者城市(City)可知,C1应该为Address。由描述“每个合法选民必须通过该系统对其投票所在区域(即选区,Riding)进行注册(Registration)”以及C4指向C2,city、town同时指向C2可知,C2为Riding,即选区。
问答题 根据说明中的描述,给出图中M1~M6处的多重度。
【正确答案】
【答案解析】M1:1;M2:*;M3:*;M4:1;M5:*;M6:1。 [解析] UML中关联的多重度是指一个类的实例能够与另一个类的多个实例相关联。具体的取值意义如下。
●0..1:0个或1个。
●1:只能1个。
●0..*:0个或多个。
●*:0个或多个。
●1..*:1个或多个。
由描述“每个人只有一个地址”可知,M1为1;一个地址可以有0个或多个人,因此M2为“*”;一个选区可以有0个或多个选民,一个选民只在一个选区投票,因此,M3为“*”,M4为1;由“某些选区可能包含多个镇”可知每个选区可包含0个或多个地址,M5应为“*”,每个选民只有一个地址,每个地址属于一个选区,因此:M6为1。
问答题 现对该系统提出了以下新需求:
(1)某些人拥有在多个选区投票的权利,因此需要注册多个选区。
(2)对手满足(1)的选民,需要划定其“主要居住地”,以确定他们应该在哪个选区进行投票。
为了满足上述需求,需要对如图所示的类图进行哪些修改?请用100字以内的文字进行说明。
【正确答案】
【答案解析】将M1与M4由1修改为1..*。[解析] 若对系统提出新的要求:①某些人拥有在多个选区投票的权利,因此需要注册多个选区;②对于满足(1)的选民,需要划定其“主要居住地”,以确定他们应该在哪个选区进行投票,则将M1与M4由1修改为1..*。