{UML2.0} 合成結構圖簡單說明與範例

什麼是元件(Component)?

  • 將某一個元素,視為 “整體(whole)” 時,觀察該元素的外顯行為與內在特徵。
  • 元件 = 介面 + 實現介面的類別(不一定是只有一個)。
  • 元件的觀點
    • 外部觀點(黑箱式) – 凸顯該元件所提供(provide)與所需求(required)的介面(interface)。
    • 內部觀點(白箱式) – 元件內部結構(internal structure) “組成元素” 的關係。

元件與合成結構(Composite Structure)圖

  • 將焦點關注在某一個元件(Component)
    • 元件外顯的介面(interface)。
    • 元件內部組件(part)的連結關係。
    • 介面係由內部的那個組件所委託(delegate)實做的。
  • UML 2.0 新增最有價值的新視圖;也可以視為是早期 UML 類別圖中對“黑色菱形”的合成關係的一種擴充、延伸、升級。

元件的內部結構描述

  • 內部相互連結(interconnected)組件(part)的結構(Structure)。
  • 系統執行期間(run-time)內部相互連結的個體(instances)結構。
  • 例,一艘小型動力艇,內部係由一具引擎及一至四個推進器組成並履行小艇推進的功能。

範例—利用兩種不同的呈現方式展示 Order 元件與其介面

範例—利用兩種不同的呈現方式展示 Order 元件與其介面
(縮略圖,點擊圖片鏈接看原圖)

元件的 “提供” 與 “需求” 介面

  • 元件所提供給 Client 端使用的介面稱為 “可提供介面(provided interface)”;元件所要求的介面稱為 “需求介面(required interface)”。
  • 例,Order 元件提供(provided)給 Client 端(如 Customer) “新增/移除 訂購細項”、”完成訂購”、”提供訂購追蹤資訊” 等介面;而需要(required) “Retrieve Products”、”Retrieve tracking info” 等介面。
  • UML 2.0 ,圓球(ball)圖示(icon)表提供介面;凹槽(socket)圖示表需求介面。

“Ball and Socket” 的說明

  • 例,Order 介面需要“Retrieve Products”介面;而 Inventory 元件提供了“Provide Products”介面。兩者構成了“ball and socket”關係。

Ball and Socket

連接埠–元件與外部環境的互動點(interaction point)

  • 利用 “連接埠(port)” 可以將介面(包括需求與可提供介面)群組起來,成為一組邏輯的互動關係。
  • 透過 port,元件可以提供服務給外部的環境;也可以向外部環境要求服務。
  • 元件與其外部環境互動(interaction)的 “存取點(access point)”。
  • 例,將 “Mouse” 視為是一個介面,透過 usb 接頭,可以連至(plug-into) PC 所提供的 “USB 埠”,而可以操作使用滑鼠。

port and interface 的關係

元件內部結構組成元素的說明

  • 組件(part)提供或需要某個介面的實做,兩者之間的連線關係,稱為委託連接器(delegating connector)。
  • 組件與組件之間的關連(association),稱為連接器(connector)。
  • 利用多重性(multiplicity),可以秀出某個組件會有多少個個體(instances)。

元件內部結構的組成元素

文章導覽

   

共有 5 則迴響

  1. OK…謝謝你的回答,我想辦法去盡量”感受”他的含義好了,呵呵

  2. Hi 學習中:
    1. 是的,剛好相反,畫錯了,謝謝您的提醒。
    2. 那個 “port” 不是那麼重要,請注意,透過 UML 只是一種想法的表達與呈現,可不要對 uml elements 太過 “走火入魔”。

    而若是執著想確實瞭解 UML 元素的每一個 “精確” 定義與用法,那就要研讀 “UML Specification” 了,可以到 OMG 的網站下載規格書。

    還有,若當想回歸 UML 元素的定義與說明,建議除了規格書外,三巨頭的 “UML User Guide” 也是相當值得參考的書籍。

  3. 您好,先謝謝你的回答,針對1、2兩點,還有一些疑問:
    1、圖中的ball跟socket好像畫反了,Order是「需要」RetrieveProduct這個interface,所以應該是socket才對?
    2、查了好多資料,大家對port的解釋好像都有點模糊。不過感覺是一個把interface group起來的概念沒錯。然而,如果不真正了解這個element的含意,好像連要把哪幾個interface放在同一個port都搞清呢@@。另外,還有網頁說明port是一個有type的element,總覺得越來越不知道他到底是啥了

  4. Hi 學習中:

    1. 是的,沒有錯,你的解釋是對的,也與圖的表達沒有衝突。
    2. Port 只是 Logical group for interfaces, 在程式碼中,比較會在某一個 Interface 的宣告中,一組所定義的 methoed 宣告。
    3. 最好不要用程式碼中的 “delegate” 來解釋這個字眼。
    4. 也可以,滑鼠透過 usb 介面與 PC 連結。該圖的例子只是凸顯滑鼠需要透過 “Port” 來與 PC 連結。

  5. 您好,有幾個疑問想請教一下:
    1、RetrieveProduct好像應該是Inventory類別提供的介面才對?Order接到訂單後,利用Inventory提供的介面去取貨或查庫存。
    2、一直對這個UML新的Diagram有點一知半解。其中的Port,如果實作為真的程式碼,會是什麼東西呢?應該不會是真的指http的「80 port」吧@@
    3、另外delegate跟c#中的delegate概念是一樣的嗎?(在c#中類似指函式指標)
    4、滑鼠那個例子中,usb好像應該是interface才對?任何外接式裝置,只要遵守usb interface來實作usb連接頭,就可以跟電腦溝通。

發佈回覆給「學習中」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *