Modelando Java con UML I : Clases

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 {
}

Te Puede Interesar

Tags: , , , , , , , ,

  • esteban
    Tienes varios errores de concepto mi amigo.
    UML no es una metodología, es un lenguaje de modelado formado por símbolos y es utilizado por muchas metodologías.
    UML si es un lenguaje para documentar. De hecho es un lenguaje para comunicar cosas, por lo tanto se utiliza en la documentación.
    Por otro lado, la herencia, no es lo mas usado en Java. Lo mas usado es composición. En una clase siempre se hereda una sola vez, pero siempre se componen de muchos objetos de tipos muy variados. Es un error suponer que la herencia es la característica mas importante de la POO, y el error mas común es utilizarla a diestra y siniestra sin sentido solo porque es un buen recurso.
    Y si quieres explicar usando código agregación y composición simplemente di que una variable local de una clase es composición y un objeto pasado como parámetro en el constructor es agregación.
  • Esteban,

    creo que tal vez no complete la frase, no me referia que fuera una Metodologia, sino que la mejor forma de analizar era con la Metodologia, fijse en la coma, error mio no iniciar bien la otra frase, disculpas. Queria decir UML es un lenguaje... etc etc.

    Creo que en lo de la herencia si tiene razón, me equivoque vamos arreglar eso.

    Gracias por tus comentarios.
blog comments powered by Disqus

© 2009 JotaDeveloper. Nuestros contenidos están bajo licencia Creative Commons mientras no se indique lo contrario,
y pueden reproducirse libremente sin más que mencionar la fuente ("JotaDeveloper") y la URL concreta del artículo original. .

This blog is powered by Wordpress and JotaDeveloperTheme.