协作图

协作图的基本概念

含义:协作图就是表现对象协作关系的图,它表示了协作中作为各种类元角色的对象所处的位置,在图中主要显示了类元角色和关联角色。类元角色和关联角色描述了对象的配置和当一个协作的实例执行时可能出现的连接。当协作被实例化时,对象受限于类元角色,连接受限于关联角色。

作用:协作图作为一种在给定语境中描述协作中各个对象之间组织交互关系的空间组织结构的图形化方式,在使用其建模时,可以将其作用分为以下三个方面:通过描绘对象间消息的传递情况来反映具体的使用语境的逻辑表达;显示对象及其交互关系的空间组织结构;协作图的另外一个作用是表现一个类操作的实现。

协作图和序列图虽然都表示出了对象间的交互作用,但它们的侧重点不同。序列图注重表达交互作用中的时间顺序,但没有明确表示对象间的关系。而协作图却不同,他注重表示对象间的关系,但时间顺序可以从对象流经的顺序编号获得。序列图常常被用于表示方案,而协作图则被用于过程的详细设计。

组成协作图的元素

对象、消息和链这三个元素构成了协作图。协作图通过各个对象之间的组织交互关系以及对象彼此之间的连接表达对象之间的交互。

对象:协作图中的对象与序列图中的对象的概念相同,同样是类的实例。一个协作代表为了完成某个目标而共同工作的一组对象。对象的角色表示一个或一组对象在完成目标的过程中所起到的那部分作用。对象是角色所属类的直接或者间接实例。在协作图中,不需要关于某个类的所有对象都出现,同一个类的对象在一个协作图中也可能要充当多个角色。

消息:在协作图中,我们可以通过一系列的消息来描述系统的动态行为。和序列图中的消息概念相同,都是从一个对象向另一个或其他几个对象发送信号,或由一个对象调用另一个对象的操作,并且都由三部分组成,分别是发送者、接收者和活动。

:协作图中的链与对象图中的链的概念和表示形式都相同,都是两个或多个对象之间的独立连接,是对象引用元祖,也是关联的实例。在协作图中,关联角色是与具体语境有关的暂时的类元之间的关系,关联角色的实例也是链,其寿命受限于协作的长短,就如同序列图中对象的生命线一样。

posted @ 2018-11-26 15:42  strawqqhat  阅读(557)  评论(0编辑  收藏  举报
#home h1{ font-size:45px; } body{ background-image: url("放你的背景图链接"); background-position: initial; background-size: cover; background-repeat: no-repeat; background-attachment: fixed; background-origin: initial; background-clip: initial; height:100%; width:100%; } #home{ opacity:0.7; } .wall{ position: fixed; top: 0; left: 0; bottom: 0; right: 0; } div#midground{ background: url("https://i.postimg.cc/PP5GtGtM/midground.png"); z-index: -1; -webkit-animation: cc 200s linear infinite; -moz-animation: cc 200s linear infinite; -o-animation: cc 200s linear infinite; animation: cc 200s linear infinite; } div#foreground{ background: url("https://i.postimg.cc/z3jZZD1B/foreground.png"); z-index: -2; -webkit-animation: cc 253s linear infinite; -o-animation: cc 253s linear infinite; -moz-animation: cc 253s linear infinite; animation: cc 253s linear infinite; } div#top{ background: url("https://i.postimg.cc/PP5GtGtM/midground.png"); z-index: -4; -webkit-animation: da 200s linear infinite; -o-animation: da 200s linear infinite; animation: da 200s linear infinite; } @-webkit-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @-o-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @-moz-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @keyframes cc { 0%{ background-position: 0 0; } 100%{ background-position: 600% 0; } } @keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-webkit-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-moz-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-ms-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } }