2010-05-29 71 views
5

如何指示方法將返回UML中的對象集合?有沒有更好的方式來解釋關係,而不是將集合類作爲返回類型?UML - 對象方法返回集合

+0

如答案中所討論的那樣,使用返回類型沒有真正的選擇。但也許標籤「模式」在這裏有點誤導。 – ShiDoiSi 2010-08-06 07:52:53

回答

4

您可能會考慮使用「關聯」。關聯有三種基本類型:組合,聚合和「正常」關聯。他們每個人都表達了整體對部分的不同存在依賴性,反之亦然。

通常,關聯通過將兩個類連接起來表示。合成和聚合在複合材料/聚合體一側有一個菱形符號。複合/聚合由一個或多個部分組成。想象,你有兩個類

:圖書館,圖書(見wiki-article

例。我們可以說圖書館是整體,並預定這部分。我們可以像這樣指出它(用ASCII表示,請google用於真實圖表)。

庫(聚合)<> ---書(部分)

如果你想表達這些關係協會將成爲你的朋友。

編輯:

正如我在評論說,我不認爲這是對返回集合一個特殊的符號。然而,你是對的,返回一個集合是一種特定的語言。但是您可能會考慮返回一個數組(String[]),這是一種更一般的方式來表示一組值,並且應該比集合更獨立於語言。接下來是程序員如何實現它。他可能會使用一個C++ STL向量Collection ......重點是:返回一組值。

+0

沒錯,但是我將如何表明一種方法正在返回該關聯? – derekerdmann 2010-05-30 00:14:40

+0

通常一個方法定義了一個類的__behaviour__。因此無法表達該方法通過使用類圖來返回集合(除了指示其返回值)。 – Simon 2010-05-30 00:21:56

+0

那麼我只是說這個方法返回Collection (用Java)?我認爲在UML中通常避免使用這種語言特定的表示法。 – derekerdmann 2010-05-30 00:51:33

0

嗯,的確,在UML類圖中沒有明確的方式來表示集合類型。我讀過一本他們批評UML的書,但他們提到,在某些UML版本中,有一些集合類型。另一件事是對象約束語言(Object Constraint Language,OCL),它與UML(如OMG標準)集成在一起,並具有自己的集合類型和良好的操作。

7

因爲我在尋找類似問題的答案,所以我有點晚了。我寫這個incase其他人正在尋找類似的答案。

你想表明一個方法返回一個特定類型的集合嗎?如果是這樣,對於一種方法,您應該能夠將返回參數的類型和返回參數的多重性設置爲0 .. *或1 .. *。這將表明該方法返回指定的類型,並且它具有您聲明的任何多重性。

E.g.使用庫<> --- Book example,假設在Library上有一個名爲GetBooks的方法,它接受一個字符串參數,作者姓名並返回一組Book實例。 UML的會是這個樣子:

圖書館 + GetBooks(AUTHORNAME:字符串):書[0 .. *]

您的UML圖表工具應該支持這一點;我正在使用Magic Draw。這個UML指出GetBooks返回0或許多Book實例。現在由程序員決定如何在實現語言中實現返回參數(如上面由Simon所述)。

0

有一種間接的表現方式。

您可以定義另一個複合類,其複合關係爲1 .. *與您的特定返回類型並將此新複合類用作返回類型。

例如,如果要返回Book類的集合,請創建一個與Book有1 .. *關聯的新Books類,並使用Books類作爲返回類型。