2015-10-17 56 views
5

根據UML規範,我們可以通過<<Create>><<Instantiate>>原型來表示兩個類之間的依賴關係。UML中的「創建」與「實例化」依賴關係

你知道那些刻板印象之間有什麼區別嗎?

這是寫在UML規範2.5(第一章22.3標準定型。):

  1. 對於<<Create>>

    甲使用依賴關係表示該客戶機分類器產生供應商分類

    的 實例
  2. 對於<<Instantiate>>

    表明 客戶端上的操作創建供應商

+1

我不會把所有的UML定義放在黃金平衡上。對我來說這兩個定義聽起來非常相似從我的理解中可以看出(上帝的)創作,所以有些新鮮。相比之下,更像是一個克隆操作。 YMMV –

回答

1

我注意到,< <創建>>原型的情況下,分類器中使用依賴,也可以不僅適用於「用法「依賴關係,但也可能與 」BehavioralFeature「(參見UML規範中的第22.2節)有關。

在UML中「BehavioralFeature」對應於類或接口中的特定方法。

因此,如果我們紀念特定的方法在一類< <創建>>或< <摧毀>> 我們的意思是它創建/破壞這個類的一個實例。

我們可以< <創建>> 進行並行標記的方法之間和標記使用依賴與< <創建>>。

如果我們使用< < <創建>>然後 這意味着客戶端類中的特定方法創建供應商類的實例。 因此,我們在客戶類的主體中創建供應商實例。 客戶和供應商在這裏緊密相連。

在另一方面,如果我們紀念與< <實例化一個使用依賴>>然後 Client類委託創作供應商的其他對象。因此,他間接創建供應商。 在這種情況下,客戶和供應商是鬆散耦合的。 例如,出現這種情況,如果我們通過創建模式的一個創建供應商:對象池,原型,工廠方法等

注:

總的來說,這是不是很清楚,從規範的差異。 希望在未來的版本中(超過2.5版本)我們有更清晰的定義。

+0

這是你對這些事情的解釋,還是你有一個證實這種觀點的資料來源? –

+0

這是我自己的基於UML規範的分析 – Vitaly

2

Michael Jesse Chonoles 是的,「創建」用於序列圖。這是對消息的刻板印象。 「創建」也是分類器中行爲特徵的刻板印象,表明該分類器的實例的構造函數(或非面向對象項的等價物)。

當「創建」用於依賴關係時,它看起來與「實例化」沒有多大區別。就我個人而言,我使用依賴«Instantiate»。當我的意思是通過調用構造函數(這是我將模型轉換爲代碼的方式)實現的真正的面向對象實例化。當它是一種不同類型的創作時,我會使用「創建」,或者是更具間接性,概念性或非面向對象的特徵。

以下是一些示例。我會用«創建»來說MSWord - >«創建»一個文檔,一個建模者«創建»一個模型。雖然我通常不會對此進行詳細建模,但我會使用«創建»來指示組件«創建»新數據庫記錄,數據庫管理器«創建»新數據庫,程序員«創建»新應用程序。或者在(非oo)數組中創建一個新元素。這些可以在不直接調用傳統的面向對象的構造函數的情況下發生 - 並且不能直接轉換爲代碼。另一方面,如果我對一個人進行了婚姻操作,它可能會「實例化」結婚的關聯類對象。

因爲我的大多數建模都是概念性的,所以在實踐中我傾向於使用«create»。儘管如此,即使這樣也不會經常出現。

+0

另請參見:https://www.linkedin.com/grp/post/143183-6061637312238927877 –