领域模型是作为设计软件对象的启发来源,也是后续工件的必须输入。
领域模型是说明问题域里(对建模者来说)有意义的领域类,它是面向对象分序的时候要创建的最重要的工作(必须说明,用例虽然也是一个重要的分析工作,但它并不是面向对象的,它是强调的概念的过程视图)。
一、领域建模的思想及其方法学问题
什么是“问题域”和“领域建模”?
问题域:
现实世界中系统所要解决问题的领域为“问题域”,如“银行业务”属于“银行的问题域”。
领域建模:
1.我们设计一个系统,总是希望它能解决一些问题,这些问题总是会映射到现实问题和概念。
2,对这些问题进行归纳、分析的过程就是领域建模(这个域,指的就是问题域)。
建立领域模型的好处:
1,通过建立领域模型能够从现实的问题域中找到最有代表性的概念对象
2,并发现出其中的类和类之间的关系,因为所捕捉出的类是反馈问题域本质内容的信息。
经典的面向对象的分析或调研的步骤,是把一个相关的领域,分解为单个领域类或者对象(是一个我们能够理解的概念)。
领域模型是领域类或者是我们感兴趣的现实对象的可视化表示。
它们也被称之为:概念模型、领域对象模型、分析对象模型等。
在UML中,领域模型是不定义操作(方法)的一组类图来说明,它主要表达:
1, 领域对象或者领域类
2, 领域类之间的关联
3, 领域类的属性
属性用以表达对象的状态。
(1)三种领域类
1,边界对象:参与者使用该对象与系统进行交流,也即边界对象代表系统的内部工作和它所处环境之间的交互。
边界对象将系统的其它部分和外部的相关事物隔离和保护起来。其主要的责任是:输入、输出和过滤。
2,实体对象:代表要保存到持续存储体中的信息。实体类通常用业务域中的术语命名。
通过它可以表达和管理系统中的信息。在模型中,系统中的关键概念以实体对象来表现。其主要的责任是:业务行为的主要承载体
3,控制对象:它协调其他类的工作,每个用例通常有一个控制类,控制用例中的时间顺序。
它可能是与其它对象协作以实现用例的行为,控制类也称管理类。其主要的责任:控制事件流,负责为实体类分配责任
有四个规则对应上面的三种分析类对象间的交互
1,用例的参与者只能与边界对象交互(这相当于结构化分析里面的自动化边界)
2,边界对象只能与控制对象和动作者交互(即不能直接访问实体对象)
3,实体对象只能与控制对象交互
4,控制对象可以和边界对象交互,也可以和实体交互,但是不能和动作者交互
三种领域类的UML的图示如下:
(2)领域建模的简单例子
下面举个简单的例子,说明领域建模的基本概念。
1)问题的描述
例如:两个领域类Payment(支付)Sale(售出)在领域模型中以一种有意义的方式关联。
2)关键概念
仔细考察上面的图,可以看出,领域模型实际上是可视化了领域中的单词或领域类,并且为这些单词建立了领域类。
也就是说,领域模型是抽象了一个可视化字典。
模型展现了部分视图或抽象,而忽略了建模者不感兴趣的细节。
它充分利用了人类的特点—大脑善于可视化思维。