第7讲模式与对象设计内容摘要:

是一种表示用例实现的通用的语言 上海交通大学计算机科学与工程系 2020/11/23 75 : S y s t e me n t e r I t e m( i d , q u a n t i t y )e n d S a l e ( )m a k e P a y m e n t( a m o u n t )P r o c e s s S a l e1 . C u s t o m e ra r r i v e s . . .2 . C a s h i e rm a k e s n e ws a l e .3 . C a s h i e re n t e r s i t e mi d e n t i f i e r .4 . . . .U s e C a s e sS y s t e m S e q u e n c e D i a g r a msO p e r a t i o n : e n t e r I t e mP o s t c o n d i t i o n s : A S a l e s L i n e I t e m i n s t a n c es l i w a s c r e a t e d . . .O p e r a t i o n : m a k e N e w S a l eP o s t c o n d i t i o n s : . . .C o n t r a c t sm a k eN e w S a l e ( ): C a s h i e rS a l ed a t e. . .S a l e sL i n e I t e mq u a n t i t y1 . .*1. . .. . .d o m a i n o b j e c t ss y s t e me v e n t ss y s t e mo p e r a t i o n st h e d o m a i n o b j e c t s , a t t r i b u t e s , a n da s s o c i a t i o n s t h a t u n d e r g o s t a t e c h a n g e sD o m a i n M o d e lU s e C a s e M o d e ls o m e i d e a s a n d i n s p i r a t i o n f o r t h e p o s t c o n d i t i o n s d e r i v e f r o m t h e u s e c a s e sD e s i g n M o d e l: R e g i s t e re n t e r I t e m( i t e m I D , q u a n t i t y ): P r o d u c t C a t a l o gs p e c : = g e t S p e c i f i c a t i o n ( i t e m I D )a d d L i n e I t e m ( s p e c , q u a n t i t y ): S a l e. . .i n a d d i t i o n t o t h e u s ec a s e s , r e q u i r e m e n t s t h a tm u s t b e s a t i s f i e d b y t h ed e s i g n o f t h e s o f t w a r eu s e c a s er e a l i z a t i o nc o n c e p t u a lc l a s s e s i nt h ed o m a i ni n s p i r e t h en a m e s o fs o m es o f t w a r ec l a s s e s i nt h e d e s i g nm a k e N e w S a l e ( )c r e a t e ( )e n d S a l e ( ). . .. . .S a m p l e U P A rt i f a c t R e l a t i o n s h i p s f o r U s e C a s e R e a l i z a t i o n上海交通大学计算机科学与工程系 2020/11/23 76 协同图( Collaboration Diagrams) 可以用于显示用例实现 :Register enterItem() :Register endSale() :Register makePayment() 1: ???() 1: ???() 1: ???() :Register makeNewSale() 1: ???() 上海交通大学计算机科学与工程系 2020/11/23 77 顺序图 : R e g i s t e re n t e r I t e m( i t e m I D , q u a n t i t y ): P r o d u c t C a t a l o gs p e c : = g e t P r o d u c t S p e c ( i t e m I D )a d d L i n e I t e m ( s p e c , q u a n t i t y ): S a l e. . .m a k e N e w S a l e ( )c r e a t e ( )e n d S a l e ( ). . .m a k e P a y m e n t ( . . . ). . .上海交通大学计算机科学与工程系 2020/11/23 78  or : R e g i s t e r: S a l em a k e N e w S a l e ( )c r e a t e ( ): R e g i s t e re n t e r I t e m( i t e m I D , q u a n t i t y ): P r o d u c t C a t a l o gs p e c : = g e t P r o d u c t S p e c ( it e m I D )a d d L i n e I t e m ( s p e c , q u a n t i t y ): S a l e. . .上海交通大学计算机科学与工程系 2020/11/23 79 契约和用例实现  有可能直接从用例的文字中设计用例实现  对某些系统操作而言,契约可以用于增加描述细节  契约 CO2: enterItem Operation: enterItem(ItemID: ItemID, quantity:integer) Cross References: Use Cases: Process Sale Preconditions: There is a sale underway Postconditions:  A SalesLineItem instance sli was created (instance creation)  上海交通大学计算机科学与工程系 2020/11/23 80 1: makeLineItem(...) enterItem(id, qty) : create(...) :Register :Sale :SalesLineItem Satisfy the state change of SalesLineItem instance creation 上海交通大学计算机科学与工程系 2020/11/23 81 领域模型和用例实现  选择合适的责任分配依赖于领域模型  但是用例实现可能引起领域模型的修改 上海交通大学计算机科学与工程系 2020/11/23 82 概念 vs. 设计类  领域模型可以用以启发我们在设计模型中定义软件类并据此命名 上海交通大学计算机科学与工程系 2020/11/23 83 Payment amount Sale date time Paysfor Payment amount: Money getBalance(): Money Sale date: Date startTime: Time getTotal(): Money . . . Paysfor UP Domain Model Stakeholder39。 s view of the noteworthy concepts in the domain. UP Design Model The object developer has taken inspiration from the realworld domain in creating software classes. Therefore, the representational gap between how stakeholders conceive the domain, and its representation in software, has been lowered. 1 1 1 1 inspires objects and names in conceptual classes design classes 上海交通大学计算机科学与工程系 迭代的 UseCase实现 上海交通大学计算机科学与工程系 2020/11/23 85 对象设计 : makeNewSale  makeNewSale 系统操作发生于当收银员在顾客到达后有东西要买,开始一笔新的买卖时 Contract CO1: makeNewSale Operation: makeNewSale() Cross References: Use Cases: Process Sale Preconditions: none Postconditions: A Sale instance s was created(instance creation) s was associated with the Register (association formed) Attributes of s were initialized 上海交通大学计算机科学与工程系 2020/11/23 86 选择一个控制类 依据控制者模式,下面是一些选择项 : 代表整个“系统”,设备或子系统 Register, POSSystem 代表一个用例场景中系统事件的接收者或者处理者 ProcessSaleHandler ProcessSaleSession Fa231。 ade Controller Use Case Controller 在 设计模型 中,该 Register 是一个软件对象。 它不是一个真实的物理的收银台,而是一种软件抽象,选择这个名字可以减少领域和软件概念之间的 表示鸿沟 . 上海交通大学计算机科学与工程系 2020/11/23 87 在这个案例中,由于只有少数系统操作 , Register 足够了 : R e g i s t e rm a k e N e w S a l e ( )b y C o n t r o l l e r上海交通大学计算机科学与工程系 2020/11/23 88 创建新 Sale 软件对象 Sale 必须被创建 : Creator 模式 谁来创建它呢 ?  Register : 创建它,然后与之关联 当 Sale 创建后,它必须创建一个空的集合,以记录所有的将来要被添加的 SalesLineItem 实例 上海交通大学计算机科学与工程系 2020/11/23 89 :Register makeNewSale() :Sale create() Register creates a Sale by Creator create() :Sales LineItem by Creator, Sale creates an empty multiobject (such as a List) which will eventually hold SalesLineItem instances CAUTION: This is not a SalesLineItem instance. This is a collection object (such as a List) that can hold SalesLineitem objects. by Creator an。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。