2010-12-06 46 views
1

對不起,對於這個新問題,我是新來的UML。誰在這個uml圖中擁有關聯的類?

一個系統的圖表是這一個:

據我所知UML的,沒有階級的這個圖中可以擁有相關的類的實例,因爲與它沒有聚合關係。

這是否意味着在Java系統的實現中,基於該圖,外部類必須擁有關聯類的實例?

對不起,如果答案很明顯。我花了好幾個小時在頭上搔了搔腦袋。

回答

0

UML沒有指定系統的完整行爲。那麼當你說對象擁有另一個對象時,你的意思是什麼?此外,AssociatedClass實例可以是不屬於任何其他對象的根對象。

0

您提供的圖表並不包含關聯類。你被命名爲'關聯類'的類只是一個普通的類。它也不屬於任何東西(我們在圖中看到)。

如果你腦子裏想的是什麼關聯類,然後看看示例圖與關聯類:

an example class diagram with association class

在這個例子中,MilleageCredit是一個關聯類。因此,對於Fligh-FrequentFlyer的每個不同組合,都有一個MilleageCredit。

至於所有權,由於協會類表示2個相關聯的對象之間的關係,當

  • 的關聯被清除
  • 關聯對象的任一個或兩者都被刪除
它被刪除

因此,如果您刪除Flight或FrequentFlyer,MilleageCredit也將消失。 另外,如果您再次斷開與FrequentFlyer的航班,MilleageCredit將被刪除。

有很多很好的UML在線文檔,例如UML basics: The class diagram

希望這有助於,否則請提供問題的詳細信息。

1

首先,術語。 @Daniel是對的,你沒有一個關聯班。不過,我不認爲你意味着協會類:

這是否意味着在系統中的Java的實現,根據圖上,外部類有自己關聯的類的實例?

如果我理解正確,那就是你的問題的核心。在實施條款中,哪些類的成員變量包含對Associated Class實例的引用列表?

再 - 如果我理解正確的 - 你的問題,從下面的邏輯源於:

  1. 在UML中,「所有權」通常被描述爲聚合(或組合)關係的質量。
  2. Aggregated/Composite PART ClassAssociated Class之間的關係是一個簡單的二元關聯 - 不是Aggregate/Composite。
  3. 因此「所有權」屬性不適用
  4. 因此,誰擁有對Associated Class實例的引用列表?

如果這是正確的,那麼問題是與「所有權」的具體含義。雖然在UML中沒有嚴格定義,但「所有權」通常意味着管理整個生命週期的責任。

我認爲你更一般地解釋它:如果一個關聯不是聚集的,那麼參與類不能持有對方的引用。

情況並非如此。 Aggregated/Composite PART ClassAssociated Class的實例持有引用(或引用列表)是非常合理的。反過來同樣有效。在某些情況下,兩者都是有效的(伴隨者需要保持一致性)。

綜上所述:外部課程是否需要擁有Associated Class的實例?不可以。對於二元關聯的任一端或兩端來說,管理關係的實例是完全有效的。

如果我誤解了您的問題,請好好道歉。 PS:最後的觀察:在使用聚合時要非常小心你的意思。這在UML規範中非常不準確。組合具有更嚴格的定義,並且您可以使用組合和簡單的二進制關聯覆蓋99%以上的所有建模場景。關於唯一的地方聚合有一個沒有完全覆蓋的定義明確的含義是指遞歸關係必須是非循環的。