2017-10-07 58 views
2

我已經搜索了很多小時的過去幾個學期,試圖確保我正確地向學生展示這個過程。我沒有發現任何東西顯示這種特殊關係。這個學期,我想知道我做得正確。我們有一個抽象類,Player和兩個擴展它的具體類(Pitcher和PositionPlayer)。然後我們有一個類,團隊宣佈一個MapUML建模多態 - 依賴於抽象類

<Integer, Player> 

對我來說似乎是團隊依賴於播放器(抽象類),但我想依賴可以顯示的子類。請告訴我哪些是正確的,頂部還是底部? (我的UML編輯器不會做斜體,因此標籤)。預先感謝您的幫助。

enter image description here

+0

不知道你爲什麼刪除了你的評論。我設法看到它,所以我會迴應。如果'Team'需要將'Player'降級爲'Pitcher',那麼底部是好的。我說的是這是不好的設計,請參閱https://en.wikipedia.org/wiki/Downcasting#Criticism頁面底部有一些有用的鏈接。 – Oleg

+0

有點相關的是[this](https://cseducators.stackexchange.com/search?q=uml)。 (當然,這聽起來像是整個網站在任何情況下都可能與您有關)。 –

回答

1

兩者都是正確的。頂部更一般,底部更具體。但是兩者都是一樣的。

以下是顯示您將在哪裏使用設計的下半部分。如果您有第三個Player子類,其中Team不依賴於您,請使用較低的表示形式 - 不依賴於新的子類。

enter image description here

可能並不十分逼真,但可能是一些虛擬的遊戲星座。

+0

謝謝!我非常感謝你的時間。也很高興知道我沒有以我教過的方式誤導任何人。 – AApplin

+0

「團隊」如何依賴它不使用的類而對此一無所知?即使這是正確的UML(相信你),這不是一個明智的方式來傳達有意義的關係,沒有人應該這樣做@AApplin和標準應該改變。 – Oleg

+0

@Oleg「小丑」只是一個「玩家」。不是「團隊」的一部分,但在(未顯示)完整域中,他可能扮演另一個角色。只是作爲一個「玩家」而不是團隊合作伙伴。 –

-1

如果團隊包含MAP類型的屬性,對我而言,這意味着團隊包含一個玩家列表,每個玩家列表由一個ID標識。

如果團隊包含基數爲0..n的Player類型屬性,則表示該團隊與Player關聯。

由於每個玩家都由一個整數標識,對我而言,這是一個合格的關聯。

enter image description here

+0

道歉,玩家的基數應該是1,對於一個id,有一個玩家。 – granier

+0

如果這是一個答案,請以實際將其清楚的方式進行編輯。如果這是一個問題,請提出另一個問題。 – Oleg

+0

這是問題的答案,事實上,對我來說,依賴並不是正確的答案,因爲它是一個關聯...我更喜歡把答案寫成一個問題,對我來說,這是更友好的。 – granier