UML參考手冊 第二部分 基 本 概 念 第8章 交 互 視 圖

來源:互聯網
上載者:User
UML參考手冊  

  第二部分 基 本 概 念  

第8章 交 互 視 圖

8.1 概述
  對象間的相互作用體現了對象的行為。這種相互作用可以描述成兩種互補的方式,一種以獨立的對象為中心進行考察,另一種以互相作用的一組對象為中心進行考察。
  狀態機器的描述範圍不寬,但它描述了對象深層次的行為,是單獨考察每一個對象的“微縮”視圖。對狀態機器的說明是精確的並且可直接用於代碼。然而,在理解系統的整個功能時存在困難,因為狀態機器一個時刻只集中描述一個對象,要確定整個系統的行為必需同時結合多個狀態機器進行考察。互動視圖更適合於描述一組對象的整體行為。互動視圖是對象間協作關係的模型。
8.2 協作
  協作描述了在一定的語境中一組對象以及用以實現某些行為的這些對象間的相互作用。它描述了為實現某種目的而相互合作的“對象社會”。協作中有在運行時被對象和串連佔用的槽。協作槽也叫做角色,因為它描述了協作中的對象或串連的目的。類元角色表示參與協作執行的對象的描述;關聯角色表示參與協作執行的關聯的描述。類元角色是在協作中被部分約束的類元;關聯角色是在協作中被部分約束的關聯。協作中的類元角色與關聯角色之間的關係只在特定的語境中才有意義。通常,同樣的關係不適用於協作外的潛在的類元和關聯。
  靜態視圖描述了類固有的內在屬性。例如,Vehicle 需要有一個所有者。共同作業圖表描述了類執行個體的特性,因為它在協作中起特殊的作用,例如,在一個RentalCar的協作中,rentalVehicle 需要 rentalDriver,它通常與交通工具不直接相關但它是協作的基本部分。
  系統中的對象可以參與一個或多個協作。雖然協作的執行通過共用對象相連,但是對象所出現的協作不必直接相關。例如,在一個Vacation模型中,某人可以既是rental Driver同時又是hotelGuest。不經常出現的情況是一個對象在同一個協作中可能擔當多個角色。
  合作包括結構和行為兩個方面。結構方面與靜態視圖相似—包含一個角色集合和它們之間的關係,這些關係定義了行為方面的內容。行為方面是一個訊息集合,這些訊息在具有某一角色的各對象間進行傳遞交換。協作中的訊息集合叫做互動。一個協作可以包含一個或多個互動,每個互動描述了一系列訊息,協作中的對象為了達到目標交換這些訊息。
  狀態機器描述範圍具有一定的局限性,但它的描述層次較深入,協作不受限制但描述層次較淺。它捕獲了對象組成的網路結構中相互發送訊息的整體行為。協作表示潛藏於計算過程中的三個主要結構的統一,即資料結構、控制流程和資料流的統一。
8.3 互動
  互動是協作中的一個訊息集合,這些訊息被類元角色通過關聯角色交換。當協作在運行時,受類元角色約束的對象通過受關聯角色約束的串連交換訊息執行個體。互動作用可對操作的執行、用例或其他行為實體建模。
  訊息是兩個對象之間的單路通訊,從寄件者到接收者的控制資訊流。訊息具有用於在對象間傳值的參數。訊息可以是訊號(一種明確的、命名的、對象間的非同步通訊)或調用(具有返回控制機制的操作的同步調用)。
  建立一個新的對象在模型中被表達成一個事件,這個事件由建立對象所引起並由對象所在的類本身所接受。建立事件,作為從頂層初始狀態出發的轉換的當前事件。對於新執行個體是可行的。
  訊息可以被組織成順序的控制線程。分離的線程代表並發的幾個訊息集合。線程間的同步通過不同線程間訊息的約束建模。同步結構能夠對分叉控制、結合控制和分支控制建模。
訊息序列可以用兩種圖來表示:順序圖(突出訊息的時間順序)和共同作業圖表(突出交換訊息的對象間的關係)。
8.4 順序圖
  順序圖將互動關係表示為一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處於啟用狀態時,生命線是一個雙道線。
  訊息用從一個對象的生命線到另一個物件生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。
圖8-1為帶有非同步訊息的典型的順序圖。

