N4 - Sala de Cine CUPI2 Autor Fecha Enunciado Una sala de cine está compuesta de sillas que se identifican con una letra que representa la fila (A-K) y un número de silla (1-20). Las sillas pueden ser de dos clases, preferencial (filas I, J y K) y general (filas restantes), las primeras tienen un costo de $11.000 y las segundas de $8.000. En la figura que aparece más abajo se puede apreciar esta estructura. Allí se muestra la interfaz usuario que se diseñó para este programa. El cine presta el servicio de reserva a sus clientes con tarjeta TARCINE, que es una tarjeta prepago ofrecida por el teatro para que el cliente pueda reservar boletas, lo mismo que obtener un descuento del 10% en el momento de pagar. El servicio de reserva consiste en que un cliente puede llamar y solicitar que le reserven a nombre de su tarjeta un conjunto de sillas para ser pagadas antes del comienzo de la función. El pago de la reserva se puede hacer con la tarjeta del mismo cliente que la reservo o con otra. Por política del cine, el número de la tarjeta TARCINE es el mismo número de cédula del cliente. La tarjeta TARCINE se adquiere con un saldo inicial de $70.000 y se puede recargar con un valor de $50.000 cuantas veces se quiera. Modelo del Mundo Listado de Requerimientos Nombre R1 – Crear una tarjeta TARCINE para un cliente Resumen Entradas Resultados Nombre R2 – Recargar una tarjeta TARCINE de un cliente Resumen Se incrementa el valor del saldo de la tarjeta con una carga fija de $50.000. La tarjeta debe estar registrada para el cliente indicado. Entradas La cédula del cliente. Una tarjeta debe estar registrada para el cliente. Resultados La tarjeta del cliente ha incrementado su saldo en $50.000 Nombre R3 – Crear una reserva Resumen El cliente indica el grupo de sillas que quiere reservar y guarda su reserva, sólo si tiene una tarjeta TARCINE creada. Entradas Grupo de sillas a reservar. La cédula del cliente. Una tarjeta debe estar registrada para el cliente. Resultados Se ha creado una reserva con las sillas indicadas y quedó registrada a nombre del cliente o de su tarjeta TARCINE. Nombre R4 – Consultar una reserva Resumen A partir de la cédula del cliente, se consulta la reserva que tenga hecha y se muestra la lista de sillas reservadas. Entradas Resultados Nombre R5 – Eliminar una reserva Resumen Al tener la información de la reserva de un cliente, es posible eliminar la reserva, siempre y cuando no haya sido pagada. Entradas Reserva del cliente. Resultados La reserva hecha por el cliente ya no se encuentra en el sistema. Ejercicio public class Tarjeta { /** * Resta una cantidad especifica de la tarjeta. <br> * <b>pre: </b> cantidad > 0 && dineroDisponible > cantidad. <br> * <b>post: </b> dineroDisponible = dineroDisponible - cantidad. * @param cantidad Cantidad de dinero a restar. * @throws Exception No tiene los fondos necesarios. */ public void restarDinero( int cantidad ) throws Exception { //TODO Implemente este método } } public class Reserva { /** * Agrega una nueva silla a la reserva. <br> * <b>pre: </b> El estado de la Silla es Disponible. <br> * <b>post: </b> El estado de la silla es reservada y está en la reserva. * @param silla Silla a agregar. silla != null. * @throws Exception La silla no está disponible */ //TODO Implemente el método según el contrato /** * Establece que la reserva ya fue pagada. <br> * <b>post: </b> La reserva queda pagada y Todas las sillas quedan vendidas. * @throws Exception Error generado cuando la reserva ya fue pagada */ //TODO Implemente el siguiente método según el contrato } public class Cine { //TODO Escriba el contrato javadoc para este método. public void crearTarjeta( int cedula ) throws Exception { //Verifica que el cliente no tiene tarjeta if( existeTarjeta( cedula ) ) { throw new Exception( "El usuario con cédula '" + cedula + "' ya tiene tarjeta." ); } //Crea la tarjeta para el cliente Tarjeta tarjeta = new Tarjeta( cedula ); tarjetas.add( tarjeta ); totalDinero += Tarjeta.CARGA_INICIAL; } //TODO Escriba el contrato para el método darReserva e impleméntelo. }