PR03 - Definición de tipos. Estructuras de control selectivas

Anuncio
FUNDAMENTOS DE PROGRAMACIÓN
PRÁCTICA 3: DEFINICION DE TIPOS Y ESTRUCTURAS DE CONTROL
SELECTIVAS
Curso: 2010/11
Versión: 2.0.2
OBJETIVOS
Profundizar en la metodología vista en las clases pasadas para definir tipos.
Familiarizarse con el uso de estructuras de control selectivas.
EJERCICIOS
Antes de la realización de los ejercicios, es necesario que importe el proyecto llamado Practi03
facilitado como material de trabajo de la práctica.
Ejercicio 1
Sea el siguiente tipo:
Tipo Escritor:
Nombre, de tipo String, consultable.
Apellidos, de tipo String, consultable.
Nacionalidad, de tipo String, consultable y modificable.
Representación como cadena: “apellidos, nombre (nacionalidad)”
Se pide:
1. Escriba la interfaz del tipo Escritor con los métodos de consulta y modificación necesarios en el
paquete libreria.tipos.
2. Escriba una clase EscritorImpl que implemente la interfaz Escritor en el mismo paquete. Siga
estos pasos:
a. Almacene como atributos privados las propiedades descritas, utilizando los tipos
adecuados.
b. Incluya un constructor con parámetros que reciba nombre, apellidos y nacionalidad del
autor.
c. Escriba el resto de los métodos del tipo.
3. Para probar el tipo, cree la clase TestEscritor. En el método main, cree un objeto de tipo Escritor
para “Miguel de Cervantes y Saavedra”. Muestre el objeto por pantalla. Para indicar la
nacionalidad, use las constantes de la clase Nacionalidades.
Ejercicio 2
Sea el siguiente tipo:
Tipo Libro:
Título, de tipo String, consultable.
Autor, de tipo Escritor, consultable.
Editorial, de tipo String, consultable.
Año de publicación, de tipo entero, consultable.
Precio, de tipo real, consultable y modificable.
Copias vendidas, de tipo Integer, consultable y modificable.
Recaudación, de tipo Double, consultable.
Representación como cadena: “título, (autor), año de publicación – editorial”
Se pide:
1. Escriba la interfaz del tipo Libro con los métodos de consulta y modificación necesarios en el
paquete libreria.tipos.
Práctica 3: Definición de tipos y estructuras de control selectivas
2. Escriba una clase LibroImpl que implemente la interfaz Libro en el mismo paquete. Siga estos
pasos:
a. Almacene como atributos privados las propiedades descritas, utilizando los tipos
adecuados.
b. Incluya un constructor con parámetros que reciba nombre, apellidos y nacionalidad del
autor, editorial, título y año de publicación.
c. Escriba el resto de los métodos del tipo.
3. Para probar el tipo, cree la clase TestLibro. En el método main, cree un objeto de tipo Libro para
“Don Quijote de la Mancha”, editorial “ETSII” y año de publicación 2010. Dele un precio de
12.5€ y 14 libros vendidos. Muestre por pantalla el objeto y la recaudación obtenida.
Ejercicio 3
Sea un dispositivo electrónico que permite visualizar un documento. El documento puede ser un libro u
otros tipos de documentos en formato digital como periódicos, revistas o artículos. El tipo
LectorElectronico viene definido de la siguiente manera:
Id, de tipo String, que es la clave que identifica de manera única al visor, consultable.
Nombre, de tipo String, que permite al usuario personalizar el nombre de su visor, consultable y
modificable.
Documento, de tipo T, que representa el documento almacenado en el visor, consultable y modificable.
Representación como cadena: “Nombre -> Documento”
Se pide:
a) Escriba la interfaz del tipo LectorElectronico en el paquete libreria.tipos.
b) Escriba una clase LectorElectronicoImpl que implemente la interfaz LectorElectronico.
Incluya un constructor que inicialice todos los atributos de la clase.
c) Elimine los comentarios de las líneas de código de la clase TestLectorElectronico y
pruebe su implementación de LectorElectronico.
Ejercicio 4
En este ejercicio definiremos métodos de utilidad para gestionar los tipos del ejercicio anterior. Para ello
trabajaremos con la clase de utilidades UtilidadesLibros. En primer lugar, elimine los comentarios de las
líneas de código de la clase TestUtilidadesLibros. Seguidamente, defina los siguientes métodos estáticos
en la clase UtilidadesLibros:
a) esBestSeller, que toma un libro como parámetro y devuelve un valor lógico diciendo si el
libro es o no un bestseller. Para ello haga uso de la constante LIMITE_BEST_SELLER definida
en la propia clase UtilidadesLibros.
b) aplicaDescuento, que toma como parámetros un libro y un valor real descuento (tanto por
uno) que aplica el descuento al precio de un libro. Aplique un 10% de descuento a los libros l1 y
l2 en el código de prueba.
c) aplicaIncremento, análogo al anterior pero realizando un incremento del precio.
d) cambiaPrecio1, que toma como parámetros un libro, un valor tanto por uno para cambiar el
precio y un valor lógico. Si el valor lógico es true, se aplica un descuento sobre el precio del
libro. En caso contrario, se incrementa el precio. Realice este método mediante una estructura
if-else.
e) cambiaPrecio2, que toma como parámetros un libro, un valor tanto por uno para cambiar el
precio y un valor entero. Si el valor entero es 0, se aplica un descuento sobre el precio del libro.
En caso contrario, se incrementa el precio. Realice este método mediante una estructura
switch.
f) correctoPrecio, que toma como parámetro un libro y devuelve true si el precio es un valor
mayor o igual que cero.
g) corrigePrecio, que comprueba si el precio de un libro es correcto y en caso de que no lo sea,
modifica su precio dándole un valor Double.NaN.
2
Práctica 3: Definición de tipos y estructuras de control selectivas
h) Elimine los comentarios de las líneas de código de la clase TestUtilidadesLibros y añada el
código necesario para probar los distintos métodos de la clase de UtilidadesLibros. Debería
obtener una salida semejante a la siguiente:
---------------------APARTADO A-------------------------------------Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII ¿es
bestseller? false
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra ¿es
bestseller? true
-------------------------APARTADO B---------------------------------Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
antes descuento: 12.5
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio antes
descuento: 19.95
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
después descuento: 11.25
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio
después descuento: 17.955
-------------------------APARTADO C---------------------------------Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
antes incremento: 11.25
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio antes
incremento: 17.955
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
después incremento: 12.375
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio
después incremento: 19.7505
-------------------------APARTADO D---------------------------------Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
antes descuento: 12.375
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio antes
descuento: 19.7505
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
después descuento: 11.1375
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio
después descuento: 17.77545
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
antes incremento: 11.1375
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio antes
incremento: 17.77545
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
después incremento: 12.251249999999999
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio
después incremento: 19.552995
-------------------------APARTADO E---------------------------------Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
antes descuento: 12.251249999999999
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio antes
descuento: 19.552995
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
después descuento: 11.026124999999999
3
Práctica 3: Definición de tipos y estructuras de control selectivas
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio
después descuento: 17.5976955
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
antes incremento: 11.026124999999999
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio antes
incremento: 17.5976955
Don Quijote de la Mancha,(de Cervantes y Saavedra,Miguel(Española)),1995-ETSII precio
después incremento: 12.128737499999998
Harry Potter y el cáliz de fuego,(Rowling,J. K.(Británica)),2010-Salamandra precio
después incremento: 19.357465050000002
-------------------------APARTADO F---------------------------------Cien años de soledad,(García Márquez,Gabriel(Otras)),1999-Mondadori ¿precio correcto?
false
-------------------------APARTADO G---------------------------------Precio corregido de Cien años de soledad,(García Márquez,Gabriel(Otras)),1999-Mondadori
-> NaN
4
Descargar