10. Hojas de Trabajo
10.1. Hoja de Trabajo Nº 1: Un Parqueadero
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 quiere que haga el programa y las restricciones para desarrollarlo.
Se quiere construir una aplicación para administrar un parqueadero (lugar de estacionamiento para carros). Dicho parqueadero tiene 40 puestos, numerados del 1 al 40. En cada puesto se puede parquear un sólo carro (que representaremos con una clase llamada Carro), el cual se identifica por su placa. El parqueadero tiene una tarifa por hora o fracción de hora, puede ser cambiada por el administrador.
De cada vehículo aparcado se debe conocer la hora en la que entró, que corresponde a un valor entre 6 y 21, dado que el parqueadero está abierto entre 6 de la mañana y 9 de la noche.
Se espera que la aplicación que se quiere construir permita hacer lo siguiente:
Ingresar un carro al parqueadero. Se debe indicar el puesto en el que se debe parquear (si hay cupo).
Dar salida a un carro del parqueadero. Se debe indicar cuánto debe pagar.
Informar los ingresos del parqueadero.
Consultar la cantidad de puestos disponibles.
Avanzar una hora en el reloj del parqueadero.
Cambiar la tarifa del parqueadero.
La siguiente es la interfaz de usuario propuesta para el programa, donde los puestos ocupados deben aparecen con un vehículo.
Requerimientos funcionales. Describa los seis requerimientos funcionales de la aplicación 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 diagrama de clases con los atributos, las constantes y las asociaciones.
Diagrama UML: Parqueadero |
---|
Diagrama UML: Puesto |
---|
Diagrama UML: Carro |
---|
Declaración de arreglos. Para las siguientes clases, escriba la declaración de los atributos indicados en el comentario (como contenedoras del tipo dado), así como las constantes necesarias para manejarlos.
public class Parqueadero
{
//--------------------------------------------------
// Constantes
//--------------------------------------------------
/**
* Indica el número de puestos en el parqueadero
*/
//--------------------------------------------------
// Atributos
//--------------------------------------------------
/**
* Arreglo de puestos
*/
}
Inicialización de arreglos. Escriba el constructor de la clase para inicializar las contenedoras declaradas en el punto anterior.
public Parqueadero( )
{
}
Patrones de algoritmos. Desarrolle los siguientes métodos de la clase Parqueadero, identificando el tipo de patrón de algoritmo al que pertenece y siguiendo las respectivas guías
Método 1
Contar y retornar el número total de puestos ocupados.
public int darTotalPuestosOcupados( )
{
}
Método 2
Informar si en el parqueadero hay un carro cuya placa comience con la letra dada como parámetro.
public boolean existePlacaIniciaCon( char pLetra )
{
}
Método 3
Retornar el número de carros en el parqueadero que llegaron antes del mediodía.
public int darTotalCarrosIngresoManana( )
{
}
Método 4
Retornar el último carro en ingresar al parqueadero. Si el parqueadero está vacío, retorna null.
public Carro darCarroLlegadaMasReciente( )
{
}
Método 5
Informar si en algún lugar del parqueadero hay dos puestos libres consecutivos. Esto se hace cuando el vehículo que se quiere aparcar es muy grande.
public boolean hayDosPuestosLibresConsecutivos( )
{
}
Método 6
Informar si hay dos carros en el parqueadero con la misma placa.
public boolean hayPlacasRepetidas( )
{
}
10.2 Hoja de Trabajo Nº 2: Lista de Contactos
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 quiere que haga el programa y las restricciones para desarrollarlo.
Se quiere construir un programa para manejar la lista de contactos de una persona. Un contacto tiene nombre, apellido, una dirección, un correo electrónico, varios teléfonos y un conjunto de palabras clave que se utilizan para facilitar su búsqueda. El nombre completo (nombre + apellido) de cada contacto debe ser único. Tanto el nombre como el apellido se usan como palabras clave para las búsquedas.
En el programa de contactos se debe poder:
- Agregar un nuevo contacto.
- Eliminar un contacto ya existente.
- Ver la información detallada de un contacto.
- Modificar la información de un contacto.
- Buscar contactos usando las palabras clave.
La siguiente es la interfaz de usuario propuesta para el programa de la lista de contactos.
Requerimientos funcionales. Describa los cinco requerimientos funcionales de la aplicación 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 |
Modelo del mundo. Complete el diagrama de clases con los atributos, las constantes y las asociaciones.
Diagrama UML: ListaDeContactos |
---|
Diagrama UML: Contacto |
---|
Declaración de arreglos. Para las siguientes clases, escriba la declaración de los atributos indicados en el comentario (como contenedoras del tipo dado).
public class Contacto
{
//--------------------------------------------------
// Atributos
//--------------------------------------------------
private String nombre;
private String apellido;
private String direccion;
private String correo;
/**
* Lista de teléfonos del contacto.
*/
/**
* Lista de palabras clave del contacto.
*/
}
public class ListaDeContactos
{
//--------------------------------------------------
// Atributos
//--------------------------------------------------
/**
* Lista de contactos.
*/
}
Inicialización de arreglos. Escriba el constructor de las clases dadas.
public Contacto ( )
{
}
public ListaDeContactos ( )
{
}
Patrones de algoritmos. Desarrolle los siguientes métodos de la clase indicada, identificando el tipo de patrón de algoritmo al que pertenece y siguiendo las respectivas guías.
Metodo
Clase: Contacto
Contar el número de palabras clave que empiezan por la letra dada como parámetro.
public int darTotalPalabrasInicianCon( char pLetra )
{
}
Metodo 2
Clase: Contacto
Informar si el contacto tiene algún teléfono que comienza por el prefijo dado como parámetro.
public boolean existeTelefonoIniciaCon( String pPrefijo )
{
}
Metodo 3
Clase: Contacto
Retornar la primera palabra clave que termina con la cadena dada.
public String darPalabraTerminaCon( String pCadena )
{
}
Metodo 4
Clase: Contacto
Contar el número de palabras clave que son prefijo (parte inicial) de otras palabras clave.
public int darTotalPalabrasPrefijo( )
{
}
Metodo 5
Clase: ListaDeContacto
Contar el número de contactos cuyo nombre es igual al recibido como parámetro.
public int darTotalContactosConNombre( String pNombre )
{
}
Metodo 6
Clase: ListadeContactos
Informar si hay dos contactos en la lista con la misma dirección de correo electrónico.
public boolean hayCorreosRepetidos( )
{
}
Metodo 7
Clase: ListadeContactos
Retornar el contacto con el mayor número de palabras clave.
public Contacto darContactoConMasPalabras( )
{
}