Você está na página 1de 7

FRT UTN Paradigmas de Programacin

UML y proyectos de aplicacin Java.


Nuestro objetivo en este escrito, es brindar al estudiante un ejemplo que a partir de las relaciones
de generalizacin, composicin y agregacin entre clases, permita detallar conceptos de relevante
importancia en la POO como lo son: objetos, instanciacin, encapsulacin, constructores,
polimorfismo, herencia y reutilizacin de cdigo.
En Netbeans 6.9.1 construimos un diagrama de clases sobre un proyecto UML como Modelo de
Plataforma Java. Dicho diagrama involucra las clases Persona, Estudiante y Fecha. Con la relacin
de generalizacin entre las clases Estudiante y Persona, la relacin de composicin dirigida entre
las clases Persona y Fecha, con multiplicidad uno a uno y la relacin de agregacin dirigida entre
las clases Estudiante y Fecha, tambin con multiplicidad uno a uno.

El objetivo de este ejemplo es muy simple, permitir la creacin de objetos Estudiante o Persona
asignndole valores a sus propiedades al instanciar sus clases y mostrar los objetos a partir del
contenido de sus propiedades. Ya que estamos dando los primeros pasos, no resolvemos un

FRT UTN Paradigmas de Programacin


problema planteado sobre un escenario, sino que vamos a manipular objetos que pueden ser
parte de escenarios que se pueden plantear en el futuro.
Observamos en el diagrama que las propiedades nacimiento e inscripcin, de las clases Persona y
Estudiante respectivamente, se describen en las relaciones, por lo cual se detallan sus set y get
como mtodos. Todas las propiedades son privadas y cada una de ellas puede ser modificada a
partir de su mtodo mutador (set) o consultada desde su mtodo accesor (get). Esto trae
aparejado la implementacin del concepto de encapsulacin, donde las propiedades solo son
accesibles desde la clase misma y para accederlas desde otro mbito debemos utilizar sus
mutadores o accesores.
Cdigo Java generado a partir del Diagrama de clases
El cdigo en el lenguaje de programacin Java lo podemos construir automticamente desde el
proyecto UML hacia un proyecto de aplicacin Java que porque no, contenga la clase Main y el
mtodo main(). Esto lo vamos a lograr primero creando el proyecto de aplicacin Java que
contenga la clase Main y luego desde el proyecto UML podremos generar el cdigo hacia dicho
proyecto.
El cdigo generado a partir del diagrama de clases se genera en nuestro proyecto en el paquete
default que pertenece a Source Package (paquete de fuentes). Siempre un archivo .java por cada
clase interviniente en el diagrama.
Para todas las clases se genera el cdigo Java que describe: las propiedades, un constructor y los
respectivos accesores y mutadores de las propiedades. Sobre las relaciones, solo observamos que
se refleja en el cdigo, la de generalizacin de Estudiante hacia Persona. Las relaciones de
composicin y agregacin las tenemos que construir nosotros.

FRT UTN Paradigmas de Programacin


Cdigo generado automticamente
Clase Fecha y Persona

FRT UTN Paradigmas de Programacin


Clase Estudiante

Objetivos generales
Es tiempo de detenernos y plantear nuestros objetivos para con este ejemplo.
-

Principalmente pretendemos observen la facilidad para construir cdigo Java a partir de


un diagrama de clases.
Y que el cdigo obtenido es bsico y requiere de modificaciones o agregados.

Tambin es importante destacar que nuestro ejemplo puede ser parte de un escenario cualquiera
donde intervienen personas y estudiantes. Y tan bsico que nos permite involucrar conceptos
trascendentes del paradigma orientado a objetos como lo son:
-

Instanciacin de clases
Objetos
Encapsulacin
Herencia
Constructores
Polimorfismo de parmetros
Polimorfismo de herencia

FRT UTN Paradigmas de Programacin


-

Clase Object y redefinicin del mtodo toString(), polimorfismo.

Ahora veamos cuales seran los objetivos de nuestro proyecto de aplicacin Java:
-

Crear un objeto Persona que componga su objeto nacimiento como propiedad.


Crear un objeto Fecha para agregarlo en un objeto Estudiante.
Crear un objeto Estudiante que componga su fecha de nacimiento y agregue un objeto
Fecha para su inscripcin.
En todos los casos, al ser instanciada una clase que el constructor reciba los parmetros
necesarios para asignar valores a las propiedades.
Mostrar los objetos Estudiante y Persona a partir de sus propiedades.