圖8-1 順序圖
8.5 啟用
  啟用是過程的執行,包括它等待嵌套過程執行的時間。在順序圖中它用部分替換生命線的雙道線表示。調用用指向由這個調用引起的啟用的上部的箭頭表示。當控制流程程重新進入對象中的一個操作遞迴時,遞迴調用發生,但是第二個調用是與第一個調用分離的啟用。同一個對象中的遞迴或嵌套調用用啟用框的疊加表示。圖8-2為含有過程式控制制流的一個順序圖,包括一個遞迴調用和一個對象的建立。
  主動對象是啟用棧中一組啟用物件中的根對象。每個主動對象有由它自己的事件驅動控制線程,控制線程與其他主動對象並存執行。被主動對象所調用的對象是被動對象。它們只在被調用時接受控制,而當它們返回時將控制放棄。
  如果幾個並行控制線程有它們自己的利用嵌套調用的過程式控制制流,那麼不同的線程必須用不同的線程名、顏色或其他方式辨別,以避免當兩個線程在同一個對象中產生混亂。通常,在一個單獨的圖中最好不要混合使用程序呼叫和訊號。

圖8-2 帶有啟用的順序圖
8.6 合作圖
  共同作業圖表是一種類圖,它包含類元角色和關聯角色,而不僅僅是類元和關聯。類元角色和關聯角色描述了對象的配置和當一個協作的執行個體執行時可能出現的串連。當協作被執行個體化時,對象受限於類元角色,串連受限於關聯角色。關聯角色也可以被各種不同的臨時串連所擔當,例如過程參量或局部過程變數。串連符號可以使用構造型表示臨時串連(《parameter》或《local》)或調用同一個對象(《self》)。雖然整個系統中可能有其他的對象,但只有涉及到協作的對象才會被表示出來。換而言之,共同作業圖表只對相互間具有互動作用的對象和對象間的關聯建模,而忽略了其他對象和關聯。圖8-3為一個互動圖。

圖8-3 合作圖
  可以將對象標識成四個組:存在於整個互動作用中的對象;在互動作用中建立的對象(使用約束{new});在互動作用中銷毀的對象(使用約束{destroyed});在互動作用中建立並銷毀的對象(使用約束{transient})。設計時可以首先表示操作開始時可得的對象和串連,然後決定控制如何流向圖中正確的對象去實現操作。
  雖然協作直接表現了操作的實現,它們也可以表示整個類的實現。在這種使用中,它表示了用來實作類別的所有操作的語境。這這使得對象在不同的操作中可以擔當多種角色。這種視圖可以通過描述對象所有操作的協作的聯合來構造。
1. 訊息
  訊息可以用依附於連結的帶標記的箭頭表示。每個訊息包括一個順序號、一張可選的前任訊息的表、一個可選的監護條件、一個名字和參量表、可選的傳回值表。順序號包括線程的名字(可選)。同一個線程內的所有訊息按照順序排列。除非有一個明顯的順序依賴關係,不同線程內的訊息是並行的。各種實現的細節會被加入,如同步與非同步訊息的區別。
2. 流
  通常,在完整的操作中共同作業圖表包含對象的符號。然而,有時對象具有不同的狀態並且必須弄明確表達出來。例如,一個對象可以改變位置,或者在不同的時刻它的關聯有很大區別。對象可以用它的類與它所處的狀態表示即具有狀態類的對象。同一個對象可以表示多次,每次有不同的位置和狀態。
代表同一對象的不同對象符號可以用變成流聯絡起來。變成流是從一個對象狀態到另一個的轉換。它用帶有構造型《become》的箭頭表示,並且可以用順序號標記表示它何時出現(8-4)。變成流也可以用來表示一個對象從一個位置到另一個位置的遷移。
  構造型《copy》不經常出現,它表示通過拷貝另一個對象值而得到的一個對象值。
表8-1表示了幾種物件流程的關係。

圖8-4 變成流

表8-1 流關係的種類
3. 共同作業圖表與順序圖
  共同作業圖表和順序圖都表示出了對象間的互動作用,但是它們側重點不同。順序圖清楚地表示了互動作用中的時間順序,但沒有明確表示對象間的關係。共同作業圖表清楚地表示了對象間的關係,但時間順序必須從順序號獲得。順序圖常常用於表示方案,而共同作業圖表用於過程的詳細設計。
8.7 模板
  模板是一個參數化的協作,並有表示何時使用該協作的標線。參數可以被不同的值替代從而產生不同的協作。參數通常為類指定槽。當模板執行個體化時,它的參數受限於類圖中的實際類或受限於更大的協作中的角色。
  模板用一個虛線橢圓表示,橢圓用標記有角色名稱字的虛線與每個類聯絡。例如,圖8-5表示摘自[Gamma-95]的Observer模板的使用。在這個模板的使用中,CallQueue替代Subject角色,SlidingBarlcon替代handler角色。
  模板可以出現在分析、結構設計、詳細設計和具體實現等不同層次中,這是重用經常出現的結構的一種方法。圖8-5表示了Observer模板的使用。

圖8-5 模板的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.