这的做法和数据流图相似,我们先观察3-1这个用例图,我们先寻找A1、A2、A3这三个外部实体,
首先我们看到A1与创建订单和收货确认用例有关联,我们去说明(1)和说明(6)中寻找和外部实体相关的语句
,"创建订单。顾客(Customer)在线创建订单(Order)"、"当订单处理人员收到签收过的运货单后,会和顾客进行一次再确认。"
这俩者都与外部实体顾客有关联,所以我们可以推断出A1就是外部实体 顾客
而A2和收货确认、处理订单有联系,我们可以继续从说明中寻找,
"当订单处理人员收到签收过的运货单后,会和顾客进行一次再确认。"
"订单处理人员接收来自系统的订单;根据订单内容,安排配货,制定 送货计划。"
这俩个用例说明中都有订单处理人员的存在,所以A2实体应该为订单处理人员
而A3与送货用例有关联
"派送人员将货物送到顾客指定的收货地址。"
而顾客已经为A1实体了,还剩一个派送人员实体与送货用例有关联,所以我们可以推断
A3为派送人员.
还剩填补用例U1-U2,
我们可以先将图中已经有的用例从范围中去掉
用例有:创建订单、提交订单、处理订单、派单、送货、收货、收货确认
去掉已有的用例剩下的是:派单、收货.
"派单。订单处理人员将己配好货的订单转交给派送人员。"
派单与订单处理人员和派送人员有关联,所以可以判断U2是派单用例
"派送人员将货物送到顾客指定的收货地址。当顾客收货时,需要在 运货单(delivery slip)上签收。签收后的运货单最终需交还给订单处理人员。"
收货用例与顾客、订单处理人员、派送人员都有关联,所以我们可以判断U1是收货用例
A1:顾客 A2:订单处理人员 A3:派送人员
U1:收货 U2:派单
首先我们先看向填补类名C1~C3,这里还要求使用说明中给出的英文词汇,所以我们可以知道,这里的类名必定是只有说明中给出英文词汇的,
我们可以先将给出英文词汇的列出来,然后再去掉图中已有的类名,再根据关系逐一选择
顾客(Customer)订单(Order)商品(Product)数量 (quantities)姓名(name)收货地址(address)付款方式(form of payment)
订单量(volume)名称(Name)造价(cost price)售价(sale price) 包装体积(cubic volume)发货日期(delivery date)
限时发送要求(Delivery Time Window)运货单(delivery slip)
剩下:
顾客(Customer)订单(Order)商品(Product)付款方式(form of payment)
订单量(volume)名称(Name)造价(cost price)售价(sale price) 包装体积(cubic volume)发货日期(delivery date)
限时发送要求(Delivery Time Window)运货单(delivery slip)
C1:观看他的属性只有name和address,我们可以看到只有顾客实体同时并且只拥有name和address属性,所以我们可以暂时推断C1为Customer类
C3:他的属性只有name,并且和C2有聚合,即C3是C2的一部分,并且C3可以离开C2单独存在,并且他们的关系之中还有额外添加"Order Product Quantity",
属性有QUantity(数量),所以我们可以推断出来C1和C3是订单和商品.
Customer类与Order类,一个顾客同时能关联多个订单,而一个订单同时只能关联一个顾客,所以(1)是1,(2)是*
Order类与Product类之间有聚合关系,一个订单能够关联多个(至少1个)商品,而一个商品能同时关联多个(最少0个)订单(即一个商品被多个人购买,生成多个订单),所以(3)是* (4)是1..*
(1)1
(2)*
(3)*
(4)1..*
这题我们需要先观察说明中对它们的描述
"还必须 记录每种商品的名称(Name)、造价(cost price)、售价(sale price)以及单件商品的包 装体积(cubic volume)。"
所以Product类中的属性除了name还需要有costprice、sale price、cubic volume
"在提交订单时,顾客需要提供其姓名(name)、 收货地址(address)、以及付款方式(form of payment)(预付卡、信用卡或者现金)。为 了制定送货计划以及安排送货车辆,系统必须确定订单量(volume)"
顾客的姓名和收货地址不需要在Order类中,因为Order类已经与Customer类关联了,所以Order类中的属性还需要有form of payment、volume.
"处理订单。订单处理人员接收来自系统的订单;根据订单内容,安排配货,制定 送货计划。在送货计划中不仅要指明发货日期(delivery date),还要记录每个订单的限时 发送要求(Delivery Time Window)。"
还需要有delivery date属性,这的Delivery Time Window 已经将它抽象为类了,所以不需要作为Oder的属性.
C2:form of payment、volume、delivery date
C3:cost price、sale price、cubic volume