回答
刻板印象「抽象」不存在 - 一個抽象類,應使用斜體字描繪。抽象意味着一個類不能被實例化。它需要一個子類來完成。因此,作爲一個僞碼的約束,這將意味着
for all instances i of MyAbstractClass holds: i.actualClass != MyAbstractClass
或OCL爲MyAbstractClass持有
self.allInstances()->forAll(i: MyAbstractClass | i.classifier <> self)
因爲這個詞「抽象」是不會顯示在你的第一個問題版本,我擴大了一般的定型:
首先:在學習UML時,刻板印象不應該是你研究的第一件事。他們相當複雜。 (<<MyStereotype>>
)不具有一般含義。它是由具體的刻板印象定義的。通常情況下,您不能將刻板印象作爲不變量來表達。
但是UML的一些其他方面也可以用同樣的方式顯示:即使UML Metalevel中的類沒有原型,甚至是不同的實際類型,它也會被標記爲<<metaclass>>
。刻板印刷本身帶有<<stereotype>>
標記(即使它們是特殊類別的實例)。
定製原型的示例可以是「服務」。您可以標記代表服務的類。可能有一個限制,告訴你一個「服務」必須實現一個特殊的接口。在這種情況下,您可以將此約束表達爲(無聊)不變量。但可能它甚至只是一個標記。在後一種情況下,您可以使用關鍵字作爲替換。
我意識到這個線程已經有兩三年的歷史了,但是當它被別人引用時,我意識到這一點,因爲支持斷言UML規範不支持«abstract»
構造型。這個說法不太準確,我想解釋一下爲什麼。我將首先澄清什麼是抽象類。
抽象類是不包含完整實現的類的定義。因此,抽象類不能直接實例化;他們必須是專門的(繼承)。抽象類通過斜體表示類名和抽象方法來表示,另外還可以通過給類名和/或操作添加一個{abstract}屬性(方法,我們通常會說,但方法實際上是「方法「執行該操作的操作)是抽象的。
接口是沒有實現的抽象類;他們的符號不同於其他類型的抽象類(不要斜體,使用«interface»
關鍵字,並用虛線表示所有專業化箭頭)。所以,正如克里斯蒂安在這裏所說的那樣,抽象類有標準符號 - 至少在類圖中是這樣。
現在,雖然它是真實的,基督教也表示,該«abstract»
刻板印象不存在,這也是事實,你可以創建它,如果你想和這樣做是在UML規範的支持。你不可能有理由(至少在課堂上),但你仍然可以。
構造型是UML的「可擴展性機制」(有三種:構造型,標記值和約束)。它允許你更具體地定義某種元素。定型適用於類(實際上是元類,元類是其實例也是類的類)。一些刻板印象是預先定義的「標準刻板印象」(在UML 1.4中它們被稱爲「標準元素」)。這些例子是«metaclass»
(同樣,一個類的實例也是類)和«file»
(開發系統的上下文中的物理文件)。
陳規定型是一種關鍵字。該規範(上層建築 2.0,附錄B,P 663)具有這樣說關鍵字:
UML關鍵字是保留字屬於UML 符號的一個組成部分,並且通常顯示爲附加的文本註釋到UML 圖形元素或作爲UML圖中文本行的一部分。這些 單詞......不能用於命名用戶定義的模型元素,其中這樣的命名會導致對模型的模糊解釋 。例如,關鍵字「跟蹤」是系統定義的抽象的刻板印象(見附錄C,「標準刻板印象」),因此,不能用於定義任何用戶定義的刻板印象。
在UML,關鍵字被用於四個不同的用途:
爲了區分從其他人共享相同的一般圖形形式的特定UML概念(元類)...
爲了區分UML概念(元關聯)與其他關係共享相同的一般圖形形式之間的特定類型的關係...
要指定附加到UML概念的某些修飾符的值T(元屬性值)...
要指定標準刻板印象(見附錄C,「標準定型」)...
關鍵詞總是封閉在guillemets(«關鍵字» ),它們作爲視覺線索更容易地區分關鍵字的使用時間......除了識別關鍵字外,guillemets還用於區分在用戶配置文件中定義的原型的使用。這意味着:
- 不guillemets之間出現的所有單詞都一定的關鍵字(即,保留字),和
- 詞語出現在guillemets並不一定代表定型。
換句話說,只要不是關鍵字,您就可以創建任何想要的構造型。由於「抽象」不是關鍵字,因此可以創建一個«abstract»
原型。爲了做到這一點,然而,你將不得不在UML 2.0及以上版本中遇到一些麻煩,比在UML 1.4中更麻煩。 UML 1.4簡單地指出,刻板印象是UML規範的擴展機制。人們可以簡單地定義刻板印象,將其應用於想要的任何UML元模型部分,並記錄變化。 UML 2.0希望將原型與UML元類的關係正式化(UML圖中的任何項目都是元類,並且是UML元模型的一部分)。所以,他們想出了Profiles。此示例圖顯示的配置文件是如何工作的:
現在,黑色箭頭可能看起來有點奇怪,因爲你沒有看到它在任何情況下,但是這一個。 UML 2.0引入了擴展的概念,它將其定義爲「用於指示元類的屬性通過刻板印象擴展。」這個黑色箭頭表示一個擴展名。我會引用湯姆彭德(UML聖經,威利出版社,2003年)對這張圖的解釋,因爲他做的比規範更好(我當然不能改進):
它顯示了一個組件被一個Bean構造型擴展,這是必需的。 Bean原型是一種抽象類型,具有兩個子類型 - 實體和會話。因此,Component的每個實例都必須通過Entity構造型或Session構造型的實例進行擴展。請記住,構造型是一種可以具有屬性的類 - 在這種情況下,Session構造型具有名爲state的屬性。這對應於一個標記的定義,其值指定了Session的狀態。標記值是一個枚舉StateKind,它具有無狀態值或有狀態值。
組件對它有約束,顯示在附加到組件符號的註釋中,該註釋聲明組件不能一概而論,或者專用於組件。
該圖還顯示了Interface元類由Remote和Home構造型擴展。 EJB包中有一個約束,顯示在包中的註釋中,表明Bean必須實現一個Home接口。
因此,如果您有理由去創建它,那麼確實可以使用«abstract»
刻板印象。任何人都希望在除了類圖之外的某個地方表示抽象類的主要原因。
- 1. UML抽象
- 2. 關於UML的問題用例圖
- 3. 關於抽象類和繼承的問題
- 4. 關於對象類型的問題
- 5. 抽象類和Spring問題
- 6. 問題抽象類的類型Scala中
- 7. uml類圖關係問題
- 8. 關於指針和對象的問題
- 9. 關於泛型和繼承的問題
- 10. 關於Node.js的問題SChema和模型
- 11. 關於抽象語法樹(AST)的問題
- 12. UML - 類模型問題
- 13. 關於抽象類的newInstance()?
- 14. 關於抽象的建議
- 15. 關於泛型的問題
- 16. 抽象數據類型問題
- 17. Java泛型抽象工廠問題
- 18. XSD架構抽象類型問題
- 19. 問題繼承時抽象泛型類
- 20. 斯卡拉抽象類型問題
- 21. Java - 抽象問題
- 22. 抽象類問題
- 23. 關於UML圖和模式?
- 24. JPO中的@OneToMany和抽象問題
- 25. Java接口和抽象類的問題
- 26. 問題與抽象類和的傳承
- 27. 關於POST和重定向的問題
- 28. CDI:由於多繼承和泛型抽象導致的屬性注入問題
- 29. 問題,同時利用廠,抽象類和模型中的CodeIgniter
- 30. UML定義 - 泛化,聚合和抽象類
也許抽象類是無法創建實例的抽象類,因爲只有創建從它派生的類的實例纔有意義。抽象類通過將「<>」原型放置在類名上方或通過以斜體顯示類名來表示。 雖然有些編程語言不支持多重繼承,但類也可以繼承多個基類。 –
lionsmater
你的意思是刻板印象'<>>'?我從未見過'<< <>? >>'。 – vainolo
在編輯問題後,我意識到他在談論「抽象」,而不是一般的刻板印象......我需要回顧我的回答 – Christian