二、类模型-领域类映射
第一步,照猫画虎
首个要解决的问题是:类从哪里来?
从上一章中总结的领域模型关系图中可以看到,这些领域对象基本上就是我们所需要的类,只是有些映射到软件类后并不是系统真正参与的类,所以要剔除掉。
领域类是需求涉及的业务的概念,软件类是软件系统内部的概念。
以POS机为例,顾客这个领域类可以剔除,因为它是业务流程中的一个重要参会者,但它不是POS机内部需要实现的一个实体。POS机业务中,顾客甚至不会和POS机直接交互。站在POS机软件系统角度上,顾客和POS机没有任何关系。
键盘、屏幕、扫码枪这些是硬件组成部分,不是软件组成部分,也可以剔除。假设屏幕显示要求是既可以图形界面,也可以字符界面,那么软件系统就要处理这种逻辑,此时,屏幕就是软件系统的一组成部分,就需要从领域类转换成软件类。
接下来的工作就是细化了,首先:
【名称映射】 根据领域类的名称,起个合适的软件类名称。
【属性映射】 根据领域类的属性来设计软件类的属性,基本上可以理解为照搬。
【提炼方法】 由于领域类中没有方法,因此根据用例模型中涉及到的“动词”来提炼方法。
【筛选】我们可以从用例模型中找到很多的方法,找出来后,我们要筛选掉不属于软件类的方法。
【进阶提炼】例如:我们可以看到方法中有“扫描”、“手动输入条形码”这两个动作。首先用例模型中,这两个动作都是收银员的动作,但提炼到软件类中它俩则不属于收银员,而是属于扫码枪和键盘提供的功能,收银员只是借助这两个工具来实现。另外,这两个的动作虽然不一样,但都是向系统中“增加交易产品”,因此可以提炼出一个动作,就是“增加交易商品”这个动词。提炼这些动词的精确度和完善度是和人员的经验有关的,要加强抽象的思维。
【分配】将提炼出来的动词,分配到合适的类中。这个也是跟经验很有关系。分配之后的得到如下软件类关系图: