软件过程与工具 面向对象的分析

Step 1:识别分析类之实体类

  • 如何寻找实体类:
    名词驱动的识别方法
  • 找出所有的名词或名词短语,对其标注下划线
  • 判断是否是实体类,看是否需要管理该名词所拥有的信息,或者系统是否需要管理该名词所能发出或接受的动作
  • 合并同义词
  • 将最终得到的每一个名词映射为一个实体类
  • 动词映射为操作,形容词和名词映射为属性
    在这里插入图片描述

Step1: 识别分析类之控制类

识别控制类

  • 控制类负责协调边界类控制类负责协调边界类和实体类,通常在现实世界中没有对应的事物
  • 负责接收边界类的信息,并将其分发给实体类
  • 控制类与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消
  • 一般来说,一个用例对应一个控制类
    在这里插入图片描述

图书管理系统的控制类

在这里插入图片描述

Step2:描述分析类的属性

描述分析类的属性之边界类、控制类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Step 3:定义分析类的操作

注: CRUD是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

从用例触发,识别类的操作

  • 用例的事件流描述了一系列的“动作”:
    actor做的;系统自身做的

  • 如何把这些动作映射到分析类的操作中?简要归纳一下原则:

    1. actor自己做的动作,都是边界类的操作,与控制类和实体类无关
    2. 边界类的操作会调用控制类的操作,并进一步被分解为对各个不同实体类的操作的调用序列
    3. actor发出的动作通常都比较大,往往涉及到对多个实体类的属性的增删改查(CRUD),不能简单的将它直接放置在某个实体类中
  • 实体类的操作分为两类:

    1. 对该实体的生命周期的操作:如new()、destroy()
    2. 对该实体内部的一个或多个属性的CRUD操作 — 注意:是自己的属性,不是其他实体的!
  • 因此,对用例中actor所发出的每个动作,需要仔细分析它对哪些实体类的哪些属性做CRUD

  • 案例 从购物车生成订单
    在这里插入图片描述
    在这里插入图片描述

  • 有一类用例中的操作,没办法分解为小粒度op,尤其以查询类操作为甚

  • 所以,这个操作只能由控制类加以完成:

  • 基于数据库中的每条商品记录,使用“商品”类的new操作构建一个“商品”对象,形成一个List,返回给相应的边界类,边界类对其加以展示

另一个办法:在领域模型中增加一个实体类“商品清单”,其中包含了所有的“商品”对象。这样的话,“通过关键字查询”就成了该实体类的一个操作
问题在于:需要在系统初始化时就将该实体类构造出来,否则无法被使用;这明显是不可能的,占用内存空间太大

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值