[英]UML class diagram association properties {subsets < Association end > } | {union} | {redefines}
當談到 UML 中 class 圖之間的關聯時,我不太明白 {subset} 代表什么。 我發現這個 PDF 在第 4 頁討論它: https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.5537&rep=rep1&type=pdf 。 這是您也可以在第 4 頁找到的圖表和文本:
我讀了這篇文章,但我並不是 100% 了解 {subsets < class > } 是關於什么的。 它說“代表 d 的插槽將是代表 b 的插槽的子集。類型 B 的元素可以插入插槽 b,類型 D 的元素可以插入插槽 b 和 d。” 那么,{subset} 是某種多態性嗎? 我認為通過“插槽”,它們的意思就像是 B 類型的方法的參數。因為 D 子集 b 這意味着 D 就像 b 的子類,所以它可以在 arguments 中作為“b”傳遞因為多態。
所以問題是:{subsets < class > } 到底是什么,它代表一個子 class 嗎?
除此之外,我還有其他問題:什么是 {union}、{redefines < class > }、{nonunique} 和 {sequence}。 代表什么?
代碼中的一些示例將使其更易於理解。
所以問題是:{subsets < class > } 到底是什么,它代表一個子 class 嗎?
它不是{subsets < class >}而是{subsets < property name >}
在給定的圖表中D是唯一可見的 class 專門B ,如果它們不是專門B的其他類,則B的所有實例都是D的實例,然后{subset b}等於b 。
但至少有:
B的所有實例都不是D的必要實例(包括專門化D的類),這就是為什么d只涉及b所關注的B實例的子集。
在您的圖表和我的圖表中,子集並不是很有用,但是例如在重新定義的情況下,例如{subsets a, redefines a} {subsets b, redefines b}
什么是 {union}、{重新定義 < class > }、{nonunique} 和 {sequence}
參考正式/ 2017-12-05 §9.5.4 第 113 和 114 頁:
union意味着該屬性是其子集的派生聯合。
nonunique :表示多值屬性中可能存在重復項。 這與唯一含義相反,沒有可能的重復。 例如,假設b是{nonunique}那么B的某些實例可以在b中出現多次。 如果該屬性是通過std::set
在 C++ 中實現的,則它是{unique} 。
sequence表示該屬性表示一個有序包,這是{nonunique, ordered}的快捷方式。 C++ 中的std::vector
和std::list
就是這種情況。
{redefines < property-name > } (不是{redefines < class >} )表示該屬性重新定義了由<property-name >標識的繼承屬性。 如果在您的圖中{subsets b}被{redefines b}替換,那么類C只有插槽(例如 C++ 等中的屬性) d 。 這不像擁有b私有,因此無法從C訪問,這實際上意味着d是b的重新定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.