领域模型初步认识
领域模型是常见的业务建模过程中的一个重要制品,那么领域模型在UP中制品地位如何?请看下图。
<img src=”https://raw.githubusercontent.com/JoshuaQYH/blogImage/master/img/20190524105602.png"/ align=’center’>
下面给出一个实例,我们从下图可知道,领域建模通常可以用UML类图的形式来表达。我们通常会提炼出领域内的几个重要概念类。
而确定一组概念类则是面向对象分析的核心。
我们可以看到,领域模型涵盖了概念,关联和属性,是一种可视化的字典。
概念:描述概念类的名称
属性:概念类包含的属性
关联:表示不同概念类之间的关联关系
领域模型的概念
概念类是领域模型中的一个核心组件。表示领域中的思想,事物或对象。

我们必须认识的是,领域建模虽然使用了UML类图来进行设计,但是领域模型却不是设计模型,是一种业务模型,它对设计模型有所启发。

创建领域模型
找到概念类

概念类名必须是名词 。
经过一番查找,我们可以大致确定一些概念类,并简单绘制。

确定属性
一个对象里头包含的值就是属性。属性有普通属性和推导属性。
关于推导属性的界定,我们可以通过一个例子来理解。
比如在前端开发中,对于用户可见的一些数值,有时是需要在后端经过较为复杂的计算得到的,这些数值对应的属性就是推导属性。

确定描述类
在“描述”类的过程是简化一个类的过程。
以下给出一个简单的实例:

简单来说就是一个类里头如果有某一个属性较为复杂,那么我们就可以将这个属性抽象建模为一个新的描述类,搭配原来的类来对对象进行描述。
确定关联
关联表示的是类之间的关系,表示有意义或值得关注的连接,但是我们应该避免加入大量关联。
关联的可视化形式是类之间的一条连线,同时有以首字母大写的关联名称。
关联名称
名称的命名规则需要注意:以“类名 + 动词短语 + 类名”的格式命名。(但有时并不这样命名。。)

关联的多重性
应用关联线的时,我们需要明确关联两个类之间的多重性。

在某些复杂的情况之下,两个类还有多重关联。
