2016-06-07 28 views
1

我正在閱讀關於UML類圖的教程,我在理解關聯類時存在問題,以及爲什麼這個MileageCredit類不是下面示例中的FrequentFlyer類的一部分(摘自教程here的圖11):如何識別UML關聯類的適當實現?

enter image description here

假設它是FrequentFlyer和MileageCredit(如果一個人有兩個FrequentFlyer成員,他們會仍然有不同的frequentFlyerNumber數字),那麼我只想把這些baseMiles和​​性質之間的一到一個關係FrequentFlyer類本身。

有人能解釋爲什麼這是錯誤的嗎?

+0

這與用例無關。請相應修改您的主題。 – Ister

+0

謝謝 - 希望標題現在清除 – Bendy

+0

是的,現在它更清晰。 – Ister

回答

2

MileageCredit是一個AssociationClass,這意味着它同時是一個Association(鏈接)Flight和FrequentFlyer)和一個描述該Association的類。這個事實通過連接類和關聯的虛線來描述。請注意,根據UML規範,這些類和關聯一起創建一個實體。

在您的示例中,FrequentFlyer和Flight之間有Association(稱爲MileageCredit)。您可能會認爲這顯示了FrequentFlyer的飛行。至於這些協會,您需要額外的信息(頒發給FrequentFlyer的本次航班的獎勵和獎勵里程數),此關聯有此額外的類描述此信息。

如果您在FrequentFlyer上創建了與協會絕對沒有任何關係的baseMiles和bonusMiles,則只會獲得有關向FrequentFlyer授予總積分的信息。

+0

另請注意,在代碼級別上,MileageCredit可能會成爲FrequentFlyer擁有的與Flight相關聯的類別,或者是與Flight和FrequentFlyer關聯的單獨類別。 – Ister

+0

謝謝 - 我認爲這是我混淆了它與數據庫模式的混淆 – Bendy

+0

可以想到一個關聯類位於(通常)兩個類之間,並將它們與1-m * n-1關係連接起來(*是關聯-類)。 –