领域模型的概念
领域模型Domain Model 又叫做业务对象模型,是用于描述用例实现的对象模型,是对业务角色与业务实体之间应该如何联系和协作以执行业务的一种抽象。领域模型是面向对象分析的重要一环,也是在一个领域内若干概念类的可视化表述。
混淆点
- 领域模型是对概念类进行建模,是在特定场景下有实际含义的类,而不是在编程层面上的具体类。
- 不需要在概念建模中过度追求精确,只需要正确表示出概念类以及概念类间的抽象关系。
- 不需要过度建模,过分的细化反而会增加系统的复杂程度,所花费的时间与回报不成正比。
- 不需要涉及实际的系统架构,如具体的数据库对象等不应该出现在领域模型中。
构造领域模型的基本步骤
寻找概念类
一般来说,可以从已有的模型入手,如用例文本等,着眼于其中的名词,如思想、事物或对象。在这之后,可以对这些名词进行适当的拓展或筛选,如某些事物过于复杂,其子成员/属性不是简单的数字或文本,我们就应当提取出这些属性,独立称概念类。如商店下的商品。而那些不在当前考虑范围内,或者不需要在系统实现中涉及的名词或对象,我们就不需要在领域模型中考虑,如对银行系统建模,利润这一名词不需要建立概念类。将概念类用UML中的类图进行表述
- 一个简单的类以一个矩形加类名表示
- 类名下增加一条横线,往下可以增加属性
- 抽象类以斜体表示
- 一个简单的类以一个矩形加类名表示
在概念类之间增加必要的联系association
- 确保这些联系是有意义的
- 不需要增加过多的联系,尽可能地保持简洁
- 概念类之间的联系,未必就是编程层面的具体联系,它只是表示一种意义上的在实体领域中的抽象联系。
- 名称需要首字母大写,一般以类名-动词短语-类名的格式来命名。
如Paid-by Is-on 关于多重性Multiplicity
用于描述两个类之间的数量关系
若一个关联涉及具体的方向,可以添加黑色小三角表明方向
在概念类内增添必要的属性attributes
- 只需要记录那些需要被保存的信息。
- 可以只包含属性,不包含类型(不是完整的类图)