交互作用图(顺序、协作)
消息规范
设置消息同步类型, 常用有简单,同步, 异步;
静态结构模型:实体类的类图
Book 1..n Title
0..1 Loan 0..n Persistent (from DB)
0..n Reservation 0..n
Borrower
• 类Title • Isbn:String • book:OID[ ]
创建时序图
时序图工具条
选择工具 文本 注释 注释指示 对象 消息 反身消息 过程调用返回的消息
对象删除
时序图中增加对象和消息
对象规范
映射类,每个对象 都应该映射到一个 类。如果要为对象 创建新的类,选择 New选项。
消息规范
可以将接受对象的 某个操作指定给消 息。指定操作后, 消息名变为所指定 的操作名
• findTitle(isbn:String):OID • 返回指定ISBN的Title对象的 OID • getTitle(oid:OID):Title • 返回Title对象 • getAvaliableBook():OID • 返回第一个可借阅的Book对 象的OID
• 类Borrower • borrowerID:String • loans:OID[ ]
创建消息:创建一个对象,箭头需要指到所建立的 对象上面。 销毁消息:销毁一个对象,对象生命线用差号来表 示销毁,表示被销毁对象的生命周期将到此终结。
obj1:Class <<c re at e>> obj2:Class
<<d e s t ro y >>
<<boundary>> : 职员管理界面
顺序图是显示对象之间交互的图, 这些对象是按时 间顺序排列的. 它显示参与交互的对象及对象之间消息交互的顺序.
对象/参与者 对象维
生命线 消息 时间维 控制焦点
对象的三种命名方式:
生命线是对象图标向下延伸的虚线, 表示对象生存时间.
消亡点
控制焦点(Focus of Control)又称为激活期(Activation), 用 生命线上的小矩形表示, 在这个时间段内, 对象执行相 应的操作.
(3). 简单消 息
它只表示控制如何从一个对象传递给另一个对象,而没有描述通信的任何细节。 这种类型的消息主要用于通信细节未知或者无需考虑通信细节的场合。也就是说,主 要用于不知道消息是同步还是异步的场合,但通常情况下表示异步消息此外在高层分 析中,有时候没有必要指定一个消息是同步的还是异步的。如下面的示例所示。
顺序图的结构控制
可选执行(Optional Execution)
标记为“opt”。
条件执行(Conditional Execution)
标记为“alt”。
并行执行(Parallel Execution)
标记为“par”。
循环执行(Loop/Iterative Execution)
可选执行 标签是opt。如果控制进入该操作符标识的交互区域时监护条件成 立,那么执行该交互区域。监护条件是一个用方括号括起来的布尔表达式, 它要出现在交互区域内部第一条生命线的顶端,在其中可以引用该对象的属 性。 条件执行 标签为 alt。用水平虚线把交互区域分割成几个分区,每个分区表 示一个条件分支并有一个监护条件。如果一个分区的监护条件为真,就执行 这个分区,但最多只能执行一个分区。如果有多于一个监护条件为真,那么 选择哪个分区是不确定的。若没有应对措施,在模型中要避免这种情况。如 果所有的监护条件都不为真,那么控制流将跨过这个交互区域而继续执行。 其中的一个分区可以用特殊的监护条件[else],这意味着如果其他所有区域 的监护条件都为假,就执行该分区。 并行执行 标签是 par。用水平虚线把交互区域分割为几个分区。每个分区表 示一个并发计算。当控制进入交互区域时并发地执行所有的分区;在并行分 区都执行完后,那么该并行操作符标识的交互区域也就执行完毕。每个分区 内的消息是顺序执行的。需要指出的是,并发并不总是意味着物理上的同时 执行。并发其实是说两个动作没有协作关系,而且可按任意次序发生。如果 它们确实是独立的动作,那么它们还可以交叠。 循环(迭代)执行 标签是 loop。在交互区域内的顶端给出一个监护条件。 只要在每次迭代之前监护条件成立,那么循环主体就会重复执行。一旦在交 互区域顶部的监护条件为假,控制就会跳出该交互区域。
4 : setgrade(studentID,C)
[59<grade<70]
5 : setgrade(studentID,D)
建立顺序图
步骤: ■ 按照当前交互的意图,如系统的一次执行,或者一组对象(包括参与者 实例,以下不再明确地提及参与者实例)之间的协作,详细地审阅有关材 料(如有关的用况),设置交互的语境,其中包括可能需要的那些对象。 ■ 通过识别对象在交互中扮演的角色,在顺序图的上部列出所选定的一组 对象(应该给出其类名),并为每个对象设置生命线。通常把发起交互的 对象放在左边。 ■ 对于那些在交互期间要被创建和撤销的对象,在适当的时刻,用消息箭 线显式地予以指明。 ■ 决定消息将怎样或以什么样的序列在对象之间传递。 通过首先发出消息的对象,看它需要哪些对象为它提供操作,它向那 些对象提供操作。追踪相关的对象,进一步做这种模拟,直到分析完与当 前语境有关的全部对象。 如果一个对象的操作在某个执行点上应该向另一个对象发消息,则从 这一点向后者画一条带箭头的直线,并在其上注明消息名。用适当的箭头 线区别各种消息。
下一个操作符是可选操作符。如果密码是正确的,那么就执行这个操作符 的主体;否则就跳过该顺序图后面的部分。这个可选操作符的主体内还包 括了一个并行操作符。正如图中所表明的,操作符可以嵌套。
并行操作符有两个分区:一个让用户输入帐号,另一个让用户输入数额。 因为这两个分区是并行的,所以没有规定应该按照什么次序输入这两者, 按照什么次序输入都可以。需要强调的是,并发并不总是意味着物理上的 同时执行。并发其实是说两个动作没有协作关系,而且可按任意次序发生。 如果它们确实是独立的动作,那么它们就可以交叠;而如果它们是顺序的 动作,那么它们可以按任意的次序发生。 一旦并行操作符的两个动作都被执行过,那么该并行操作符也就执行 完毕。在可选操作符中的下一个动作是银行向给用户交付现金。至此,顺 序图执行完毕。
: MainWindow
: ReturnDialog
: Borrower
: Book
: Loan
1: return( ) 2: createDialog( )
3: return( ) 4: findBook(Integer) 5: getObject(OID) 6: getLoan( ) 7: getBorrower( ) 8: setLoan(null) 9: update( ) 10: delLoan(OID) 11: update( ) 12: delete( )
• • • • • • • • • •
类Book id:Integer title:OID loan:OID findBook(id:Integer):OID 返回指定id的Book对象 getLoan():Loan setLoan(loan:OID) getTitle():Title getObject(book:OID):Bo ok
• 添加借阅者
<<boundary>> : 增加职员窗口
<<control>> : 职员控制器
<<entity>> : 职员
: 管理员 1 : 增加职员() <<create>> 2 : 弹出增加职员窗口()
3 : 职员信息()
4 : 提交() 5 : 增加职员() 6 : 创建职员对象() 7 : 保存职员信息()
标记为“loop”。
上图展示了一个简化了的例子,其中有一些控制操作符。用户启动这个序 列。第一个操作符是循环操作符,圆括号内的数字(1,3)表示循环执行 的最少次数和最多次数。因为最少是一次,所以在检测条件之前主体至少 执行一次。在循环内,用户输入密码,系统验证它。只要密码不正确,那 么该循环就会继续。但是,如果超过了三次,那么无论如何循环都会结束。
sd 成绩转换 : Contrl : Transcript : Grade
1 : getgrade(studentID)
alt [grade>=90] 2 : setgrade(studentID,A)
[79<grade<90] 3 : setgrade(studentID,B)
[69<grade<80]
旅店预订系统
16
旅店预订系统中识别分析类
-17-
-18-
绘制VOPC类图
-19-
实例-旅游申请系统中的分析类
-20-
进行职责分配
-21-
绘制VOPC类图
-22-
利用分析操作表示职责
-23-
为分-25-
旅游申请系统实体类类图
-26-
3. 顺序图中的结构化控制
序列性的消息能很好地说明单一的线性的序列,但是我们 通常需要展示条件和循环。有时候我们想要展示多个序列的 并行执行。在顺序图中用结构化控制操作符能展示这种高层 控制。
为了表示顺序图的边界,可以把顺序图用一个封闭的矩形 包围起来,并在矩形的左上角放一个小五边形。在这个小五 边形内先写上sd,再后面写出图的名字。对每个子顺序图加上 一个矩形区域作为外框,再在其左上角放一个小五边形,在 这个小五边形内写上用来表明控制操作符的类型的文字。
交互作用图
(顺序图和协作图)
1 交互图概述
交互图(interaction diagram)是用来描述对象之间以及对 象与参与者之间的动态协作关系以及协作过程中行为 次序的图形文档. 交互图通常用于描述一个用例的行为, 显示该用例中所 涉及的对象及对象之间消息传递情况. 交互图包括: (1)顺序图(sequence diagram), 描述对象按照时间顺序的 消息交换; (2)协作图(collaboration diagram), 描述系统成分如何协同 工作.