• 软件方法(下)第9章分析类图案例篇Part03


    DDD领域驱动设计批评文集>>

    《软件方法》强化自测题集>>

    《软件方法》各章合集>>

    可到此处下载本文档最新版本:

    http://www.umlchina.com/book/softmeth2.pdf

    您在阅读《软件方法》时如果发现错误,欢迎通过微信umlchina2告知。如果作者认为有道理,决定在下一次发布时根据您的意见修改,每个错误将付给您5.12元报酬,并在书中说明您的贡献。报酬通过微信支付。

    (1)任何您认为的错误都可以,包括错别字。

    (2)同一错误仅支付最先指正者报酬。

    (3)请根据最新版本作指正。

    下册内容目前指正人有(按指正时间排序):吴佰钊、王周文、刘学斌、成文华、黄树成、李蜀斌、杨雪鸿、王书伟、高洪江、张志坚、龙燔、陈文飞。


    9.1.6.5 步骤5及其补充约束

    用例规约:

    5. 系统验证得分达到抽奖要求。

    5. 抽奖要求:得分值大于0。

    提炼:

    这一步没有新的类和属性需要提炼。

    9.1.6.6 步骤6及其补充约束

    用例规约:

    6. 系统随机抽取奖品,将抽中的奖品从奖池移除,保存抽奖结果。

    6. 抽奖结果=学员+奖品+抽奖时间。

    6. 抽奖规则:抽奖时,如果奖池有多于一件奖品,而且价值不完全相同,那么把价值最大的奖品抽中的概率调低为其他奖品的一半。

    提炼:

    *奖品

    提炼类“奖品”。

    *奖池

    提炼类“奖池”。“奖池”和“奖品”关联,“奖池”多重性为1,“奖品”多重性为*。

    *抽奖结果

    提炼类“抽奖”。“抽奖”和“奖品”关联,“抽奖”多重性为1,“奖品”多重性为0…1。“抽奖”和“回答”关联,“抽奖”多重性为0…1,“回答”多重性为1。

    *抽奖时间

    提炼为“抽奖”的属性“时间”。

    *价值

    提炼为“奖品”的属性。

    *概率

    这是若干类和属性计算得到的结果,不需要提炼为类和属性。

    图9-20 抽奖

    9.1.6.7 步骤7及其补充约束

    用例规约:

    7. 系统反馈抽奖结果、剩余奖品和学员成绩排行。

    7. 抽奖结果=奖品名称。

    7. 剩余奖品=奖品名称+剩余数量。按奖品的价值降序排序。

    *价值:每种奖品会设置一个价值,现金的价值为现金的金额,实物的价值为该实物的估值,未抽到奖励视为抽到价值为0的奖品。

    7. 成绩排行=学员姓名+成绩+中奖次数,先按成绩降序排序,再按中奖次数降序排序,最后按学员姓名升序排序。

    *中奖:抽到的奖品价值大于0,为中奖。

    7. 学员成绩为当前活动中,学员所提交回答的得分总和。

    *某一次公开课或内训称为一次活动,一次活动可能会持续几天。在活动过程中,老师会出很多组试题(或者说,出很多张试卷),然后针对每道题点名学员回答问题。

    *学员可以参加很多次活动。例如,两个月前参加了一次“软件需求设计方法学全程实例剖析”培训,这个月又参加“业务建模和需求高阶”培训。此处的学员成绩指在单个活动内的成绩,不跨活动累加。

    提炼:

    *剩余奖品、剩余数量

    这两个概念如何处理,要看“奖品”如何定义。可以把“剩余数量”作为某个类的属性,也可以通过计算“奖池”关联的“奖品”对象数量得到。此处暂时放下,等到处理完其他概念后,我们再回来看这两个概念。

    *奖品名称

    给“奖品”加一个属性“名称”。

    *现金的价值为现金的金额,实物的价值为该实物的估值

    说明奖品分为两种,一种是现金,一种是实物。此处可以用泛化,也可以用关联,如图9-21。

    图9-21 两种奖品

    浏览用例规约,判断“奖品”为“现金”还是“实物”不存在系统需要关注的复杂行为差异,因此选择图9-21右侧的做法,添加“奖品类型”类,“奖品类型”和“奖品”关联,“奖品类型”的多重性为1,“奖品”的多重性为*。

    *学员成绩

    某次“活动”的“学员成绩”可以通过累计“学员”参加该次“活动”的所有“回答”的“得分”计算,不需要提炼新的类或属性。

    *活动

    提炼为类“活动”。“活动”和“学员”关联,多重性均为*,“活动”和“试卷”关联,多重性均为*。

    *中奖次数

    可以通过“学员”的“抽奖”统计,不需要提炼新的类或属性。

    图9-22 活动

    9.1.6.8 步骤8-11及其补充约束

    用例规约:

    8. 系统验证抽中的奖品为现金类型且存在学员的微信号。

    9. 系统请求微信向学员的微信号发红包。

    10. 系统保存发奖结果。

    11. 系统反馈发奖结果。

    9. 红包金额为现金奖品的价值。

    10. 回答+是否发放成功+发放时间。

    11. 是否发放成功。

    提炼:

    *微信号

    提炼为“学员”的属性。

    *微信

    “微信”是一个外系统,提炼出边界类“微信接口”。

    *发奖结果

    提炼“发奖”类。“发奖”和“抽奖”关联,“发奖”的多重性为0…1,“抽奖”的多重性为1。

    *是否发放成功+发放时间

    提炼为“发奖”的属性。

    图9-23 发奖

    到此,该用例规约的所有可提炼的内容已提炼完毕。

    9.1.6.9 进一步思考

    (1)奖品

  • 相关阅读:
    数据结构——图(图的基本概念)
    删除链表的倒数第N个节点
    前端铺子-uniapp移动端:跨平台开发新篇章
    jenkins pipeline 通过withCredentials连接项目服务器进行自动部署
    有向图的表示与动态选择算法
    Linux内存管理(二十):LRU简介
    【java爬虫】使用vue+element-plus编写一个简单的管理页面
    如何看待人工智能行业发展
    速盾:cdn影响seo吗?
    Activity创建与跳转
  • 原文地址:https://blog.csdn.net/rolt/article/details/125631553