需求分析模型:包括用例模型、领域模型、系统顺序图、操作契约、设想、词汇表、补充性规格说明等 1、 需求分析模型 需求分析模型:包括用例模型、领域模型、系统顺序图、操作契约、设想、词汇表、补充性规格说明等
目标:表达参与者使用系统做什么 其中用例模型建模包括: 参与者与用例,并使用用例图表达 用例文本描述 1.1、 用例模型(迭代进化) 目标:表达参与者使用系统做什么 其中用例模型建模包括: 参与者与用例,并使用用例图表达 用例文本描述
1.1.1用例图 主成功场景: 1、系统提示玩家进入自己的轮次; 2、玩家roll Dice,根据当前dice的和来移动自己的位置, 如果第二次值还一样,则有地三次机会,但如果第三次还相同,则会被关进监狱。 3、玩家移动当前位置后,由当前方格属性来决定玩家的奖惩, 3.1 如果是incomeTaxSquare,就需要向银行缴纳$2000,000或自己财产的10%。 3.2 扩展场景:
1.2 领域模型 第一个面向对象的最重要的制品
目标 一、确定领域中相关的概念类, 二、创建初始的领域模型, 三、为模型建立适当的属性和关联 四、精化:增加关联和泛化
1.2 初始的领域模型--第一次迭代
1.3系统顺序图(应包括操作契约)--第一次迭代
2逻辑架构--分层与子系统设计--包图表达架构
2逻辑架构--分层设计
3、对象设计建模的动态与静态模型表达
3、对象设计建模的动态与静态模型表达--CRC卡片
3.1基于职责设计对象 在面向对象设计中,创建类实例是基本任务之一--那么某一对象应该由哪个对象负责实例化呢 --创建者模式
Dice和Board、Square、玩家分别由谁负责实例化呢?
Fig. 17.4
Fig. 17.5
Fig. 17.12
Fig. 17.13
Fig. 17.18谁来创建payment对象,难道Register?
Fig. 17.19谁来创建payment对象,当然Sale 考虑创建者模式和低耦合模式
3.1基于职责设计对象 在面向对象设计中,有了对象,那这个对象应该分配哪些职责呢? --信息专家模式
Fig. 17.5
Fig. 17.6
谁负责控制游戏轮回?
每个轮回中,谁来负责每个玩家的轮次?
玩家在玩轮次中需要和谁协作?
当前的静态设计
创建者模式的应用
Fig. 17.16
Fig. 17.17
创建者、信息专家?
3.1基于职责设计对象 在面向对象设计中,有了对象,那这个对象应该分配哪些职责呢?--不要把自己的职责推给别人做,这样会增加新的不必要的对象或者给其他对象增加不必要的职责,使得其他对象在实现其职责时仍然要回头找自己 --低耦合模式
Fig. 17.7
3.1基于职责设计对象 简单分层架构中有UI层和领域层,如果从UI层发送请求直接给领域层对象,那么两者之间的耦合比较紧--控制器模式--专门设计一个控制器来接收界面请求,然后向领域层转发请求,是一个中间枢纽对象,一般一个子系统或一个用例对应一个控制器对象
Fig. 17.8
谁做控制器 它做控制器
谁做控制器 它做控制器
控制器是从界面到领域层的一个外观对象 界面只看到控制器,看不到领域层对象
外观控制器 用例控制器
java的富客户端
3.1基于职责设计对象 自己完成所有任务,还是分配给合适的对象协作完成任务--高内聚模式--一个对象只完成自己应该完成的职责,因为他只知道这些,如果每个对象都这样,那么每个对象的职责单一,不越权、不偷懒,这就是高内聚模式
高内聚模式
不同的方格--领域模型改进,应用多态--共同点与变化点分析 第二次迭代 不同的方格--领域模型改进,应用多态--共同点与变化点分析
不同的方格--领域模型改进,应用多态--共同点与变化点分析 第二次迭代 不同的方格--领域模型改进,应用多态--共同点与变化点分析
不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入起点方格的情形 第二次迭代 不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入起点方格的情形
不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入Regular方格的情形--Freepark 第二次迭代 不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入Regular方格的情形--Freepark
不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入Incometax方格的情形 第二次迭代 不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入Incometax方格的情形
不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入GotoJail方格的情形--进入监狱 第二次迭代 不同的方格--领域模型改进,应用多态--共同点与变化点分析--进入GotoJail方格的情形--进入监狱
纯虚构--使用虚构的概念解决紧耦合和低内聚问题
纯虚构--使用虚构的概念解决紧耦合和低内聚问题
Fig. 25.2
Fig. 25.3
Fig. 25.4
Fig. 25.5
Fig. 25.6
Fig. 25.7
Fig. 25.8
Fig. 25.9
--如何设计对象、子系统和系统,使其内部的变化和不稳定性不会对其他对象产生不良影响--副作用-----变化点和共同点分析 防止变异 --如何设计对象、子系统和系统,使其内部的变化和不稳定性不会对其他对象产生不良影响--副作用-----变化点和共同点分析 在分析得到共同概念后,运用接口或抽象类来封装这些共同概念,对于这些共同概念的具体变化点使用具体类来封装变化。