RA4 - CEf¶
Empaquetar actividades
Empaqueta las actividades, dentro de la carpeta ut05, en la carpeta actividades/ce4f.
Actividad 21¶
paquete _05_reservasLibreria
Se quiere realizar una aplicación para implementar una librería.
Empaqueta las clases de las actividades: 21, 22 23, 24 y 25 en el paquete _05_reservasLibreria dentro de actividades.
Cuando un cliente pide un libro y la librería no lo tiene, el cliente puede hacer una reserva de manera que cuando lo reciban en la librería le avisen por teléfono.
De cada reserva se almacena:
-
Nifdel cliente (String). -
Nombredel cliente (String). Teléfonodel cliente (String).Códigodel libro reservado. (entero).- Numero de
ejemplares(entero).
Actividad 22¶
Diseñar la clase Reserva, de manera que contemple la información descrita e implementar:
public Reserva(String nif, String nombre, String tel, int codigo, int ejemplares): Constructor que recibe todos los datos de la reserva.public Reserva(String nif, String nombre, String tel, int codigo): Constructor que recibe los datos del cliente y el código del libro. Establece el número de ejemplares a uno.- Consultores de todos los atributos.
public void setEjemplares(int ejemplares): Modificador del número de ejemplares. Establece el número de ejemplares al valor indicado como parámetro.public String toString(): que devuelva unString` con los datos de la reservapublic boolean equals(Object o): Dos reservas son iguales si son del mismo cliente y reservan el mismo libro.public int compareTo(Object o): Es menor la reserva cuyo código de libro es menor. El parámetro es de tipoObjectasí que revisa si debes hacer alguna "adaptación".
Actividad 23¶
Diseñar una clase Java TestReservas que permita probar la clase Reserva y sus métodos.
Para ello se desarrollará el método main en el que:
- Se creen dos reservas con los datos que introduce el usuario. Las reservas no pueden ser iguales (equals). Si la segunda reserva es igual a la primera se pedirá de nuevo los datos de la segunda al usuario.
- Se incremente en uno el número de ejemplares de ambas reservas.
- Se muestre la menor y a continuación la mayor.
Actividad 24¶
Diseñar una clase ListaReservas que implemente una lista de reservas. Como máximo puede haber 100 reservas en la lista. Se utilizará un array de Reservas que ocuparemos a partir de la posición 0 y un atributo que indique el número de reservas. Las reservas existentes ocuparán las primeras posiciones del array (sin espacios en blanco). Implementar los siguientes métodos:
public void reservar(String nif, String nombre, String telefono, int libro, int ejemplares) throws ListaLlenaException, ElementoDuplicadoException: Crea una reserva y la añade a la lista. LanzaElementoDuplicadoExceptionsi la reserva ya estaba en la lista. LanzaListaLlenaExceptionsi la lista de reservas está llena.public void cancelar(String nif, int libro) throws ElementoNoEncontradoException. Dado un nif de cliente y un código de libro, anular la reserva correspondiente. LanzarElementoNoEncontradoExceptionsi la reserva no existe.public String toString(): Devuelve unStringcon los datos de todas las reservas de la lista.public int numEjemplaresReservadosLibro(int codigo): Devuelve el número de ejemplares que hay reservados en total de un libro determinado.public void reservasLibro(int codigo): Dado un código de libro, muestra el nombre y el teléfono de todos los clientes que han reservado el libro.
Actividad 25¶
Realizar un programa GestionReservas que, utilizando un menú, permita:
- Realizar reserva. Permite al usuario realizar una reserva.
- Anular reserva: Se anula la reserva que indique el usuario (Nif de cliente y código de libro).
- Pedido: El usuario introduce un código de libro y el programa muestra el nº de reservas que se han hecho del libro. Esta opción de menú le resultará útil al usuario para poder hacer el pedido de un libro determinado.
- Recepción: Cuando el usuario recibe un libro quiere llamar por teléfono a los clientes que lo reservaron. Solicitar al usuario un código de libro y mostrar los datos (nombre y teléfono) de los clientes que lo tienen reservado.