类模型-领域类映射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类模型-领域类映射相关的知识,希望对你有一定的参考价值。

第一步,照猫画虎

    首个要解决的问题是:类从哪里来?

    从上一章中总结的领域模型关系图中可以看到,这些领域对象基本上就是我们所需要的类,只是有些映射到软件类后并不是系统真正参与的类,所以要剔除掉。

    领域类是需求涉及的业务的概念,软件类是软件系统内部的概念。

    以POS机为例,顾客这个领域类可以剔除,因为它是业务流程中的一个重要参会者,但它不是POS机内部需要实现的一个实体。POS机业务中,顾客甚至不会和POS机直接交互。站在POS机软件系统角度上,顾客和POS机没有任何关系。

    键盘、屏幕、扫码枪这些是硬件组成部分,不是软件组成部分,也可以剔除。假设屏幕显示要求是既可以图形界面,也可以字符界面,那么软件系统就要处理这种逻辑,此时,屏幕就是软件系统的一组成部分,就需要从领域类转换成软件类。

    接下来的工作就是细化了,首先:

        【名称映射】 根据领域类的名称,起个合适的软件类名称。

        【属性映射】 根据领域类的属性来设计软件类的属性,基本上可以理解为照搬。

        【提炼方法】 由于领域类中没有方法,因此根据用例模型中涉及到的“动词”来提炼方法。

        【筛选】我们可以从用例模型中找到很多的方法,找出来后,我们要筛选掉不属于软件类的方法。

        【进阶提炼】例如:我们可以看到方法中有“扫描”、“手动输入条形码”这两个动作。首先用例模型中,这两个动作都是收银员的动作,但提炼到软件类中它俩则不属于收银员,而是属于扫码枪和键盘提供的功能,收银员只是借助这两个工具来实现。另外,这两个的动作虽然不一样,但都是向系统中“增加交易产品”,因此可以提炼出一个动作,就是“增加交易商品”这个动词。提炼这些动词的精确度和完善度是和人员的经验有关的,要加强抽象的思维。

        【分配】将提炼出来的动词,分配到合适的类中。这个也是跟经验很有关系。分配之后的得到如下软件类关系图:

 

以上是关于类模型-领域类映射的主要内容,如果未能解决你的问题,请参考以下文章

从实体框架映射到自定义域模型类?

业务领域建模Domain Modeling

UML和模式应用5:细化阶段--如何创建领域模型

java 领域和改造的Android模型类示例2。

EntityFramework Code-First 简易教程-------领域类的配置

EF工作流程