0% encontró este documento útil (0 votos)
19 vistas

Prácticas Java Uned

Cargado por

Piloto Pelota
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas

Prácticas Java Uned

Cargado por

Piloto Pelota
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

Prácticas Java 2010

PRACTICAS JAVA CURSO 2009-2010


UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA

1
Prácticas Java 2010

Índice
ETAPA 1......................................................................................................................................3
Introducción............................................................................................................................3
Diseño y Codificación.............................................................................................................3
ETAPA 2......................................................................................................................................4
Introducción............................................................................................................................4
Diseño y Codificación.............................................................................................................4
ETAPA 3......................................................................................................................................6
Introducción............................................................................................................................6
Diseño y Codificación.............................................................................................................6

2
Prácticas Java 2010

ETAPA 1

Introducción
En esta primera parte de la práctica se creará la clase Persona con todos sus atributos y
comportamientos. Se utilizará también una clase Main para lanzar la aplicación, la cual
contendrá el método estático main.

Diseño y Codificación
La clase Persona contiene los siguientes miembros:
Miembro Tipo Comentarios
nombre String Atributo
apellidos String Atributo
nif String Atributo
sexo String Atributo
añoNacimiento int Atributo
toString() Método Sobreescribe toString de Object
getEdad(int) Método Devuelve la edad a partir del año actual

Además para cada atributo se incorpora un método de acceso de lectura get y un método de
acceso de escritura set, todos ellos públicos. También se dispone de un constructor con
argumentos, un argumento para cada atributo de la clase, de modo que se pueden crear
instancias de esa clase (objetos Persona) mediante ese constructor, especificando valores
para todos sus atributos.
El método toString, sobreescrito de la clase Object, permite obtener un String en
representación del contenido del objeto, resulta útil para las salidas por consola a través del
método System.out.println, al cual le pasaremos un objeto de la clase Persona en lugar de un
String, la invocación a toString es automática.

3
Prácticas Java 2010

ETAPA 2

Introducción
En esta segunda parte de la práctica se trabajará con otros conceptos, como el de herencia y
asociación. Para ello se añadirán al modelo 2 nuevas clases, Cliente, clase hija de Persona y
GestorClientes, clase que permite trabajar con objetos de tipo Persona y Cliente. De nuevo
una clase Main contendrá el método ejecutable main.

Diseño y Codificación
La clase Cliente, que hereda de Persona, añade los siguientes miembros:

Miembro Tipo Comentarios


numeroCliente long Atributo
añoAlta int Atributo
puntos long Atributo
add10Puntos() Método Añade 10 puntos al Cliente
add20Puntos() Método Añade 20 puntos al Cliente
add30Puntos() Método Añade 30 puntos al Cliente
consultarPuntos() Método Permite consultar los puntos del Cliente

De nuevo se incorporan métodos de acceso get y set para cada atributo, excepto el método
de lectura get de puntos el cual no se incorpora al disponerse de un método consultarPuntos
que realiza el cálculo adicional del 10% sobre la antigüedad del Cliente.
Se sobreescribe también toString en la clase Cliente para añadir los valores de los atributos
que añade a Persona la clase Cliente.
Disponemos para Cliente de 2 constructores, uno que inicializa todos sus atributos y otro que
recibe como primer argumento un objeto Persona, el objetivo de este constructor es crear el
Cliente a partir de una Persona, de modo que reutiliza los valores de los atributos de Persona
para inicializar el Cliente.
La clase GestorClientes se encarga de gestionar todos los aspectos del sistema de Gestión
de Clientes, de modo que se incorporan en ella todos los métodos descritos en el enunciado
de la práctica:

Miembro Tipo Comentarios


addCliente(Persona p) Método Añade una Persona al sistema
removeCliente(String nif) Método Elimina del sistema la Persona según nif
listarClientes() Método Lista todas las Personas del sistema
listarClientesXXX() Método Lista, según el atributo XXX, todas las
Personas del sistema, incluye métodos
específicos para los atributos de Cliente

4
Prácticas Java 2010

Para almacenar los objetos se usa un contenedor de tipo lista, ArrayList, al que se irán
añadiendo los objetos Persona y Cliente. Utilizaremos los métodos de esa clase para
implementar los métodos de listado. La creación del contenedor de objetos, en este caso del
ArrayList, se realiza en el constructor por defecto de la clase, que siempre se ejecuta como es
sabido.
El mecanismo de herencia garantiza que los atributos (al ser protected) y todos los métodos
pasen directamente a la clase Cliente.
Al parametrizar el método addCliente(Persona p) con objetos Persona se puede invocar con
objetos Persona y Cliente, al ser objetos de una clase derivada, esto se debe al polimorfismo,
característica fundamental de la programación orientada a objetos.

5
Prácticas Java 2010

ETAPA 3

Introducción
Por último, añadiremos al proyecto una nueva clase, ClienteVIP, que conservará todos los
atributos de Cliente pero sobreescribirá el comportamiento del método consultarPuntos y del
método toString, para poder identificar a este tipo de Cliente. También se modificará
convenientemente la clase GestorClientes para adaptarla a los requisitos de la práctica.

Diseño y Codificación
Los cambios añadidos a GestorClientes, los de ClienteVIP se han detallado en el párrafo
anterior, consisten en añadir los métodos:

Miembro Tipo Comentarios


eliminarCliente(long numeroCliente) Método Elimina el Cliente con el numero indicado
eliminarCliente(int añoHasta) Método Elimina los Clientes con alta anterior al
año especificado
transformarEnVIP() Método Son 2 métodos, uno parametrizado con el
nif para convertir ese Cliente en VIP y el
otro análogo pero con argumento el
número de cliente
transformarEnNormal() Método Son 2 métodos, uno parametrizado con el
nif para convertir ese ClienteVIP en
Cliente “normal” y el otro análogo pero
con argumento el número de cliente

En lo relativo al polimorfismo, cabe mencionar, también en relación a las cuestiones


planteadas al respecto en la práctica que las clases Cliente y ClienteVIP, aún teniendo la
misma estructura en lo relativo a atributos, difieren en su semántica y el comportamiento de
algunos de sus métodos. Gracias al polimorfismo podemos introducir instancias de esas
clases en el Gestor de Clientes e invocar los comportamientos correspondientes al tipo
correcto, es decir si se invoca consultarPuntos de un objeto de la clase Cliente el
comportamiento será diferente de cuando el objeto es de la clase ClienteVIP, esto se debe a
la característica denominada “ligadura dinámica” y del comportamiento polimórfico integrado
en Java.
A la hora de implementar los métodos de conversión de tipo de Cliente, transformarEnVIP y
transformarEnNormal se hará uso de los constructores correspondientes, a los que le
pasaremos los valores de los atributos del objeto Cliente que hace las veces de parámetro,
esto se puede hacer así pues los atributos de Cliente y ClienteVIP coinciden y a partir de uno
es posible crear otro sin mas que invocar al constructor correspondiente con los parámetros
adecuados. Tras obtener el Cliente del tipo adecuado, bien Cliente (normal) o ClienteVIP se
sustituirá en el Gestor de Clientes el Cliente anterior por el Cliente del tipo nuevo, de este
modo al invocar posteriormente los comportamientos de esos objetos se ejecutarán los
métodos coherentemente con el tipo del objeto.

También podría gustarte