火狐体育官方代理


UML 根底: 序列图

2021-09-10 16:53:57 |来源:火狐体育福彩网 作者:火狐登录官网

  序列图首要用于依照交互产生的一系列次序,显现目标之间的这些交互。很象类图,开发者一般以为序列图只对他们有意义。可是,一个安排的事务人员会发现,序列图显现不同的事务目标怎么交互,关于沟通当时事务怎么进行很有用。除记载安排的当时事情外,一个事务级的序列图能被当作一个需求文件运用,为完成一个未来体系传递需求。在项意图需求阶段,分析师能经过供给一个愈加正式层次的表达,把用例带入下一层次。那种状况下,用例常常被细化为一个或许更多的序列图。

  安排的技术人员能发现,序列图在记载一个未来体系的行为应该怎么体现中,十分有用。在规划阶段,架构师和开发者能运用图,挖掘出体系目标间的交互,这样充分整个体系规划。

  序列图的首要用处之一,是把用例表达的需求,转化为进一步、愈加正式层次的精密表达。用例常常被细化为一个或许更多的序列图。序列图除了在规划新体系方面的用处外,它们还能用来记载一个存在体系(称它为“遗产”)的目标现在怎么交互。当把这个体系移交给另一个人或安排时,这个文档很有用。

  已然这是我根据 UML 2的 UML 图系列文章的第一篇,咱们需求首要评论对 UML 2 图符号的一个弥补,即一个叫做结构的符号元件。在 UML 2中,结构元件用于作为许多其他的图元件的一个根底,可是大多数人第一次触摸结构元件的状况,是作为图的图形化鸿沟。当为图供给图形化鸿沟时,一个结构元件为图的标签供给共同的方位。在 UML 图中结构元件是可选择的;就如你能在图 1 和 2 中见到的,图的标签被放在左上角,在我将调用结构的“namebox”中,一种卷角长方形,而且实践的 UML 图在较大的关闭长方形内部界说。

  除了供给一个图形化边框之外,用于图中的结构元件也有描绘交互的重要的功用, 例如序列图。在序列图上一个序列接纳和发送音讯(又称交互),能经过衔接音讯和结构元件鸿沟,树立模型(如图 2 所见到)。这将会在后边“逾越根底”的阶段中被更详细地介绍。

  留意在图 2 中,关于序列图,图的标签由文字“sd”开端。当运用一个结构元件关闭一个图时,图的标签需求依照以下的格局:

  UML 标准给图类型供给特定的文本值。(举例来说,sd代表序列图,activity代表活动图,use case代表用例图)。

  序列图的首要意图是界说事情序列,产生一些期望的输出。要点不是音讯自身,而是音讯产生的次序;不过,大多数序列图会表明一个体系的目标之间传递的什么音讯,以及它们产生的次序。图依照水平缓笔直的维度传递信息:笔直维度从上而下表明音讯/调用产生的时刻序列,而且水平维度从左到右表明音讯发送到的目标实例。

  当画一个序列图的时分,放置生命线符号元件,横跨图的顶部。生命线表明序列中,建模的人物或目标实例。 1 生命线画作一个方格,一条虚线从上而下,经过底部鸿沟的中心(图 3)。生命线姓名放置在方格里。

  图 3: 用于一个实体名为freshman的生命线的Student类的一个比如

  在如图3所示的比如中,生命线表明类Student的实体,它的实体称号是freshman。这儿留意一点,生命线称号带下划线。当运用下划线时,意味着序列图中的生命线代表一个类的特定实体,不是特定品种的实体(例如,人物)。在将来的一篇文章中,咱们将会了解结构化建模。现在,只是评述序列图,或许包含人物(例如买方和卖方),而不需求叙说谁扮演那些人物(例如Bill和Fred)。这允许不同语境的图重复运用。简略拖放,序列图的实例称号有下划线,而人物称号没有。

  图 3 中咱们生命线比如是一个命名的目标,可是不是一切的生命线都代表命名的目标。相反的,一个生命线能用来体现一个匿名的或未命名的实体。当在一个序列图上,为一个未命名的实例建模时,生命线的姓名选用和一个命名实例相同的形式;可是生命线姓名的方位留下空白,而不是供给一个例图姓名。再次参阅图 3,假如生命线正在体现Student类的一个匿名例图,生命线会是: “Student”。一起, 由于序列图在项目规划阶段中运用,有一个未指定的目标是彻底合法: 举例来说,“freshman”。

  为了可读性,序列图的第一个音讯总是从顶端开端,而且一般坐落图的左面。然后继发的音讯参加图中,略微比前面的音讯低些。

  为了显现一个目标(例如,生命线)传递一个音讯给别的一个目标,你画一条线指向接纳目标,包含一个实心箭头(假如是一个同步调用操作)或一个棍形箭头(假如是一个异步信号)。音讯/办法姓名放置在带箭头的线上面。正在被传递给接纳目标的音讯,表明接纳目标的类完成的一个操作/办法。在图 4 的比如中,analyst目标调用ReportingSystem 类的一个实例的体系目标。analyst目标在调用体系目标的 getAvailableReports 办法。体系目标然后调用secSystem 目标上的、包含参数userId的getSecurityClearance 办法,secSystem的类的类型是 SecuritySystem。 2

  除了只是显现序列图上的音讯调用外,图 4 中的图还包含回来音讯。这些回来音讯是可选择的;一个回来音讯画作一个带开放箭头的虚线,向后指向来历的生命线,在这条虚线上面,你放置操作的回来值。在图 4 中,当 getSecurityClearance 办法被调用时,secSystem 目标回来 userClearance 给体系目标。当 getAvailableReports 办法被调用时,体系目标回来 availableReports。

  此外,回来音讯是序列图的一个可选择部分。回来音讯的运用依靠建模的详细/笼统程度。假如需求较好的详细化,回来音讯是有用的;不然,自动音讯就足够了。我个人喜爱,不管什么时分回来一个值,都包含一个回来音讯,由于我发现额定的细节使一个序列图变得更简单阅览。

  当序列图建模时,有时分,一个目标将会需求传递一个音讯给它自身。一个目标何时称它自身?一个纯化论者会争论一个目标应该永不传递一个音讯给它自身。可是,为传递一个音讯给它自身的目标建模,在一些情境中或许是有用的。举例来说,图 5 是图 4 的一个改进版别。 图 5 版别显现调用它的 determineAvailableReports 办法的体系目标。经过表明体系传递音讯“determineAvailableReports”给它自身,模型把留意力会集到进程的事实上,而不是体系目标。

  为了要画一个调用自身的目标,如你平常所作的,画一条音讯,可是不是衔接它到别的的一个目标,而是你把音讯衔接回目标自身。

  图 5 中的音讯实例显现同步音讯;可是,在序列图中,你也能为异步音讯建模。一个异步音讯和一个同步的画法相似,可是音讯画的线带一个棍形锋芒,如图 6 所示。