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
Antwort
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.
Richtig, aber wie würde ich anzeigen, dass eine Methode diese Zuordnung zurückgibt? – derekerdmann
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
Also würde ich nur sagen, dass die Methode Collection
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.
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).
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.
- 1. Firebase gibt eine Sammlung als Array zurück
- 2. Sammlung findOne gibt undefiend zurück
- 3. Gibt es eine UML-Referenzkarte?
- 4. eine Objektmethode Zugriff mit Zweig
- 5. Gibt LINQ eine tiefe Kopie einer Sammlung zurück?
- 6. JavaScript eine Objektmethode über andere Javascript-Objekt
- 7. Warum gibt Pymongo keine Indexinformationen der Sammlung zurück?
- 8. in der Nähe gibt alle Dokumente in einer Sammlung zurück
- 9. Wie eine Objektmethode als Callback-Funktion verwenden
- 10. Gibt es eine Möglichkeit, eine Objektmethode automatisch in eine externe Funktion umzuwandeln?
- 11. Zurück aktualisierte Sammlung mit Mongoose
- 12. Objektmethode in Express-Sitzung
- 13. UML-Klassendiagramme: Beziehungen zu den Elementen einer Sammlung
- 14. Perl Einfädeln Objektmethode
- 15. Gibt eine zugewiesene Variable zurück
- 16. Warum gibt List.AsReadOnly eine ReadOnlyCollection zurück, aber Dictionary.AsReadOnly gibt ein IReadOnlyDictionary zurück?
- 17. MongoDB find gibt nichts zurück
- 18. Warum gibt Collections.max() den tatsächlichen Maximalwert für eine Sammlung von Zeichenfolgen nicht zurück?
- 19. Eine produktive Alternative zu UML
- 20. eine Sammlung
- 21. Textdarstellung für UML-Klassendiagramme - DSL für UML
- 22. backbone.js iterieren eine Sammlung
- 23. So geben Sie eine schreibgeschützte Kopie einer Sammlung zurück
- 24. Mungo Objektmethode ist keine Funktion
- 25. Kontext in Funktion in Objektmethode
- 26. gibt eine SPListItemCollection mit einem zufälligen Element zurück
- 27. UML Klassendiagramm Beziehungstyp
- 28. XDocument.Descendants() gibt keine Elemente zurück
- 29. Wann gibt getGraphics() eine gültige Grafikinstanz zurück?
- 30. pytest fixture gibt immer eine Funktion zurück
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