Segn lo expuesto en el ltimo punto, nuestro mtodo main() de la clase Main debera poseer el
siguiente cdigo:
public static void main(String[] args) {
Persona p = new Persona("Juan",20,1,4,1991);
Fecha hoy = new Fecha(23,5,2012);
Estudiante e = new Estudiante("Pepe",23,1,3,1989,2233,"ISI",hoy);
e.mostrar();
p.mostrar();
}
Y es evidente que debemos adaptar nuestro cdigo fundamentalmente sobre los constructores y
escribiendo el mtodo mostrar().
Adaptacin o modificacin del cdigo Java de las clases
Clase Fecha
Escribiremos un constructor con la capacidad de recibir tres enteros para asignar a sus
propiedades y un mtodo toString() que devuelva la fecha como cadena y en el formato
dd/mm/aaaa.
public Fecha(int dia, int mes, int ao) {
this.setDia(dia);
this.setMes(mes);
this.setAo(ao);
}
@Override
public String toString() {
return getDia() + "/" + getMes() + "/" + getAo();
}
Donde observamos que toString() es una reescritura del mtodo toString() de la clase Object de la
biblioteca java.lang.Object, ya que Java generaliza la clase Fecha hacia la clase Object

FRT UTN Paradigmas de Programacin


automticamente. Con esto podremos concatenar un objeto de tipo Fecha a una cadena haciendo
uso del mtodo toString() reescrito en la herencia Object-Fecha y polimrfico.
Clase Persona
Escribiremos un constructor con la capacidad de recibir una cadena para el nombre, un entero
para la edad y tres enteros para la fecha de nacimiento. Que asigne los parmetros recibidos a sus
propiedades y que instancie la clase Fecha componiendo el objeto nacimiento.
public Persona (String nombre, int edad, int dia, int mes, int ao){
this.setEdad(edad);
this.setNombre(nombre);
nacimiento = new Fecha(dia,mes,ao);
}
Tambin implementamos el mtodo toString() que devuelva una cadena con el contenido de las
propiedades, en definitiva polimrfico con el mtodo toString() de la clase Object, ya que Java nos
establece automticamente la relacin de generalizacin Object-Persona.
@Override
public String toString(){
return "Persona:{ " + getNombre() + ", " + getEdad() + ", " + getNacimiento() + " }";
}
Y finalmente escribimos el mtodo mostrar() que produce la salida en la consola de lo entregado
por el mtodo toString().
public void mostrar(){
System.out.printf("%s\n", toString());
}
Clase Estudiante
Aqu tenemos que implementar un constructor con la capacidad de recibir los valores para las
propiedades del estudiante como estudiante y como persona. Respetando la agregacin de una
fecha para la propiedad inscripcin y la composicin de la fecha de nacimiento.
public Estudiante (String nombre, int edad, int dia, int mes, int ao,
int legajo, String carrera, Fecha hoy) {
super(nombre, edad, dia, mes, ao);
setCarrera(carrera);
setLegajo(legajo);
setInscripcion(hoy);
}
Los mtodos toString() y mostrar() que son reescritos en esta clase ya que existen en las clases
Object y Persona respectivamente. toString() debe reutilizar el cdigo del mtodo toString() de la
clase Persona.

FRT UTN Paradigmas de Programacin

@Override
public String toString(){
return "Estudiante: { " + super.toString() + ", " + getLegajo() +
", " + getCarrera() + ", " + getInscripcion() + " }";
}
@Override
public void mostrar(){
System.out.printf("%s\n", toString());
}
Ejecucin del proyecto

Conclusiones
Nuestro pequeo proyecto de aplicacin Java, simplemente nos permite crear objetos de tipo
Persona, Estudiante y Fecha y mostrar sus propiedades. Las funcionalidades son escasas pero su
contenido muy rico en conceptos del paradigma.
-

Encapsulamos las propiedades de las clases definiendo su accesibilidad privada e


implementando los mtodos accesores y mutadores.
Expresamos el polimorfismo de parmetros a partir de la reescritura de los mtodos
constructores, con y sin parmetros. Con esto tenemos la posibilidad de crear objetos con
y sin valores en sus propiedades.
Pasamos parmetros al instanciar una clase derivada desde el main(), hasta inicializar las
propiedades de la clase superior, haciendo uso de la palabra reservada super.
Definimos mtodos polimrficos en cuanto a la herencia como toString() y mostrar().
Hacemos reutilizacin de cdigo, utilizando la palabra reservada super.

Você também pode gostar