2010-05-29 10 views
5

Wie kann ich angeben, dass eine Methode eine Sammlung von Objekten in UML zurückgibt? Gibt es eine bessere Möglichkeit, die Beziehung zu erklären, als eine Sammlungsklasse als Rückgabetyp zu haben?UML - Objektmethode gibt eine Sammlung zurück

+0

Es gibt keine echte Alternative zur Verwendung von Rückgabetypen, wie in den Antworten beschrieben. Aber vielleicht ist das Tag "Muster" hier ein bisschen irreführend. – ShiDoiSi

Antwort

4

Sie können eine "Assoziation" verwenden. Es gibt drei grundlegende Arten der Assoziation: Zusammensetzung, Aggregation und "normale" Assoziation. Jeder von ihnen drückt eine andere existenzielle Abhängigkeit des Ganzen vom Teil aus und umgekehrt.

Normalerweise werden Assoziationen ausgedrückt, indem zwei Klassen durch eine Linie verbunden werden. Zusammensetzung und Aggregation haben ein Diamantsymbol auf der Seite des Komposits/Aggregats. Das Komposit/Aggregat besteht aus einem oder mehreren Teilen. (Siehe wiki-article)

Beispiel:

Immagine Sie zwei Klassen: Bibliothek, Buch. Wir können sagen, dass die Bibliothek das Ganze ist und den Teil buchen. Wir könnten es so notieren (in ASCII, bitte google für echte Diagramme).

Library (Aggregate) <> --- Buch (Teil)

Wenn Sie diese Beziehungen Vereinigung dein Freund sein wollen zum Ausdruck bringen.

EDIT:

Wie ich im Kommentar gesagt, ich glaube nicht, dass es eine spezielle Notation für zurückgegebene Sammlungen. Sie haben jedoch recht, wenn Sie eine Sammlung zurückgeben, ist sie sprachspezifisch. Sie können jedoch in Erwägung ziehen, ein Array (String[]) zurückzugeben, das eine allgemeinere Methode zur Repräsentation einer Gruppe von Werten darstellt und mehr sprachunabhängig sein sollte als eine Collection. Es liegt dann beim Programmierer, wie er es implementiert. Er kann einen Collection, einen C++ STL-Vektor verwenden ... der Punkt ist: gebe eine Menge von Werten zurück.

+0

Richtig, aber wie würde ich anzeigen, dass eine Methode diese Zuordnung zurückgibt? – derekerdmann

+0

Normalerweise definiert eine Methode das Verhalten einer Klasse. Es gibt also keine Möglichkeit auszudrücken, dass die Methode eine Auflistung mithilfe eines Klassendiagramms zurückgibt (außer dass sie ihren Rückgabewert angibt). – Simon

+0

Also würde ich nur sagen, dass die Methode Collection (in Java) zurückgibt? Ich dachte, diese Art von sprachspezifischer Notation würde in UML generell vermieden. – derekerdmann

0

Hmm, es ist wahr, dass es in UML-Klassendiagrammen keine explizite Möglichkeit gibt, Collection-Typen auszudrücken. Ich las ein Buch, in dem sie UML dafür kritisierten, aber sie erwähnten, dass es in einigen früheren Versionen von UML Collections-Typen gab. Eine andere Sache ist die Object Constraint Language (OCL), die mit UML (als OMG-Standard) integriert ist und ihre eigenen Sammlungstypen mit netten Operationen hat.

7

Ich komme etwas spät dazu, da ich nach einer Antwort auf eine ähnliche Frage suchte. Ich schreibe diese incase, jemand anderes sucht nach einer ähnlichen Antwort.

Möchten Sie angeben, dass eine Methode eine Auflistung eines bestimmten Typs zurückgibt? Wenn dies der Fall ist, sollten Sie für eine Methode den Typ des Rückgabeparameters und die Multiplizität des Rückgabeparameters auf 0 .. * oder 1 .. * setzen können. Dies würde anzeigen, dass die Methode den angegebenen Typ zurückgibt und die von Ihnen angegebene Multiplizität aufweist.

z. Verwenden Sie die Bibliothek <> --- Buch Beispiel, angenommen, es gibt eine Methode namens GetBooks in der Bibliothek, die einen String-Parameter, Autorenname, und eine Sammlung von Book-Instanzen zurückgibt. Die UML etwas würde wie folgt aussehen:

Bibliothek + GetBooks (author: string): Buch [0 .. *]

Ihre UML-Diagramme Tool sollte dies unterstützen; Ich benutze Magic Draw. Diese UML gibt an, dass GetBooks 0 oder viele Book-Instanzen zurückgibt. Es liegt nun am Programmierer zu entscheiden, wie der Rückgabeparameter in der Implementierungssprache implementiert wird (wie oben von Simon ausgeführt).

0

Es gibt eine indirekte Möglichkeit, dies darzustellen.

Sie können eine weitere zusammengesetzte Klasse definieren, die die zusammengesetzte Beziehung 1 .. * mit Ihrem spezifischen Rückgabetyp hat, und diese neue zusammengesetzte Klasse als Rückgabetyp verwenden.

Für z.B. Wenn Sie eine Sammlung der Book-Klasse zurückgeben möchten, erstellen Sie eine neue Books-Klasse mit 1 .. * -Verbindung mit Book und verwenden Sie die Books-Klasse als Rückgabetyp.

Verwandte Themen