2010-05-29 16 views
5

¿Cómo puedo indicar que un método devolverá una colección de objetos en UML? ¿Hay una mejor manera de explicar la relación que tener una clase de colección como un tipo de devolución?UML - Método de objeto Devuelve una colección

+0

No existe una alternativa real al uso de los tipos de devolución como se explica en las respuestas. Pero tal vez la etiqueta "patrón" es un poco engañosa aquí. – ShiDoiSi

Respuesta

4

Puede considerar el uso de una "asociación". Hay tres tipos básicos de asociación: composición, agregación y asociación "normal". Cada uno de ellos expresa una dependencia existencial diferente del todo a la parte y viceversa.

Generalmente las asociaciones se expresan conectando dos clases por una línea. La composición y la agregación tienen un símbolo de diamante en el lado del compuesto/agregado. El compuesto/agregado consiste en una o más partes. (Véase la wiki-article)

Ejemplo:

Immagine tiene dos clases: Biblioteca, Libro. Podemos decir que la Biblioteca es el todo y Reserva la parte. Podríamos anotarlo así (en ASCII, por favor google para diagramas reales).

Biblioteca (agregado) <> --- libro (parte)

Si quieres expresar estas relaciones de asociación será su amigo.

EDIT:

Como dije en el comentario, no creo que hay una notación especial para las colecciones devueltos. Sin embargo, tienes razón, devolver una Colección es un poco específico del idioma. Pero puede considerar devolver una matriz (String[]), que es una forma más general de representar un conjunto de valores y debería ser más independiente del lenguaje que una Colección. Depende entonces del programador cómo lo implementa. Puede usar un Collection, un vector C++ STL ... el punto es: devolver un conjunto de valores.

+0

Correcto, pero ¿cómo puedo indicar que un método está devolviendo esa asociación? – derekerdmann

+0

Por lo general, un método define el __behaviour__ de una clase. Por lo tanto, no hay forma de expresar que el método devuelve una colección utilizando un diagrama de clases (excepto para indicar su valor de retorno). – Simon

+0

Entonces, ¿solo diría que el método devuelve Collection (en Java)? Pensé que usar ese tipo de notación específica del lenguaje generalmente se evitaba en UML. – derekerdmann

0

Hmm, es cierto, que en los diagramas de clase UML no hay una forma explícita de expresar los tipos de colección. Leí un libro donde criticaron a UML por eso, pero mencionaron que en algunas versiones más eficientes de UML había tipos de colecciones. Otra cosa es el Object Constraint Language (OCL), que está integrado con UML (como el estándar OMG) y tiene sus propios tipos de colección con buenas operaciones.

7

Estoy llegando a esto un poco tarde, ya que estaba buscando una respuesta a una pregunta similar. Estoy escribiendo esto en caso de que alguien más esté buscando una respuesta similar.

¿Desea indicar que un método devuelve una colección de un tipo específico? Si es así, para un método, debería poder establecer el tipo del parámetro de retorno y la multiplicidad del parámetro de retorno en 0 .. * o 1 .. *. Esto indicaría que el método devuelve el tipo especificado y que tiene la multiplicidad que indique.

E.g. usando la biblioteca <> --- Ejemplo de libro, supongamos que hay un método en la biblioteca llamado GetBooks que toma un parámetro de cadena, un nombre de autor y devuelve una colección de instancias de libros. El UML sería algo como esto:

Biblioteca + GetBooks (authorName: String): libro [0 .. *]

Su herramienta de diagramas UML debe apoyar este; Estoy usando Magic Draw. Este UML establece que GetBooks devuelve 0 o muchas instancias de libros. Ahora le toca al programador decidir cómo implementar el parámetro de retorno en el lenguaje de implementación (como se indicó anteriormente por Simon).

0

Hay una manera indirecta de representar esto.

Puede definir otra clase compuesta que tenga la relación compuesta de 1 .. * con su tipo de devolución específico y utilice esta nueva clase compuesta como su tipo de devolución.

Por ej. si desea devolver una colección de la clase Libro, cree una nueva clase Libros con asociación 1 .. * con Libro y use la clase Libros como su tipo de devolución.

Cuestiones relacionadas