第6讲从需求到设计内容摘要:

海交通大学计算机科学与工程系 2020/11/4 64 连接和消息 : Register : Sale msg2() msg3() msg1() msg4() msg5() 上海交通大学计算机科学与工程系 2020/11/4 65  由一个对象发送给自己的消息 : R e g is t e rm s g 1 ( )c le a r ( )上海交通大学计算机科学与工程系 2020/11/4 66  对象创建标记 : R e g i s t e r : S a l em a k e P a y m e n t ( c a s h T e n d e r e d ): P a y m e n tc r e a t e ( c a s h T e n d e r e d )a u t h o r i z e ( )n o t e t h a t n e w l y c r e a t e do b j e c t s a r e p l a c e d a t t h e i rc r e a t i o n h e i g h t a n o b j e c t l i f e l i n e s h o w s t h e e x t e n t o ft h e l i f e o f t h e o b j e c t i n t h e d i a g r a m上海交通大学计算机科学与工程系 2020/11/4 67  对象生命线和对象的销毁 : Sale : Payment create(cashTendered) ... the 171。 destroy187。 stereotyped message, with the large X and short lifeline indicates explicit object destruction 171。 destroy187。 X 上海交通大学计算机科学与工程系 2020/11/4 68  条件消息 ca lculate: Ba ryyxx[ co lor = r ed ]opt: Fo o上海交通大学计算机科学与工程系 2020/11/4 69  互斥条件消息 : B: Ac a lcu latedoX: Cc a lcu late[ x 10 ]a lt[ e lse ]上海交通大学计算机科学与工程系 2020/11/4 70  单个消息的迭代 st = getSubtotal lineItems [ i ] : SalesLineItem t = getTotal [ i lineItems . size ] loop : Sale This lifeline box represents one instance from a collection of many SalesLineItem objects . lineItems [ i ] is the expression to select one element from the collection of many SalesLineItems。 the „i” value refers to the same “i” in the guard in the LOOP frame an action box may contain arbitrary language statements ( in this case , incrementing „i‟ ) it is placed over the lifeline to which it applies i ++ 上海交通大学计算机科学与工程系 2020/11/4 71  一系列消息的迭代 : Simulator : Random hours := nextInt() runSimulation() : Programmer work( hours ) * [i:=1..N] eat() 上海交通大学计算机科学与工程系 2020/11/4 72 inte r a c ti o n oc c u r r e n c en o te it co v e r s a s e t o f li feline sn o te tha t the sd f r a me i t r e late s t o h a s t h e sa me l if e li n e s : B an d CdoA: A : B : CdoBs d Au t h e n t ica t e Us e rr e fA u the n ti c a teU s e ra u the n ti c a te ( id )doXdoM 1: B : Ca u the n ti c a te ( id )doM 2r e fDo F o os d Do F o odoX: B : CdoYdoZ上海交通大学计算机科学与工程系 5. UML类图 Chapter 16 上海交通大学计算机科学与工程系 2020/11/4 74 类的表示  类的图形表示:  它是分为 三个分隔区 ( partment)的长方形。 其中 :  顶端的分隔区为类的名字,下面两个分隔区为可省略的,分别可以列出类的 属性和操作 上海交通大学计算机科学与工程系 2020/11/4 75 CBmpViewerData+ m_x0+ m_y0+ m_w0+ m_h0+ m_x1+ m_y1+ m_w1+ m_h1+ m_hDib m_bSelected+ CBmpViewerData()+ SetDIBHandle()+ ~CBmpViewerData()+ IsCursorInsideImage()+ SetSelFlag()+ GetSelFlag()+ SetNewPosition()+ GetNewPosition()( f r o m b m p v i e w e r )上海交通大学计算机科学与工程系 2020/11/4 76 类的命名  类的名字是每个类所必有的构成,用于和其它类相区分  类的名字可分为  简单名字 :简单名字是一个不包含冒号的字串  复杂名字 (路径名字 ):路径名是简单名字前面加上一个包含此类的所在的模型包的名字,这两个名字之间用两冒号隔开 Temperature Sensor Wall Business Rules::FraudAgent java::awt::Rectsngle 简单名字 路径名字 上海交通大学计算机科学与工程系 属性 上海交通大学计算机科学与工程系 2020/11/4 78 属性的概念 /1  类不是孤立存在的,它的对象将参与 一个或多个交互  类捕获了系统实现方案中的概念或词汇,使得类代表某一类特定事物,具备特定的语义  类的语义是对此对象代表的事物的性质的描绘,通过对事物性质 的描绘,可以记录对象在交互过程中状态的变换,并可进一步决定对象 在此状态下的行为  例如:在基于窗口操作的操作系统中,处理窗口的对象描述窗口的尺寸、位置,类型等性质,窗口的性质的不同取值又可以决定系统对鼠标操作的不同响应方式。 上海交通大学计算机科学与工程系 2020/11/4 79  类的属性,它是类的一个组成部分,描述了类在软件系统中代表的事物 所具备的特征  属性的定义  在 UML里,属性是类的一个 具名的构成 ( named property),它描述了此构成在类的实例中能具备的取值范围  根据定义:  类的属性 首先是类的一个组成部分;  其次,类每个属性都必须有一个 名字 , 以区别于类的其它属性。 为了定义属性的取值范围,必须为属性指定类型。 例如:  布尔类型的属性可以取两个值: TRUE和 FALSE;  字节型的属性只能取 256个值  当一个类的属性被完备地定义后,它的任何一个对象的状态都被这些属性的特定取值所决定 上海交通大学计算机科学与工程系 2020/11/4 80  属性的图形表示:  类的属性被列在其中的第二个分隔区中  属性分隔区是可省略的  当属性分隔区未被省略时:  属性的名字必须出现  属性的名字后面是它的类型  类型和名字之间用冒号( :)分隔 上海交通大学计算机科学与工程系 2020/11/4 81  属性的 初始值 :  当类的一个对象被创建 ,它的各个属性就开始有特定的状态。 有时,对象的 初始状态 对此对象参与的交互是有意义的。 这时,有必要在对象的类中定义其对象的属性的 初始值  初始值的图形表示 类的属性的初始值在属性的类型的后面指定 初始值和类型之间用等号( =)分隔 属性的初始值是 可选 的 当未为属性指定初始值时,属性的初值是不确定的 上海交通大学计算机科学与工程系 2020/11/4 82  除了属性的名字之外,属性的其它描述都是可省略的,包括:  类型、初值、可见性 CBmpViewerData+ m_x0+ m_y0+ m_w0+ m_h0+ m_x1+ m_y1+ m_w1+ m_h1+ m_hDib m_bSelected+ CBmpViewerData()+ SetDIBHandle()+ ~CBmpViewerData()+ IsCursorInsideImage()+ SetSelFlag()+ GetSelFlag()+ SetNewPosition()+ GetNewPosition()( f r o m b m p v i e w e r )上海交通大学计算机科学与工程系 操作 上海交通大学计算机科学与工程系 2020/11/4 84 操作的概念  对象在交互中,存在着 消息的交换  消息是一个对象向另一个对象发送请求其提供服务的指令  一个对象 接收的各个不同的消息 ,构成了此对象的类能提供的 服务 的集合。  类的操作就是对这些服务的具体规定,包括  接收服务请求的格式  以及类对合法请求所能提供的有效的服务的承诺  如果把操作映射到 C++语言,则操作就是 C++的类的成员函数 上海交通大学计算机科学与工程系 2020/11/4 85  操作的定义:  操作是一个类所能提供的 服务的实现 ,此服务能被请求,以改变提供服务的类的对象的状态或为服务的请求者返回一个值  一个类的操作被定义后,它的任何一个对象都能提供此操作所定义的服务  操作  必须有一个名字  可以有参数表  可以有返回值 上海交通大学计算机科学与工程系 2020/11/4 86  按照操作的定义,类的操作所提供的服务可以分为两类  一类是 操作的结果 引起了 对象状态的改变 ,状态的改变也包括相应的动态行为的发生  另一类是 为服务的请求者 提供 返回值 例如:执行特定的计算,并把结果返回给请求者  操作的图形表示:  操作被列在属性最下部的分隔区里  操作分隔区是可隐藏的  如果操作分隔区未被隐藏,则操作的名字必须列出,名字后面必须有一对括弧以表示此名字是操作的名字 上海交通大学计算机科学与工程系 2020/11/4 87 C B m p V i e w e r D a t a+ C B m p V i e w e r D a t a ( ) : C B m p V i e w e r D a t a+ S e t D I B H a n d l e ( h D i b : H A N D L E = N U L L , w : i n t = 0 , h : i n t = 0 ) : H A N D L E+ ~ C B m p V i e w e r D a t a ( )+ I s C u r s o r I n s i d e I m a g e ( x : i n t = 3 2 7 6 7 , y : i n t = 3 2 7 6 7 ) : B O O L+ S e t S e l F l a g ( b S e l e c t e d : B O O L = T R U E ) : B O O L+ G e t S e l F l a g ( ) : B O O L+ S e t N e w P o s i t i o n ( x 0 : i n t , y 0 : i n t , w 0 : i n t , h 0 : i n t , x 1 : i n t , y 1 : i n t , w。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。