Modelando Java con UML I : Clases

11 Comments

A muchos programadores, sobretodo en Nicaragua, se lanzan al ruedo sin saber analizado tan si quiera lo mas minimo un sistema, web o de escritorio, mi experiencia es en el ambiente web, y como analista y programador, como a muchos les debe de pasar, las empresas nunca tienen tiempo para dedicarle al Análisis, luego vienen los clavos, y la culpa, siempre del Programador.

La mejor forma de analizar es con la Metodología, UML es un buen lenguaje para analizar. Yo anteriormente presente una Metodología muy buena, que use en mi Monografia, Fusión.

Pero lo dificiles para muchos, sobre todo los que inician programando y luego usan UML como herramienta de documentacion (mala idea), se les hace dificil modelar.

Iniciare con algo sencillo.

Herencia

La herencia, simplemente se dibuja como una Generalización en UML y se representa en Java como un extends.

package org.jp.developer.test;
 
public class Padre {
 
}
 
public class Hijo extends Padre {
 
}

Asociación

Las asociaciones son instancias de clases dentro de otras clases, pero sin ninguna relacion directa o indirecta, solo estan relacionadas.

//Asociacion Directa
public class Hijo {
	Padre padre;
}
Asociacion Directa

En este ejemplo, Padre e Hijo, Padre es el cabeza de familia, pero la Vida del Hijo no depende de la del padre, solo tiene una relacion familiar, por eso la relación directa, se dibuja una flecha de Hijo->Padre, pues Hijo es el que tiene relacion con el Padre. Si en el caso que Padre tuviese una instancia de Hijo la relacion seria Bidireccional y se dibuja como una linea recta.

Asociaciones con Multiplicidad

Existe multiplicidad, cuando existen Objetos como Array, List, Vector, Collection, donde representa que se pueden almacenar uno o muchos objetos, en este caso Padre.

//Asociacion 0 a Muchos
public class Hijo {
	private List ListaPadres;
}

Agregación y Composición

La agregación y la composición pueden ser un poco confusas, una agregación en Java se representa como una Asociación, pero tiene un enfoque diferente, la agregacion representa una parte de un todo, pero no necesariamente tiene que existir para que el todo exista, es el caso de Aplicacion y Base de Datos, una aplicación puede existir sin ella, igualmente una Base de Datos no necesita una Aplicación para existir. En el caso de la composición, es diferente, en el ejemplo puse la clase Codigo, que es parte de la composición de Aplicación, que no puede existir sin Código, por eso se dibujo como una Composición.

package org.jp.developer.test;
 
public class Aplicacion {
	private Codigo codigo;
	private BaseDeDatos bd;
}
public class Codigo {
}
public class BaseDeDatos {
}