N同学:问一下,如何在UML序列图中,画出分支和循环。
我: UML2.0中,使用了画框的方法表现分支和循环。但是我建议不要使用。
N同学:为什么?
我:序列图,重点要表现的是多个对象之间的协作关系,表现复杂的流程或算法并不是其
所擅长。画出的分支和循环看上去很乱.
N同学:老大,客观上是存在分支和循环的呀,不是我想画呀。
我:很多的分支和循环意味着复杂的算法或流程,如果存在复杂的算法或流程,使用另
外单独的流程图来表现比较好。
N同学: 我晕,使用流程图,没有办法表现多个对象之间的交互呀。
我:如果在同一个场景中,同时有复杂流程和交互过程要表现,那就画两个图。
N同学:画一个流程图和一个序列图?
我:对,不同的图表现不同的视面,每个图都表现的简单和清晰。
N同学:哦,听上去很有道理,我考虑下。
我:那你先考虑。其实我还没有说完呢。
(过了一会)
N同学:你看看我这个序列图(图中表现的是某种消息的接收和处理),你说序列图上不考虑分支。
可是你看我这个分支,是根据接收到消息类型来决定分发给不同的【消息处理器】。没有办
法画呀,我不能把所有的调用都画上吧?那样看上去像顺序调用所有的【消息处理器】。
我:消息类型为什么不是固定的?
N同学:我晕,消息类型就是多个呀。
我:呵呵,其实我的意思是,每一个序列图都是针对一个特定场景的,特定场景肯定是
针对某种具体消息类型的处理。
N同学:哦。难道每个消息类型都要一个场景,要画很多序列图了。
我:如果需要的话,可以画多个。但一般不需要,比如,像你这种情况,每种消息的处理
过程其实是相似的。选定一个典型的场景就可以了,其他的可以类比出来,文字说明
下就可以了。
N同学:有道理,我再考虑下。
我:其实,这正是我刚才想说的:对同一个处理过程,序列图是针对一个特定场景的,
而流程图直接说明处理流程,是针对所有场景共同流程。这是分开画序列图和流程图
的另外一个原因。
N同学:我知道了,每次都画两种图,这真够麻烦的。
我:谁让你都画了?如果有复杂的流程要说明才画流程图,有复杂的协作关系才画顺序图。
如果流程也简单,协作关系也不复杂,干脆一个都不用画。简短文字能说明的,画图
干嘛。 ---一切从实际出发吗。
N同学:那我这个还画不画?
我:那只能你自己判断----我对你要描述的东西了解还不全面。
阅读(8698) | 评论(1) | 转发(0) |