[英]How do I go about implementing a strange "class" notation
在沒有更多上下文的情況下,很難說這條線會去哪里,但Valuation
框看起來像請求這樣的線:
using Valuation = std::map<char,int>;
即,將Valuation
定義為某個地圖的別名。 基於“合理”的設計,我希望這條線出現在VariableElement
和IntElement
的公共父類中,可能作為受保護的 typedef。 但是,我在圖中沒有看到任何暗示這一點的內容。
我沒有看到足夠的上下文來猜測為什么從IntElement
到Valuation
沒有“使用”行。 考慮到evaluate
成員, IntElement
和VariableElement
在這IntElement
似乎處於同等地位。 另一方面,我會質疑為什么現有的行連接到VariableElement
而不是應該定義別名的假設的公共父級。 這可能是需要向圖表作者提出的問題。 (有時人們會犯錯,即使是教授。)
附錄:我想到了IntElement::evaluate
和VariableElement::evaluate
之間的區別。 可能是前者忽略了它的參數,因此除了類型的名稱之外,它並沒有真正使用Valuation
。 另一方面,后者可能會在地圖中查找一個條目,因此實現需要Valuation
是一個完整的類型。 這是一個可能的動機,盡管我發現這樣的實現細節影響類圖是有問題的。
讓我們看看 UML 2.5 規范是怎么說的。
9.2.4.1 分類器(第 99 頁)
分類器的默認符號是一個包含分類器名稱的實線矩形,並在名稱下方用水平線分隔隔間。 分類器的名稱應以粗體居中。 對於那些區分大小寫字符的語言,分類器名稱應以大寫字符開頭。
我在 UML 規范中找不到任何將名稱限制為任何給定(unicode)字符集的點。 也許是因為你需要另一本書。 所以我們可以從上面得到的是
Valuation = std::map<char,int>
是與 eg 相同的標識符
wiec8736b(/&& 3l?!blurb
將是一個(奇怪的)標識符。 但絕不是某些運算符子句,您可以將字符=
解釋為賦值或相等。
tl;dr這是垃圾。 去問問作者他是什么意思。 告訴他使用注釋和可理解的文本描述或堅持使用有效的 UML 符號。
作為旁注:該 UML 圖的作者在操作隔間中使用了一個未定義的符號。
9.6.4 符號(第 115 頁)
如果顯示在圖表中,則操作顯示為以下形式的文本字符串:
[<visibility>] <name> '(' [<parameter-list>] ')' [':' [<return-type>] ['[' <multiplicity-range> ']'] ['{' <oper-property> [',' <oper-property>]* '}']]
在哪里:
<visibility>
是操作的可見性(見 7.4)。
<visibility> ::= '+' | '-' | '#' | '~'
/
是沒有定義的可見性。 很可能作者自由地使用//
作為評論的常見用法。 這可能是可以接受的,但它不會呈現有效的 UML。
作為第二個注意事項:右上角的n*n
看起來也很可疑。 它可能是多重性的,並且在該格式中也是無效的。 但這只是猜測。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.