- 1
- 0
- 约1.15千字
- 约 24页
- 2026-02-11 发布于北京
- 举报
;第十二章构建领域模型;领域建模是我们初探面向对象世界的开端。
;细化
是一般项目中最初的一系列迭代。
对核心、有风险的软件架构进行编程和测试
发现并稳定需求的主体部分
规避主要风险
;什么是领域模型;理解
UP领域模型是UP业务对象模型(BOM)的特化,专用于解释业务领域中重要的“事务”和产品。
领域模型可以被描述成一组没有定义操作的类图(UML表示法)。它提供了概念透视图。
领域对象或概念类
概念类之间的关联
概念类的属性;银行领域模型的例子
任何一个银行“账户”(这里没有详细分类)可能与多个“凭证”相关;
具体而言,凭证可以是银行卡、存折、存单等形式;
任何凭证都有明确的生效起始日和终止日;
但各种凭证的凭证号却不是统一的,比如存折和信用卡有不同的编号格式。;领域模型与数据模型的区别
领域模型不是数据模型。
数据模型的实体对象是通过对数据模型的定义,来表示存储于某处的持久性数据。
在领域模型中,并不会排除需求中没有明确要求记录其相关信息的类,也不会排除没有属性的概念类。
在领域模型中没有属性的概念类是合法的,或者在领域内充当单纯行为角色而不是信息角色的概念类也是有效的。;
创建领域模型几个步骤
寻找(识别)类
筛选类
确定关系
识别类的属性
以当前迭代中的需求为界;类的识别;分类列表举例;确定名词短语;;筛选类;操作
描述某个类职责的名词自身不是一个类,而是一个操作。如税额计算。
角色
描述一个特定实体的状态或其分类的名词多半不是一个类。例如,“最佳顾客”是一个顾客在一定时间下的状态。
事件
描述特定时间频率的名词,通常表示了领域必须支持的一个动态元素。例如,“每星期打印一次发票”中的“星期”就不是候选类。
实现结构
描述硬件元素或算法的名词最好是删除或指派为某个类的操作。例如,“打印机”和“复利叶算法”。;;关系;添加关联的注意事项
立即给关联制定多重度,确保每个关联都有明确的多重度
不对用例和时序图进行研究,就将操作分配给类
在确保已满足用户需求之前,对代码进行优化以提高重用性
对于每个“……部分(part-of)”关联,就使用聚集还是组合而争论不休
未对问题空间进行建模之前,就假定一种具体的建模策略
在领域类和关系型数据库表之间建立一对一的映射
过早地执行“模式化”,这将导致根据同用户问题毫无关系的模式创建解决方案;整理后的结果;识别属性;3.每条属性都能够回溯到用户的需求
不要盲目添加不必要的属性,造成系统混乱
4.类的属性要适当。
若某个类的属性太多,则可考虑分解成更小的类
若某个类的属性太少,可考虑将类进行合并;完成分析模型;谢谢大家!
原创力文档

文档评论(0)