9. Hojas de Trabajo
9.1 Hoja de Trabajo Nº 1: Venta de Boletas en una Sala de Cine
Descargue esta hoja de trabajo a través de los siguientes enlaces: Descargar PDF | Descargar Word.
Enunciado. Analice el siguiente enunciado e identifique el mundo del problema, lo que se espera de la aplicación y las restricciones para desarrollarla.
Se quiere construir una aplicación que permita administrar una sala de cine. Esta aplicación permite hacer reservas y registrar sus pagos. La sala de cine tiene 220 sillas. De cada silla se conoce:
- Fila a la que pertenece, representada por un valor entre A y K.
- Número de la silla, valor entre 1 y 20.
- Tipo. Puede ser general o preferencial.
- Estado de la silla. Puede ser disponible, reservada o vendida.
El costo de boleta se determina según el tipo de la silla, y esta a su vez se determina según su número, de la siguiente manera:
- General: sillas en las filas A – H. Costo por boleta de $8,000.
- Preferencial: sillas en las filas I – K. Costo por boleta de $11,000.
Para poder adquirir una boleta, el cliente debe primero hacer una reserva. Cada cliente puede reservar hasta 8 sillas. De cada reserva se conoce:
- Cédula de la persona que hizo la reserva.
- Sillas que hacen parte de la reserva.
Estado de pago de la reserva.
El cliente puede pagar sus reservas en efectivo o utilizando la tarjeta CINEMAS. Esta tarjeta le otorga a su dueño un descuento del 10% en sus boletas. De cada tarjeta se conoce:
- Cédula del dueño de la tarjeta. No pueden existir dos tarjetas con la misma cédula.
- Saldo de la tarjeta: Cantidad de dinero disponible para pagar reservas.
Cuando se adquiere una tarjeta, el cliente debe cargar la tarjeta con un valor inicial de $70,000. Cada tarjeta puede ser recargada una cantidad ilimitada de veces, sin embargo, cada recarga se debe hacer por un monto de $50,000.
La aplicación debe permitir:
- Crear una nueva tarjeta.
- Recargar una tarjeta.
- Crear una reserva.
- Eliminar la reserva actual.
- Pagar una reserva en efectivo.
- Pagar la reserva con tarjeta CINEMAS.
- Visualizar las sillas del cine.
- Visualizar el dinero en caja.
Requerimientos funcionales.Especifique los principales requerimientos funcionales que haya identificado en el enunciado.
Requerimiento Funcional 1
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 2
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 3
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 4
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 5
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 6
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 7
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 8
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Modelo del mundo.Complete el modelo conceptual con los atributos y constantes de cada clase, lo mismo que las asociaciones entre ellas.
Diagrama UML: Cine |
|
Diagrama UML: Tarjeta |
|
Diagrama UML: Silla |
|
Diagrama UML: Reserva |
|
Asignación de responsabilidades. Decida, utilizando la técnica del experto, quién debe encargarse de:
¿Quién es el responsable de crear una tarjeta CINEMAS? |
|
¿Quién es el responsable de indicar si una silla está ocupada? |
|
¿Quién es el responsable de decir las sillas que están en una reserva? |
|
¿Quién es el responsable de saber el saldo de una tarjeta CINEMAS? |
|
¿Quién es el responsable de calcular el valor total de compra de unas boletas? |
|
Descomposición de requerimientos funcionales. Indique los pasos necesarios para resolver los siguientes requerimientos y señale, al finalizar cada paso, quién debería ser el responsable de hacerlo.
Incrementar el saldo de la tarjeta CINEMAS. |
1. Buscar la tarjeta CINEMAS por su código (Cine). 2. Aumentar el valor de saldo de la tarjeta (Tarjeta). |
Reservar un conjunto de sillas. |
|
Comprar boletas. |
|
Cancelar una reserva. |
|
Identificación de excepciones. Según los siguientes enunciados, indique qué posibles excepciones se deben manejar. Para ello no haga ninguna suposición sobre los datos de entrada.
Dado un valor numérico, incrementar el saldo de una tarjeta. |
a. La tarjeta es nula b. El valor numérico es negativo. c. El valor numérico no es igual a $50.000. |
Cambiar el estado de una silla a ocupada. |
|
Agregar una silla a una reserva. |
|
Elaboración de contratos. Para los siguientes métodos, establezca su contrato. Tenga en cuenta la clase en la que se encuentra el método.
Clase: Cine |
Método: Buscar una tarjeta dado su código. |
Signatura |
Tarjeta buscarTarjeta( String pCodigo ) |
Precondición sobre el objeto: |
El vector de tarjetas ha sido inicializado. |
Precondición sobre los parámetros: |
pCodigo debe ser diferente de null, pCodigo debe ser diferente de la cadena vacía. |
Postcondición sobre el objeto: |
Ninguna. |
Postcondición sobre el retorno: |
Retorna la tarjeta que tiene el código pedido o null si dicho código no existe. |
Excepciones: |
Ninguna |
9.2 Hoja de Trabajo Nº 2: Un Sistema de Préstamos
Descargue esta hoja de trabajo a través de los siguientes enlaces: Descargar PDF | Descargar Word.
Enunciado. Analice el siguiente enunciado e identifique el mundo del problema, lo que se espera de la aplicación y las restricciones para desarrollarla.
Se quiere construir una aplicación para la Central de Préstamos de la Universidad, la cual se encarga de manejar el préstamo de todos los recursos que la universidad ofrece a sus estudiantes.
Los recursos pueden ser de cualquier naturaleza, se identifican con un código y tienen además un nombre. Los códigos son únicos, pero los nombres pueden repetirse. Cada recurso que se quiera prestar a los estudiantes debe ser registrado en la aplicación. Un recurso se puede prestar sólo si está disponible, es decir que no se ha prestado a otro estudiante.
Un estudiante se identifica por su código, que también es único, y tiene un nombre que eventualmente otro estudiante también podría tener. Para que un estudiante pueda prestar algún recurso debe registrarse. Si el estudiante no está registrado no se le prestará ningún recurso.
Un estudiante se identifica por su código, que también es único, y tiene un nombre que eventualmente otro estudiante también podría tener. Para que un estudiante pueda prestar algún recurso, debe registrarse. Si el estudiante no está registrado, no se le prestará ningún recurso.
La aplicación debe permitir:
- Agregar un recurso
- Agregar un estudiante
- Prestar un recurso disponible
- Consultar los préstamos de un estudiante
- Consultar la información de un préstamo
- Devolver un recurso prestado
Requerimientos funcionales. Especifique los principales requerimientos funcionales que haya identificado en el enunciado
Requerimiento Funcional 1
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 2
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 3
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 4
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 5
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Requerimiento Funcional 6
Nombre |
|
Resumen |
|
Entradas |
|
Resultado |
|
Modelo del mundo. Complete el modelo conceptual con los atributos y constantes de cada clase, lo mismo que las asociaciones entre ellas.
Diagrama UML:CentralPrestamos |
|
Diagrama UML: Estudiante |
|
Diagrama UML: Recurso |
|
Asignación de responsabilidades. Decida, utilizando la técnica del experto, quién debe encargarse de:
¿Quién es el responsable de registrar un nuevo recurso para prestar? |
|
¿Quién es el responsable de registrar a un nuevo estudiante para que pueda pedir recursos? |
|
¿Quién es el responsable de registrar el préstamo de un recurso a un estudiante? |
|
¿Quién es el responsable de registrar la devolución de un recurso prestado? |
|
¿Quién es el responsable de decir si un recurso está disponible o no? |
|
Descomposición de requerimientos funcionales. Indique los pasos necesarios para resolver los siguientes requerimientos y señale, luego de cada paso, quién debería ser el responsable de hacerlo.
Prestar un recurso a un estudiante. |
1. Buscar el recurso que se va a prestar. (CentralPrestamos) 2. Validar si el recurso está disponible. (Recurso) 3. Buscar al estudiante a quién se le prestará el recurso. (CentralPrestamos) 4. Asignar el recurso al estudiante. (Recurso) 5. Agregar el recurso a los recursos prestados al estudiante. (Estudiante) |
Registrar un nuevo estudiante en la central de préstamos. |
|
Buscar un recurso en la central de préstamos. |
|
Registrar la devolución de un recurso prestado. |
|
Identificación de excepciones. Según los siguientes enunciados, indique qué posibles excepciones se deben manejar. Para ello no haga ninguna suposición sobre los datos de entrada.
Registrar un nuevo recurso en la central de préstamos. |
a. El código del recurso es inválido. b. El nombre del recurso es nulo o es una cadena vacía c. El código del recurso ya ha sido registrado |
Retirar un recurso de la lista de re- cursos prestados a un estudiante. |
|
Elaboración de contratos. Para los siguientes métodos, establezca su contrato. Tenga en cuenta la clase en la que se encuentra el método.
Clase: CentralPrestamos |
Método: Registrar un estudiante en la central de préstamos a partir de su nombre y código. |
Signatura |
void agregarEstudiante(String pNombre, int pCodigo) throws Exception |
Precondición sobre el objeto: |
El vector de estudiantes ha sido inicializado. |
Precondición sobre los parámetros: |
pNombre debe ser diferente de null, pNombre debe ser diferente de la cadena vacía. pCodigo debe ser un código válido. |
Postcondición sobre el objeto: |
Un nuevo estudiante se agrega a la lista de estudiantes de la central con el nombre y el código dados. |
Postcondición sobre el retorno: |
Ninguna. |
Excepciones: |
Si el código ya está registrado en el vector de estudiantes. |