软考中级软件设计师(下午题)--- UML建模
1.



用户通过了操作仿真系统中的机器人来探索虚拟世界,系统中共有2个主要功能,分别是机器人探索虚拟世界(Run Robots)与手动控制机器人(Manipulate Robots),所以U1、U2分别为Run Robots与Manipulate Robots
U3、U4 处于 Run Program 用例下,所以是自动控制(Run)与单步控制(Step)
U5与show errors关联,表示U5与该行为是同级的,就像丈夫与妻子,所以应该为Write
U6、U7、U8就是剩下的3种手动控制方式
如果把 Run Program 看为一个一般的父类,那么 Run与Step 就是两个特殊的子类,所以是泛化关系;之所以不是扩展关系是因为U3、U4执行是 Run Program的具体方式,而非不同场景所产生的行为
extend表示的是扩展关系:如果一个用例明显混合了两种或两种以上的不同场景,那么就可以把这个用例分为一个基本用例和一个或多个扩展用例。最一开始的Select Robot用例应该是选中一个机器人,然后手动控制它;目前Select Robot 用例中只保留了“选中一个机器人”(基本用例)及其相关操作的触发条件,而相关操作的实现通过不同的子用例Move、Left、Read、Write(扩展用例)来实现
include表示的是包含关系:当可以从两个或两个以上用例中提取公共行为时,应该使用包含关系来表示他们与该公共行为之间的联系
Interpreter、parser用于解析文件,所以C1为文件
文件是由虚拟世界的描述与机器人行为聚合的,所以C2为机器人在虚拟世界中的行为
Interpreter、parser还用于解析指令集,说明Interpreter、parser和Instruction Set之间有关联关系,所以C4为Instruction Set
C3聚合而成了C4,所以C3为Instuction
用Editor来编写文件,Editor与文件之间有关联关系,所以C5为Editor
不难发现,关联关系很多都是用xxx来做yyy,xxx与yyy之间就有了关联关系;依赖关系是xxx的变化会影响yyy
2. 

注:问题1作答只能用说明中给的英文词汇
Person lives at 1个address,所以C1为Address;C2与registration相互关联,所以是Riding
Person 是 C3、C4 的泛化,C4才和registration相互关联,所以C3为无效选民(Ineligible),C4为合法选民(Eligible)
每个人只有1个住址,M1为1;无论是Town还是City都住了非常多人,所以M2为*;一个选区肯定有非常多人注册,所以M3为*;每个合法选民只能注册一个选取,所以M4为1;一个选取(例如德克萨斯州)肯定包含了非常多的City与Town,所以M5为*;纽约只能属于一个选区,所以M6为1
至少选择一个选区,至少住在一个居住地,所以将M1、M4从1改为1…*即可
3.



排序是U1、U2的一个泛化,所以U1为按姓氏的字典排序,U2为按邮政编码排序
创建与修改地址簿都包含了保存地址簿这一操作,所以U6为保存地址簿,U3、U4为创建地址簿与修改地址簿
U5为U4的扩展关系,把U4、U5的组合看作是创建地址簿这一行为整体用例,那么打开地址簿就不对了(没有地址簿打开什么);所以U4只可能是修改地址簿,修改地址簿之前得要先打开地址簿;U5为打开地址簿
属性是类中的变量,方法是类中的函数
AddressBook(地址簿管理类)属性:PersonAddress中的所有属性都要有1个(要不然怎么增删改查),部门编号
AddressBook方法:添加、创建、打开、修改、删除、保存
PersonAddress属性:姓名、地址、城市、省份、邮政编码、联系电话、员工号(没有主码,自己搞一个出来)
4.


选择元素后,可以移动元素或调整元素大小,所以U1、U2分别为移动元素与调整元素大小
U1、U2与选择元素视作一个整体(操作元素)时,U1、U2开始前都得先要选择元素,所以构成了扩展关系
C1与工具形成了泛化关系,C2与元素有selected关联所以是选择元素,C1也就只能是创建工具
C1是文本工具、C3、C4、C5的泛化,所以C3为线条工具,C4为矩形工具,C5为椭圆工具,C
C6、C7、C8和元素形成泛化关系,所以是具体的xx元素,那么只可能是线条、矩形和椭圆了
5.



一个Category当中可以有某件商品,也可一件商品都没有,所以(1)为 0…*;一件商品仅属于一种分类,所以(2)为 1
一件商品可以有多个促销活动(淘宝里,商品A和不同种类商品搭配一起买,促销力度不一样),也可以完全没有促销,所以(3)为 0…*;一个促销活动肯定有一件及以上的商品,所以(4)为 1…*
一个账号可以买一单,也可以一单也不买,所以(6)为 0…*;用户选择某一促销活动,系统生成一个促销订单,所以(5)为 1
category读取了商品信息,categoryManager从category中读取分类信息,所以是(8)是getCategories
businessman(商人)从categorymanager那获取所有商品信息,即getCommodities(9)
先是createPromotion(10),然后再addCommodities(11)
聚合关系是一种特殊的关联关系。
关联关系不强调整体与部分间的结构关系,两个对象在概念上处于一个级别;而聚合关系是一种“has-a”的关系,一个对象明确拥有另一个对象,这种拥有关系可以松散也可以强烈
