Académique Documents
Professionnel Documents
Culture Documents
INFORMTICA
PRCTICA
CURSO 2009/2010
Contenido
1 Introduccin ..........................................................................................................................4
2 Descripcin de la Prctica......................................................................................................4
3 ETAPA 1.................................................................................................................................5
3.1 ETAPA 1.1: Orientacin a Objetos....................................................................................5
3.1.1 Objetivos..................................................................................................................5
3.1.2 Requisitos previos....................................................................................................5
3.1.3 Enunciado: Creacin de una clase Persona..............................................................5
3.2 ETAPA 1.2: Ejecucin de Aplicaciones.............................................................................6
3.2.1 Objetivos..................................................................................................................6
3.2.2 Requisitos Previos....................................................................................................7
3.2.3 Enunciado: Java, Bluej y el mtodo main.................................................................7
4 ETAPA 2.................................................................................................................................8
4.1 ETAPA 2.1: Composicin y Herencia................................................................................8
4.1.1 Objetivos..................................................................................................................8
4.1.2 Requisitos Previos....................................................................................................8
4.1.3 Enunciado: Creacin de un Gestor de Clientes........................................................9
4.2 ETAPA 2.2: Los clientes son simplemente personas?.....................................................9
4.2.1 Objetivos..................................................................................................................9
4.2.2 Requisitos Previos....................................................................................................9
4.2.3 Enunciado: Extensin de la clase Persona.............................................................10
5 ETAPA 3...............................................................................................................................11
5.1 ETAPA 3.1: Polimorfismo..............................................................................................11
5.1.1 Objetivos................................................................................................................11
5.1.2 Requisitos Previos..................................................................................................11
5.1.3 Enunciado: Aadiendo clientes VIP........................................................................11
5.2 ETAPA 3.2: Completando el sistema.............................................................................12
5.2.1 Objetivos................................................................................................................12
5.2.2 Requisitos Previos..................................................................................................12
5.2.3 Enunciado: Gestor de Clientes Avanzado...............................................................12
2
INTRODUCCIN
Esta prctica la realizaremos en Java, un lenguaje orientado a objetos. El primer concepto que
se debe conocer para programar utilizando el paradigma orientado a objetos es el de 'objeto'.
En este paradigma, todo est basado en los objetos, que tienen vida cuando nuestro programa
est en ejecucin. Por tanto, un programa Java se organizar en objetos, que adems podrn
relacionarse entre si de diversas maneras.
Estas relaciones proporcionan al programador las funcionalidades necesarias para resolver una
amplia gama de problemas. La definicin de un objeto viene dada por lo que llamamos 'clase'.
La clase es lo que programaremos, aquello que escribiremos definiendo campos y mtodos.
Los campos y los mtodos nos permitirn aadir funcionalidad a la clase. Una vez definida, a
partir de la clase podremos crear objetos, que son los que existirn cuando nuestro programa
ejecute.
Por tanto, podemos ver los objetos como los componentes que nos servirn para disear
nuestro programa, y las clases como las definiciones de dichos objetos. Una misma clase
puede por tanto dar lugar a muchos objetos diferentes, cada uno con caractersticas diferentes
que vendrn dadas por los valores de sus campos.
DESCRIPCIN DE LA PRCTICA
La idea fundamental de la prctica es que el alumno sea capaz de construir un sistema bsico
de gestin de clientes, que adems de los datos bsicos de estos, incluir una aproximacin a
un sistema sencillo de fidelizacin de clientes basado en puntos (una simplificacin de los
programas de puntos que ofrecen algunas cadenas de hostelera, compaas areas o
hipermercados).
La forma de desarrollarlo ser partiendo del enfoque ms bsico, construyndolo de forma
iterativa. En cada etapa se partir del diseo y desarrollo de la etapa inmediatamente anterior
para aadir nuevas caractersticas y funcionalidades.
El sistema adems de almacenar los datos de los clientes, entre los que se incluirn los puntos
que un cliente tiene acumulados, ser capaz de realizar una serie de acciones sobre los
mismos. El incremento de los puntos como consecuencia de determinadas acciones de un
cliente no se incluye en la prctica. Lo que soportar la aplicacin que construiremos es la
modificacin directa y consulta de los puntos de un cliente.
ETAPA 1
3.1
3.1.1
OBJETIVOS
3.1.2
REQUISITOS PREVIOS
Para la realizacin de esta primera etapa requiere haber estudiado los temas 4, 5 y 6 del
temario detallado de la asignatura, correspondientes a los captulos 1, 2 y 3, as como los
apndices B, C, D y G del libro de referencia de la Unidad Didctica II.
3.1.3
Se desea disear un sistema informtico cuyo fin sea la gestin de clientes. Dentro de esta
primera parte se realizar una aproximacin bsica al modelado inicial de algunos de los
componentes del sistema. Los componentes bsicos de nuestro sistema en este punto del
desarrollo sern personas. Si las personas son objetos, para definir una persona necesitaremos
crear una clase.
Para ello, tenga en cuenta que una persona tendr las siguientes caractersticas (campos):
Nombre
Apellidos
NIF
Sexo
Ao de nacimiento
Adems, un objeto persona debe permitir consultar y modificar estos campos y calcular la edad
de una persona en base a su ao de nacimiento (por simplicidad puede suponerse que el
mtodo puede recibir como parmetro el ao actual) a travs de una serie de mtodos creados
a tal efecto.
Jugar con BlueJ creando personas, modificando sus datos, calculando su edad, etc. Cuntas
personas puedes crear? Cmo puedes acceder a ellas en BlueJ?
3.2
3.2.1
Es importante comprender que Java y BlueJ son cosas diferentes. Java es un lenguaje de
programacin, mientras que BlueJ es un entorno de programacin que nos permite programar
en Java. BlueJ est pensado para el aprendizaje de Java, y proporciona distintas herramientas
que permiten inspeccionar las partes de un programa, tanto en la parte de diseo (cuando
estamos escribiendo el cdigo) como en la de ejecucin (cuando el cdigo se ejecuta, se crean
los objetos en memoria, etc.)
Una de las herramientas de BlueJ que pueden resultar ms tiles, pero a la vez pueden
despistar ms, es el banco de objetos u object bench (captulo 1 del libro). En conjunto con
otras herramientas como el inspector de objetos, resulta muy interesante para jugar con los
objetos en tiempo de ejecucin de forma interactiva. BlueJ nos permite ejecutar nuestras
aplicaciones mediante la invocacin de los mtodos de sus objetos, pero no es sta la nica
manera de hacerlo.
A estas alturas sabemos que cada clase dispone de una serie de mtodos y campos, que son
propios de los objetos que creamos a partir de dicha clase, es decir, que para poderlos utilizar
necesitamos crear primero un objeto. Por ejemplo, la clase persona que hemos creado tiene un
mtodo para calcular la edad, que slo podr ser invocado una vez tengamos algn objeto de
esta clase. Pues bien, existe otro tipo de mtodos que no son propios de los objetos, sino de las
clases. De esta forma, no necesitamos una instancia particular de la clase (objeto) para
invocarlos.
Java, ms all de BlueJ, nos permite ejecutar los programas que creamos de forma
independiente. La ejecucin fuera de BlueJ comienza sin que exista ningn objeto (en BlueJ
primero se creaban objetos que se almacenan en el banco de objetos para posteriormente
invocar sus mtodos). Antes de tener objetos, lo nico que tenemos son las clases que los
definen, por lo que deberemos usar un mtodo de clase (de los que hablbamos en el prrafo
anterior) para poder iniciar la ejecucin.
Un caso particular de estos mtodos de clase es el mtodo main, que es el que se utiliza como
punto de partida para iniciar la ejecucin de un programa en Java (vase el apartado 3.2.2 ).
Al final de este apartado debera entender la diferencia entre ejecutar un programa en BlueJ y
hacerlo de forma independiente, esto es, por ejemplo, ejecutarlo desde la lnea de comandos
(smbolo de sistema en Windows).
La presente prctica debe poderse ejecutar independientemente de BlueJ de cara a
su entrega y correccin.
3.2.2
REQUISITOS PREVIOS
Adems de los expuestos en la seccin 3.1.2 , debe consultarse el libro de texto, captulo 7.15,
sobre mtodos de clase. Adems, en el apndice E del libro de texto puede encontrar ms
informacin sobre el mtodo main, en concreto en el apartado E1. Puede consultar tambin el
captulo 3.9 (Objetos que crean objetos) del libro de texto si necesita ms informacin acerca
de la creacin de objetos desde el cdigo.
3.2.3
Aada un mtodo main, de momento puede incluirlo en la clase Persona o en una nueva clase
creada a tal efecto. Dentro de l pruebe a crear varios objetos Persona con diferentes
caractersticas y a acceder a las mismas mediante los mtodos pertinentes. Puede hacer uso
del mtodo System.out.println sobre el cul puede encontrar informacin en el captulo 2.8 del
libro de texto. Ejecute el programa desde BlueJ y desde la lnea de comandos (consola o
smbolo de sistema, segn el sistema operativo que utilice).
ETAPA 2
4.1
4.1.1
OBJETIVOS
Los objetos pueden contener otros objetos y utilizarlos para realizar distintas tareas. De esta
forma, cuando un objeto contiene otros, hablamos de Composicin. En Java existen adems
estructuras de datos que nos permiten almacenar conjuntos de objetos, como es el caso de las
listas, los conjuntos o los mapas. De esta forma si quisiramos representar una Universidad
con estudiantes y profesores, podramos, por ejemplo, crear una clase Universidad que tuviera
un campo de tipo de lista de objetos de la clase Persona, que creamos en el apartado 3.1.3 .
Tendramos as que una Universidad se compone de personas.
Por otra parte, a medida que la aplicacin que estamos construyendo se hace ms grande y
compleja, conviene ir documentando las clases que hemos creado, no slo para que terceras
personas puedan comprender su funcionalidad sin tener que leer minuciosamente el cdigo,
sino para que nosotros mismos podamos en el futuro reutilizarlas de una forma sencilla. Para la
generacin de documentacin en Java disponemos de la herramienta Javadoc, que por medio
de determinado tipo de comentarios que podemos incluir en nuestro cdigo, permite la
generacin posterior de documentacin a partir del mismo.
4.1.2
REQUISITOS PREVIOS
Esta etapa requiere haber estudiado los temas 7, 8 y 9 del temario detallado de la asignatura.
Encontrar informacin ms detallada sobre el mecanismo de composicin y la generacin de
documentacin en el libro de texto de la asignatura en los captulos 4 y 5. Las lectura de las
secciones de 7.3 a 7.6 sobre buenas prcticas en el diseo de aplicaciones es tambin
recomendable.
4.1.3
4.2
4.2.1
OBJETIVOS
4.2.2
REQUISITOS PREVIOS
Esta etapa requiere haber estudiado los aparatados del 1 al 4 del tema 10 del temario
detallado de la asignatura, ambos incluidos. En los captulos 7 y 8 del libro de texto encontrar
informacin detallada sobre el diseo de clases y la herencia.
4.2.3
Ahora que sabemos como extender clases, podemos mejorar nuestro Gestor de clientes. Para
ello, cree una nueva clase Cliente que adems de los campos y mtodos que tiene una
Persona, tenga:
Un nmero de cliente.
Los puntos de los que dispone como cliente (podemos suponer que este sistema de
gestin cuenta con el tpico sistema de descuentos basado en puntos que se van
acumulando en base a la fidelidad). Estos puntos slo se podrn consultar mediante el
mtodo que se describe a continuacin.
Un mtodo que devuelva los puntos que acumula el cliente, sumndole, a los que tiene
acumulados, un 10% por cada ao de antigedad. El clculo se realiza tomando todos
los puntos acumulados por el cliente y sumndole un 10% de los mismos.
Cada uno de los nuevos campos debe poder consultarse y modificarse, con la excepcin
hecha en el caso de los puntos acumulados, que slo se podrn consultar con el mtodo
descrito anteriormente, es decir, no se podrn consultar los puntos acumulados sin
aplicarles el incremento del 10% por antigedad. Asimismo para modificar dichos
puntos acumulados, se deben facilitar mtodos especficos que permitan aadir 10, 20
y 30 puntos respectivamente.
Se pide adems la modificacin del Gestor de clientes (sin extender la clase en este caso,
modificando la existente):
Aadir los nuevos campos a los listados que se presentaban por pantalla (incluidos los
puntos acumulados) as como los mtodos necesarios para poder realizar bsquedas de
clientes en base a los mismos. En el caso de los puntos, se ha de permitir la bsqueda
de todos aquellos clientes que acumulen ms de un nmero determinado de puntos.
Modificar apropiadamente el mtodo main del gestor para que funcione con las
modificaciones realizadas y aadir las lineas necesarias para que se impriman listados
utilizando los nuevos campos como parmetros de bsqueda.
10
ETAPA 3
5.1
5.1.1
OBJETIVOS
5.1.2
REQUISITOS PREVIOS
Esta etapa requiere haber estudiado los captulos del libro base de las etapas anteriores, as
como los temas 10, 11 y 12 del temario detallado de la asignatura, correspondientes a las
Secciones de la 7.3 a la 7.6 ,y los Captulos 6, 8 y 9 del libro base para la Unidad Didctica II.
En concreto la seccin 8.7.4 y relacionadas; y el captulo 9; particularmente el apartado 9.6 y
relacionados, resultarn tiles en la resolucin de esta etapa.
5.1.3
En nuestro sistema hasta ahora slo tiene cabida un tipo de clientes. Se desea incluir un nuevo
tipo de Cliente, que llamaremos Cliente VIP. Estos clientes tienen todas las caractersticas de
los clientes normales, con una diferencia:
El mtodo que devuelve los puntos que acumula el cliente VIP debe sumar un 20% en
lugar de un 10% por ao de antigedad.
No se han de modificar las clases que ya tenamos para incluir este nuevo tipo de cliente
en el sistema. Se pide adems incluir en el mtodo main que lanza la aplicacin:
5.2
5.2.1
OBJETIVOS
Hasta llegar a esta ltima etapa hemos hecho un recorrido por los aspectos ms importantes
de la programacin orientada a objetos en Java. Para finalizar el diseo e implementacin de la
aplicacin que tenemos entre manos, vamos a refinar su funcionalidad poniendo en prctica
todo lo aprendido.
5.2.2
REQUISITOS PREVIOS
Para la realizacin de esta parte es necesario haber estudiado y tener claro todo lo que se ha
ido estudiando a lo largo de la presente prctica.
5.2.3
Sin modificar las clases existentes, se desea contar con un gestor de clientes avanzado que
aada las siguientes funcionalidades:
Dado un NIF o un nmero de cliente (pero no ambos a la vez), transformar dicho cliente
en cliente VIP.
Dado un NIF o un nmero de cliente (pero no ambos a la vez), transformar dicho cliente
VIP en cliente normal.
12
FECHAS
La realizacin de la prctica se llevar a cabo en los centros asociados, siendo las sesiones
organizadas y supervisadas por el tutor de la asignatura. Habr como mnimo tres sesiones
presenciales de obligatoria asistencia. En cada sesin se abordar cada una de las partes de
las que consta la prctica. Los alumnos debern ponerse en contacto con su centro asociado
para informarse acerca de cundo tendrn que asistir a las sesiones. Las fechas orientativas
para la realizacin de cada una de las etapas sern:
NORMAS DE ENTREGA
Para cada parte de la prctica se deben entregar tanto los ficheros fuente como un
fichero jar que permita la ejecucin de cada una de estas partes.
Los tutores de la asignatura debern mandar un informe (*) y una calificacin orientativa de
cada alumno antes del da 21 de Mayo de 2010. Debern subir al curso virtual (**) un
archivo comprimido con los cdigos de todas las prcticas de los alumnos de su centro
asociado, de modo que el equipo docente pueda revisarlas.
(*) Los informes se mandarn al equipo docente a travs de una herramienta Web que estar
disponible a partir de Mayo.
(**) Los cdigos comprimidos debern subirse por medio de un mensaje en foro de tutores del
entorno virtual.
NOTA IMPORTANTE: Los tutores tienen que cumplir una serie de requisitos ante los alumnos
debido a que la prctica cuenta para la calificacin de la asignatura. Por tanto antes de
entregar las calificaciones al equipo docente debern:
1. Publicar la nota de las prcticas en un lugar accesible para los alumnos (ya sea va web
o mandar un fax al centro asociado).
2. Establecer un da de revisin de prcticas (previo al periodo de entrega de las
calificaciones al equipo docente), dado que stas forman parte de la evaluacin del
alumno.
13
7.1
EVALUACIN DE LA PRCTICA
Los alumnos que quieran realizar el examen previamente tienen que haberse
presentado a las prcticas y tener un aprobado en stas. El informe del tutor se
considera a efectos de subir nota.
Las prcticas no se guardan de un curso para otro.
7.2
14