Jak mogę wskazać, że metoda zwróci kolekcję obiektów w języku UML? Czy istnieje lepszy sposób wyjaśnienia relacji niż posiadanie klasy kolekcji jako typu zwrotu?UML - Metoda obiektowa Zwraca kolekcję
Odpowiedz
Możesz rozważyć użycie "powiązania". Istnieją trzy podstawowe typy powiązań: skład, agregacja i "normalne" powiązanie. Każdy z nich wyraża inną egzystencjalną zależność całości od części i odwrotnie.
Zwykle asocjacje wyrażane są przez połączenie dwóch klas za pomocą linii. Skład i agregacja mają symbol diamentu po stronie kompozytu/agregatu. Kompozyt/kruszywo składa się z jednej lub więcej części. (Patrz wiki-article)
Przykład:
Immagine masz dwie klasy: Biblioteka, książka. Możemy powiedzieć, że Biblioteka jest całością i Zarezerwuj część. Możemy to zapisać w ten sposób (w ASCII, proszę google na prawdziwe diagramy).
Library (łącznie) <> --- Book (Part)
Jeśli chcesz wyrazić te relacje stowarzyszenie będzie twoim przyjacielem.
EDIT:
Jak powiedział w komentarzu, nie sądzę, nie ma specjalnej notacji dla powracających kolekcjach. Jednak masz rację, zwrot kolekcji jest specyficzny dla danego języka. Ale możesz rozważyć zwrócenie tablicy (String[]
), która jest bardziej ogólnym sposobem reprezentowania zestawu wartości i powinna być bardziej niezależna od kolekcji. To zależy od programisty, w jaki sposób go realizuje. Może używać wektora Collection
, C++ STL ... punktem jest: zwraca zestaw wartości.
Dobrze, ale jak wskazałbym, że metoda zwraca to skojarzenie? – derekerdmann
Zazwyczaj metoda definiuje __behaviour__ klasy. Tak więc nie ma sposobu, aby wyrazić, że metoda zwraca kolekcję za pomocą diagramu klas (z wyjątkiem wskazania jego wartości zwracanej). – Simon
Tak więc chciałbym tylko powiedzieć, że metoda zwraca Collection
Hmm, to prawda, że w diagramach klas UML nie ma wyraźnego sposobu na wyrażenie typów kolekcji. Czytałem książkę, w której skrytykowali UML za to, ale wspomnieli, że w niektórych bardziej eraltowych wersjach UML były typy kolekcji. Kolejną rzeczą jest Object Constraint Language (OCL), który jest zintegrowany z UML (jako standard OMG) i ma własne typy kolekcji z ładnymi operacjami.
Podchodzę do tego trochę spóźniony, ponieważ szukałem odpowiedzi na podobne pytanie. Piszę o tym, ktoś inny szuka podobnej odpowiedzi.
Czy chcesz wskazać, że metoda zwraca kolekcję określonego typu? Jeśli tak, dla metody powinieneś być w stanie ustawić typ parametru zwracanego i krotności parametru zwracającego na 0 .. * lub 1 .. *. To by wskazywało, że metoda zwraca określony typ i że ma on dowolną wielokrotność, którą podajesz.
E.g. przy użyciu biblioteki <> --- Przykład książki, załóżmy, że w bibliotece istnieje metoda o nazwie GetBooks, która pobiera parametr ciągu, nazwę autora i zwraca kolekcję instancji Book. UML będzie wyglądać mniej więcej tak:
Biblioteka + GetBooks (AUTHORNAME: String): książki [0 .. *]
Twój diagramów UML narzędzie powinno to wspierać; Używam Magic Draw. Ten UML stwierdza, że GetBooks zwraca 0 lub wiele instancji Book. Teraz od programistów zależy, jak zaimplementować parametr powrotu w języku implementacji (jak stwierdził Simon).
Istnieje pośredni sposób reprezentowania tego.
Można zdefiniować inną klasę złożoną, która ma złożoną relację 1 .. * z określonym typem zwracanej wartości i użyć tej nowej klasy złożonej jako typu zwracanego.
Dla np. jeśli chcesz zwrócić kolekcję klasy Book, utwórz nową klasę Książki z powiązaniem 1 .. * z Książką i użyj klasy Książki jako typu zwrotu.
- 1. Metoda nazwy QSqlField zwraca ""
- 2. Jak sprawdzić, czy metoda zwraca kolekcję <Foo> w Javie?
- 3. Jak utworzyć rozszerzenie znaczników XAML, które zwraca kolekcję
- 4. Metoda wątku C# zwraca wartość?
- 5. Python <-> Komunikacja obiektowa C++
- 6. Jak Metoda Nadklasa zwraca instancję podklasy
- 7. Dlaczego metoda właściwości CIImage zwraca zero
- 8. Metoda F # zwraca wartość null zamiast opcji
- 9. Czy metoda fabryka zwraca wartość NULL?
- 10. Kiedy metoda Microsoft.Win32.OpenFileDialog.ShowDialog() zwraca wartość null?
- 11. Metoda get hashmap nie zwraca wartość null
- 12. Metoda Kafka stream.allMetadata() zwraca pustą listę
- 13. Metoda tworzenia OpenERP zwraca błąd odmowy dostępu
- 14. Wiosna Bezpieczeństwo getPrincipal() Metoda zwraca AnonymousUser
- 15. NSKeyedUnarchiver unarchiveObjectWithFile: zwraca zero w init: metoda
- 16. Metoda GetProperties z BindingFlags.Public nie zwraca niczego.
- 17. Dlaczego metoda AndroidTestCase.getContext(). GetApplicationContext() zwraca wartość null?
- 18. Jersey zwraca status HTTP 405 - Metoda niedozwolona
- 19. Objective-C i UML Modelowanie
- 20. backbone.js iteruje kolekcję
- 21. Scala: filtrowanie kolekcję Options
- 22. Skróć kolekcję
- 23. Jak upuścić kolekcję w MongoDB?
- 24. Intellij UML Diagramy
- 25. UML do reprezentacji XML
- 26. Wizualizacja czasu UML
- 27. Rysowanie diagramów stanu UML
- 28. Schemat klasy UML MVC
- 29. JS Nawigacja obiektowa - kiedy użyć object.sub i object ["sub"]?
- 30. Scala: jak połączyć kolekcję map
Nie ma prawdziwej alternatywy dla używania typów zwrotu, o których mowa w odpowiedziach. Ale może tag "wzór" jest tu trochę mylący. – ShiDoiSi