En esta oportunidad trabajaremos en un ejemplo donde paso a paso iremos construyendo un diagrama de clases en UML; además aprenderemos ciertos aspectos que debemos tomar en cuenta para su realización y conoceremos un poco más sobre las Clases Abstract e Interface, ambas herramientas muy poderosas y por supuesto sencillas de manejar.
Para nuestro primer ejemplo se planteo un sencilla historia:
Steve es un amante de los animales pero a la vez un geek de la programación. Él colecciona arañas, gatos y peces y ha decidido hacer un pequeño sistema para poder manejar su colección de animales. Para ellos ha podido generar la siguiente información.
Las arañas, gatos y peces son animales. Todo animal tiene un numero de patas (8, 4 y 0 respectivamente). Por lo general un animal puede caminar y comer, aunque evidentemente cada uno de ellos lo hace de forma diferente (los peces por ejemplo, no caminan). A los gatos y a los peces por lo general se les da un nombre y ambos son mascotas (a las arañas no importa darles un nombre y mucha gente considera que no son mascotas). Por cada mascota se desea poder darle un nombre, saber cuál es ese nombre y jugar con él, aunque no todos los animales juegan de la misma manera.
¿Puedes tratar de generar un diagrama de clases en UML que permita darle solución a la información suministrada por Steve?. Recuerda que él puede tener varios animales.
Ahora procedamos a elaborar paso a paso su respectivo diagrama en UML:
Paso 1:
Procedemos a leer detalladamente la historia y tratamos de desglosar la informacion para facilitar la construccion del diagrama. En este caso podria desglosar la historia en dos bloques principales:
Las arañas, gatos y peces son animales. Todo animal tiene un numero de patas (8, 4 y 0) respectivamente). Por lo general un animal puede caminar y comer, aunque evidentemente cada uno de ellos lo hace de forma diferente (los peces por ejemplo, no caminan). A los gatos y a los peces por lo general se les da un nombre y ambos son mascotas (a las arañas no importa darles un nombre y mucha gente considera que no son mascotas). Por cada mascota se desea poder darle un nombre, saber cuál es ese nombre y jugar con él, aunque no todos los animales juegan de la misma manera.
Paso 2:
Seguidamente comenzamos a desarrollar cada uno de nuestros bloques principales:
►Bloque 1:
Las arañas, gatos y peces son animales: con esta información se hace evidente que tanto Araña, Gato y Pez son clases y juntas derivan de una clase Animal.
Todo animal tiene un numero de patas (8, 4 y 0) respectivamente): esto indica que cada animal posee un atributo "patas", y si Araña, Gato y Pez pertenecen a una clase Animal facilmente este atributo puede estar contenido en esta ultima clase.
Por lo general un animal puede caminar y comer, aunque evidentemente cada uno de ellos lo hace de forma diferente (los peces por ejemplo, no caminan): esta información es sumamente importante, ya que se hablan de dos metodos (caminar y comer) pero la particularidad es que cada uno lo hace de forma distinta. Para dar solucion a este problema aprenderemos a manejar la Clase Abstract.
La Clase Abstact tiene como principales caracteristicas que puede contener atributos propios, puede tener metodos implementados o simplemente firmas de metodos, trabaja con el principio de herencia y ademas puedes aplicar sobreescritura a metodos heredados o implementar tus metodos particulares en caso de heredar firmas. En el caso de utilizar firmas, éstas deben estar precedidas de la palabra reservada Abstarct.
Conociendo esta herramienta podemos facilmente dar solucion al problema anterior de la siguiente manera:
Definimos la Clase Animal como una Clase Abstrac y añadimos la firma del metodo caminar y comer porque a nivel de subclases, cada implementacion es diferente (en este caso cada animal come y camina de forma diferente). Seguidamente realizamos la implementacion de estos metodos en las clases Araña, Gato y Pez.
El diagrama del primer bloque quedaria de la siguiente manera:
►Bloque 2:
A los gatos y a los peces por lo general se les da un nombre y ambos son mascotas (a las arañas no importa darles un nombre y mucha gente considera que no son mascotas): Aqui se habla de una clase principal Mascota la cual solo contiene a la clase Gato y Pez, y como a toda mascota se le asigna un nombre, este atributo encaja perfectamente en la clase Mascota.
Por cada mascota se desea poder darle un nombre, saber cuál es ese nombre y jugar con él, aunque no todos los animales juegan de la misma manera: leyendo esta parte nos damos cuenta que debemos hacer ciertas modificaciones. Lo primero es convertir a la Clase Mascota en una de tipo Clase Interface.
La Clase Interface tiene como principales caracteristicas que no posee atributos y solo contiene firmas de metodos.
Si ahora Mascota es de tipo Interface debemos remover el atributo name y añadirlo directamente sobre la clase Gato y Pez. En cuanto al metodo jugar, como cada mascota lo hace de manera distinta, podemos agregar la firma de este metodo en la clase Mascota y su implementacion particular la realizamos en la clase Gato y Pez.
El diagrama del bloque 2 quedaria de la siguiente manera:
Paso 3:
Este paso consiste en combinar ambos bloques, para ello debemos considerar las relaciones que puedan existir entre ellas. En este ejemplo la clase Gato y Pez son tanto Animales como Mascotas y esta caracteristica nos permite generar un diagrama unico que tendria la siguiente forma:
Si eres de los que leen la historia una sola vez y piensan que han finalizado pues te recomiendo que sigas un paso adicional que te asegurara el exito no solo en la elaboracion de un diagrama sino en toda actividad que realices.
Paso 4:
A medida que volvemos a leer la historia completa vamos revisando si lo que expresa el diagrama cumple con lo solicitado. Si no hubiesemos realizado este paso posiblemente habriamos perdido un poco de puntuacion por presentar un diagrama imcompleto y lo digo por la siguiente razon. El ultimo parrafo dice:
¿Puedes tratar de generar un diagrama de clases en UML que permita darle solución a la información suministrada por Steve?. Recuerda que él puede tener varios animales.
Por lo tanto debemos realizar preferiblemente una List o un TreeSet de Animales la cual debe poseer metodos CRUD (añadir, borrar, buscar, modificar).
El diagrama final quedaria de la siguiente manera:
Ahora si podemos decir que hemos finalizado la representacion de la historia en un diagrama UML.
Espero que les haya gustado mi publicacion y cualquier duda o comentario es bien recibido solo recuerda hacerlo de manera respetuosa.
Espero que les haya gustado mi publicacion y cualquier duda o comentario es bien recibido solo recuerda hacerlo de manera respetuosa.
No hay comentarios.:
Publicar un comentario