Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 18 使用GRASP的对象设计示例.

Similar presentations


Presentation on theme: "Chapter 18 使用GRASP的对象设计示例."— Presentation transcript:

1 Chapter 18 使用GRASP的对象设计示例

2 大纲 用例实现 应用GRASP为类分配职责 应用UML阐述和思考对象的设计

3 什么是用例实现 用例如何在设计模型中实现

4 系统事件

5 用例实现

6 领域模型

7 如何实现makeNewSale 契约(后置条件) 选择控制器 创建了Sale的实例s s被关联到Register s的属性被初始化
类型1还是类型2?

8 如何实现makeNewSale

9 如何实现enterItem

10 如何实现enterItem 契约(后置条件) 控制器类的选择 创建了SalesLineItem的实例sli sli被关联到当前的Sale
sli.quantity赋值为quantity 基于itemID的匹配,sli被关联到ProductDescription 控制器类的选择

11 如何实现enterItem

12 用代码表示对象的协作? Register::enterItem(id, qty){
ProductDescription desc = ProductCatelog.getInstance().get(id); currentSale.makeLineItem(desc,qty); }

13 修改后的设计类图

14 如何实现endSale 契约(后置条件) Sale.isComplete被设为真 控制器的选择

15 计算销售总额

16 如何实现makePayment 契约(后置条件) 创建了Payment的实例p p.amountTendered被赋值为amount
p被关联到当前的Sale 当前的Sale被关联到Store

17 如何实现makePayment

18 记录Sale

19 记录Sale

20 计算余额

21 最终的DCD

22 比较 SaleTable RegisterTable

23 比较 Service_3 Service_n

24 如何将UI层连接到业务层 获取业务对象的方法 从应用的入口方法(如main方法)创建业务层的 “根”对象,并传递给UI。
从工厂对象取得业务对象。

25 启动应用(代码) public class Main { public static void main(String[] args)
Store store = new Store(); Register register = store.getRegister(); ProcessSaleJFrame frame = new ProcessSampleJFrame(register); }

26 启动应用(交互图)

27 UI层获取合计额的设计


Download ppt "Chapter 18 使用GRASP的对象设计示例."

Similar presentations


Ads by Google