如何指示方法將返回UML中的對象集合?有沒有更好的方式來解釋關係,而不是將集合類作爲返回類型?UML - 對象方法返回集合
回答
您可能會考慮使用「關聯」。關聯有三種基本類型:組合,聚合和「正常」關聯。他們每個人都表達了整體對部分的不同存在依賴性,反之亦然。
通常,關聯通過將兩個類連接起來表示。合成和聚合在複合材料/聚合體一側有一個菱形符號。複合/聚合由一個或多個部分組成。想象,你有兩個類
:圖書館,圖書(見wiki-article)
例。我們可以說圖書館是整體,並預定這部分。我們可以像這樣指出它(用ASCII表示,請google用於真實圖表)。
庫(聚合)<> ---書(部分)
如果你想表達這些關係協會將成爲你的朋友。
編輯:
正如我在評論說,我不認爲這是對返回集合一個特殊的符號。然而,你是對的,返回一個集合是一種特定的語言。但是您可能會考慮返回一個數組(String[]
),這是一種更一般的方式來表示一組值,並且應該比集合更獨立於語言。接下來是程序員如何實現它。他可能會使用一個C++ STL向量Collection
......重點是:返回一組值。
沒錯,但是我將如何表明一種方法正在返回該關聯? – derekerdmann 2010-05-30 00:14:40
通常一個方法定義了一個類的__behaviour__。因此無法表達該方法通過使用類圖來返回集合(除了指示其返回值)。 – Simon 2010-05-30 00:21:56
那麼我只是說這個方法返回Collection
嗯,的確,在UML類圖中沒有明確的方式來表示集合類型。我讀過一本他們批評UML的書,但他們提到,在某些UML版本中,有一些集合類型。另一件事是對象約束語言(Object Constraint Language,OCL),它與UML(如OMG標準)集成在一起,並具有自己的集合類型和良好的操作。
因爲我在尋找類似問題的答案,所以我有點晚了。我寫這個incase其他人正在尋找類似的答案。
你想表明一個方法返回一個特定類型的集合嗎?如果是這樣,對於一種方法,您應該能夠將返回參數的類型和返回參數的多重性設置爲0 .. *或1 .. *。這將表明該方法返回指定的類型,並且它具有您聲明的任何多重性。
E.g.使用庫<> --- Book example,假設在Library上有一個名爲GetBooks的方法,它接受一個字符串參數,作者姓名並返回一組Book實例。 UML的會是這個樣子:
圖書館 + GetBooks(AUTHORNAME:字符串):書[0 .. *]
您的UML圖表工具應該支持這一點;我正在使用Magic Draw。這個UML指出GetBooks返回0或許多Book實例。現在由程序員決定如何在實現語言中實現返回參數(如上面由Simon所述)。
有一種間接的表現方式。
您可以定義另一個複合類,其複合關係爲1 .. *與您的特定返回類型並將此新複合類用作返回類型。
例如,如果要返回Book類的集合,請創建一個與Book有1 .. *關聯的新Books類,並使用Books類作爲返回類型。
- 1. 流星 - 來自方法的返回集合對象
- 2. 將對象返回方法
- 3. 返回webmethod中的對象集合
- 4. 結合的方法來反對返回其他對象
- 5. 無法返回對象方法名稱
- 6. Scriptcontrol對象返回記錄集對象
- 7. .NET集合和訪問對象方法
- 8. 在方法中返回一個數據集作爲對象
- 9. 如何從遠程方法返回結果集對象?
- 10. 返回集合
- 11. 使用executeFetchRequest返回對象的方法
- 12. 用toString()方法返回對象
- 13. 不能使對象方法返回var
- 14. 超類方法返回超類對象
- 15. 對象 - 以Swift3類返回方法
- 16. Moq返回一個方法的對象
- 17. 從方法創建並返回對象
- 18. 方法返回SBJson Objective-C的對象
- 19. 從Java方法返回對象
- 20. 返回undefined的Javascript對象方法?
- 21. jQuery Ajax方法不返回XHR對象
- 22. JavaScript對象方法返回null財產
- 23. 返回的python對象方法的Intellisense
- 24. 返回類型對象的方法
- 25. 目標C:從方法返回對象
- 26. 如何防止方法調用方修改返回的集合?
- 27. JMockit返回集合
- 28. java:返回集合
- 29. 如何確保對象方法返回預期的對象?
- 30. Nightwatch.js方法`.element()`返回「[對象的對象]」
如答案中所討論的那樣,使用返回類型沒有真正的選擇。但也許標籤「模式」在這裏有點誤導。 – ShiDoiSi 2010-08-06 07:52:53