Chapter 18 使用 GRASP的对象设计示例98 ●●●●● ●●●● ●●。●●
Chapter 18 使用GRASP的对象设计示例
●●● ●●●●● ●●●● 大纲 ●●●● ●●●● ●●0● ●用例实现 ●应用 GRASP为类分配职责 ●应用UML阐述和思考对象的设计
大纲 ⚫ 用例实现 ⚫ 应用GRASP为类分配职责 ⚫ 应用UML阐述和思考对象的设计
●●● 什么是用例实现 ●●●●● ●●●● ●●●●● ●●●● ●●0● 用例如何在设计模型中实现 ystem as black box the name could be "NextGenPOS"but"System"keeps it the":and underline imply an instance, and are explained in a ater chapter on sequence diagram notation in the UML Process sale Scenario Cashier makeNewsale a UML loop oop丿 more items interaction enterltem (itemID, quantity) a boolean guard expression description, total end sale ssociated with the it is an abstraction previous message representing the an abstraction that ystem event of make Payment(amount). some mechanism the return line is change due, receipt not returned
什么是用例实现 ⚫ 用例如何在设计模型中实现 enterItem(itemID, quantity) : Cashier :System endSale makePayment(amount) a UML loop interaction frame, with a boolean guard expression external actor to system Process Sale Scenario system as black box the name could be "NextGenPOS" but "System" keeps it simple the ":" and underline imply an instance, and are explained in a later chapter on sequence diagram notation in the UML a message with parameters it is an abstraction representing the system event of entering the payment data by some mechanism description, total return value(s) associated with the previous message an abstraction that ignores presentation and medium the return line is optional if nothing is returned total with taxes change due, receipt makeNewSale loop [ more items ]
●●● ●●●●● ●●●● 系统事件 ●●●● ●●●● ●●0● makeNewSale, etc, are the system operations from the SSD each major interaction diagram starts with a system operation going into a domain layer controller object, such as Register makeNewSale Register ??? Window objects GUI widget objects enterltem Registe 1:??? Web control objects endSale -+ Register 1:??? makePayment Register 1:??? UI LAYER DOMAIN LAYER
系统事件 :Register enterItem :Register endSale :Register makePayment 1: ??? 1: ??? 1: ??? :Register makeNewSale 1: ??? makeNewSale, etc., are the system operations from the SSD each major interaction diagram starts with a system operation going into a domain layer controller object, such as Register UI LAYER DOMAIN LAYER Window objects or GUI widget objects or Web control objects . .
●●● ●●●●● ●●●● 用例实现 ●●●● ●●●● ●●0● makeNewSale create Sale Window objects GUI widget objects Web control objects Register ProductCatalog enterltem(…) desc getProductDesc( itemID LAYER DOMAIN LAYER
用例实现 : Register : Sale makeNewSale create : Register enterItem(...) : ProductCatalog desc = getProductDesc( itemID ) . . . UI LAYER Window objects or GUI widget objects or Web control objects . . . DOMAIN LAYER
●●●●● ●●●● Records-sale-of ●●●●● ●●●● Described-b ●●0● Product Product Specificati pnce itemID Used-b Describ Sales Lineltem Store tem name 1 Contained-In Logs- completed 1 Houses Sale Started-by Manager time Paid-b itiated-by 4 Records-sales-on Payment Customer Ca ashier
领域模型
●●● ●●●●● ●●●● 如何实现 make Newsale ●●●●● ●●●● ●●0● ●契约(后置条件) ●创建了Sae的实例s ●s被关联到 Register s的属性被初始化 选择控制器 类型1还是类型2?
如何实现makeNewSale ⚫ 契约(后置条件) ⚫ 创建了Sale的实例s ⚫ s被关联到Register ⚫ s的属性被初始化 ⚫ 选择控制器 ⚫ 类型1还是类型2?
●●● ●●●●● ●●●● 如何实现 make Newsale ●●●● ●●●● ●●0● by creator and Controller Register creates a Sale by creator by Creator, sale Registe reates an empt collection(such as a List) which wil‖l eventually hold Saleslineltem makeNewSale instances create create lineltems List this execution specification is implie within the constructor of the sale instance
如何实现makeNewSale :Register makeNewSale :Sale create Register creates a Sale by Creator create lineItems : List by Creator, Sale creates an empty collection (such as a List) which will eventually hold SalesLineItem instances by Creator and Controller this execution specification is implied to be within the constructor of the Sale instance
●●●●● ●●●● 如何实现 enterltem ●●●●● ●●●● ●●0● the name could be "NextGenPOS"but"System"keeps it the":and underline imply an instance, and are explained in a ater chapter on sequence diagram notation in the UML Process sale Scenario Cashier makeNewsale a UML loop oop丿 more items interaction enterltem (itemID, quantity) a expression description, total end sale ssociated with the it is an abstraction previous message representing the an abstraction that ystem event of make Payment(amount). not returned
如何实现enterItem enterItem(itemID, quantity) : Cashier :System endSale makePayment(amount) a UML loop interaction frame, with a boolean guard expression external actor to system Process Sale Scenario system as black box the name could be "NextGenPOS" but "System" keeps it simple the ":" and underline imply an instance, and are explained in a later chapter on sequence diagram notation in the UML a message with parameters it is an abstraction representing the system event of entering the payment data by some mechanism description, total return value(s) associated with the previous message an abstraction that ignores presentation and medium the return line is optional if nothing is returned total with taxes change due, receipt makeNewSale loop [ more items ]
●●● ●●●●● ●●●● 如何实现 enterltem ●●●● ●●●● ●●0● ●契约(后置条件) ●创建了 Sales lineltem的实例sli ●s被关联到当前的Sa|e ● sli quantity!赋值为 quantity 基于temD的匹配,s被关联到 ProductDescription ●控制器类的选择
如何实现enterItem ⚫ 契约(后置条件) ⚫ 创建了SalesLineItem的实例sli ⚫ sli被关联到当前的Sale ⚫ sli.quantity赋值为quantity ⚫ 基于itemID的匹配,sli被关联到ProductDescription ⚫ 控制器类的选择