1.
Tema ema 3: Intr Introdu oducc cci´ i´ o n a clases y objetos on NOTA IMPORTANTE IMPORTANTE : En los dise˜ n os que aparecen en este tema no se han denos
tallado los par´ ametros ametros que reciben los m´etodos etodos ni sus valores de retorno debido a que esta informaci´on on todav´ todav´ıa no se ha visto en clase de teor´ teor´ıa. Se aconseja volver sobre estos problemas una vez abordado el tema del paso de par´ ametros y completar los dise˜ ametros nos nos propuestos.
1.1. 1.1.
Mode Modeli liza zaci ci´ o on ´n de problemas - agencia de viajes
Una agencia de viajes necesita una aplicaci´ on on para la gesti´on on de sus viajes. Los viajes se identifican por un c´odigo. odigo. Para cada viaje se quiere poder informar el destino, la fecha de salida, la fecha de regreso, el precio y el guia del viaje (´ unico unico para cada viaje). La agencia dispone de un n´ umero de guias que asigna dependiendo de su disponiumero bilidad. La informaci´on on que se tiene tiene de ellos ellos es su nombre nombre y apellido apellidos, s, dni, dni, tel´ tel´efono efono y especialidad. Para un guia determinado la agencia quiere poder po der consultar su tel´efono efono y su especialidad. La agencia tambi´en en quiere tener una relaci´ on de clientes de cada viaje. De cada cliente on tiene el nombre, nombre, apellido ap ellidos, s, DNI, tel´ efono efono y viaje que ha contratado. contratado. Los datos que quiere obtener para cada cliente son su n´ umero umero de tel´ efono efono y el viaje en el que est´ a apuntado. Soluci´ on on Guia
Viaje
nombre apellidos DNI telefono especialidad Crear(): consultarTelefono(): consultarEspecialidad(): Eliminar():
codigo destino fecha salida fecha regreso precio guia Crear(): asignarGuia(): Eliminar():
Cliente nombre apellidos DNI telefono viaje Crear(): consultarTelefono(): consultarViaje(): Eliminar():
Figura 1: Diagrama de clases - agencia de viajes
Ejercicios Ejercicios resueltos resueltos Laboratorio DEI An´alisis alisis y Diseno de Algoritmos
1
1.2.
Modelizaci´ on de problemas - piezas de recambio
Una empresa de recambios de piezas de coches necesita una aplicaci´ on para gestionar sus ventas. Esta empresa compra las piezas a distintos proveedores para despu´es venderlas a los talleres. Cada pieza de recambio tiene un c´ o digo que la identifica y un u ´ nico proveedor que puede proporcionarla. Tambi´en tiene un precio de compra al proveedor y un precio de venta a los talleres. Las operaciones que se quieren hacer sobre la pieza son modificar los dos precios, comprarla y venderla. Los proveedores con los que trabaja la empresa tienen datos de contacto como tel´efono, direcci´o n, nombre del proveedor y CIF. La empresa quiere poder dar de alta nuevos proveedores y obtener sus datos de contacto. Adem´ as, la empresa quiere mantener la informaci´on de los talleres con los que trabaja: su nombre, CIF, tel´efono y direcci´ on. Quiere poder acceder a todos estos datos. Soluci´ on Pieza
Empresa piezas proveedores talleres Crear(): comprarPieza(): venderPieza(): anyadirProveedor(): anyadirTaller(): obtenerDatosProveedor(): obtenerDatosTaller(): Eliminar():
codigo proveedor precioCompraAlProveedor precioVentaAlTaller Crear(): modificarPrecioCompra(): modificarPrecioVenta(): comprar(): vender(): Eliminar():
Taller nombre CIF telefono direccion
Proveedor nombre CIF telefono direccion Crear(): consultarNombre(): consultarCIF(): consultarTelefono(): consultarDireccion(): Eliminar():
Crear(): obtenerCIF(): obtenerNombre(): obtenerDireccion(): obtenerTelefono(): Eliminar():
Figura 2: Diagrama de clases - piezas de recambio
Cuestiones abiertas: ¿Existe alguna relaci´ on entre Pieza y Proveedor? ¿Qu´e problemas plantea la soluci´on ofrecida en cuanto a la obtenci´ on de todas las piezas que ofrece un determinado proveedor? ¿Cuales ser´ıan las soluciones posibles?
Ejercicios resueltos Laboratorio DEI An´alisis y Diseno de Algoritmos
2
¿Existe alguna relaci´on entre Pieza y Taller? De ser as´ı ¿se trata de una asociaci´on? Nota: N´ otese que se han incluido en el dise˜no tanto las caracter´ısticas como las ope-
raciones que aparecen en el enunciado m´ as alguna de las que se deducen de ´estas. Sin embargo, la implementaci´ on del problema planteado supondr´ıa la aparici´ on de otras operaciones, como la consulta del precio de compra de una pieza, para hacer posible el correcto funcionamiento de la aplicaci´on final.
1.3.
Modelizaci´ on de problemas - guarder´ıa
Una guarder´ıa mantiene un varios grupos de alumnos. Cada alumno tiene nombre y apellidos, fecha de nacimiento, hora de entrada y salida de la guarder´ıa y el grupo al que pertenecen. Tambi´ en se informa del nombre, apellidos, DNI, direcci´ on y tel´efono del padre y de la madre. Las operaciones que se quieren hacer sobre cada alumno es obtener el grupo en el que est´an, las horas de entrada y salida y el tel´efono de su padre y/o madre. Cada alumno est´ a incluido en un grupo. Estos grupos se forman dependiendo de la edad del ni˜ no y de las horas que est´ a en la guarder´ıa. Cada grupo tiene dos profesores. De cada grupo se quiere obtener una lista de los ni˜ nos que lo forman y tambi´en qu´e profesores hay. Tambi´en se mantiene la informaci´on de todos los profesores: nombre, apellidos, DNI, direcci´on y tel´efono. Las operaciones que se hacen sobre los padres y los profesores son las mismas: obtener sus datos personales. Soluci´ on
La figura 3 muestra uno de los posibles dise˜ nos que sirven como una primera soluci´ on al problema propuesto. Cuestiones abiertas: ¿Qu´e papel juega la relaci´ on entre Persona y Alumno? ¿Y cual la relaci´on entre Persona y Grupo?
1.4.
Modelizaci´ on de problemas - cine
Un cine necesita una aplicaci´ on para la reserva de asientos en sus salas. Se trate de un multicine que tiene 5 salas, pero se prevee que este n´umero pueda crecer a lo largo del Ejercicios resueltos Laboratorio DEI An´alisis y Diseno de Algoritmos
3
Alumno
Guarderia grupos Crear(): buscarAlumno(): buscarProfesor(): localizarPadres(): Eliminar():
Grupo nombre profesor1 profesor2 alumnos Crear(): listarAlumnos(): obtenerProfesores(): Eliminar():
nombre fechaNacimiento horaEntrada horaSalida padre madre grupo Crear(): obtenerGrupo(): obtenerHoraEntrada(): obtenerHoraSalida(): obtenerTelefonos(): Eliminar():
Persona nombre apellidos DNI telefono direccion Crear(): obtenerNombre(): obtenerApellidos(): obtenerDNI(): obtenerTelefono(): obtenerDireccion(): Eliminar():
Figura 3: Diagrama de clases - guarder´ıa
tiempo. Cada sala tiene un n´ umero de asientos que se localizan por fila y dentro de ´esta, por n´ umero de asiento. Cuando se quiere reservar un asiento se consulta el estado que tiene en ese momento. Los posibles estados son: libre, reservado o pre-reservado. En el caso de que est´ e libre se puede hacer una reserva o pre-reserva. En el caso de que est´ e en pre-reserva o reservado ya no se pueden hacer operaciones sobre ese asiento. El estado de pre-reserva es un estado intermedio desde que se selecciona un asiento hasta que se confirma la reserva, momento en el que pasa a estar reservado. Otras operaciones que se pueden hacer en la aplicaci´ on son: Visualizar la sala al completo. Una vez se haya visualizado la posici´ on de los asientos en la sala se podr´ a seleccionar uno para hacer sobre ´el las operaciones de reserva y eliminaci´on/confirmaci´on de reserva. Asignar la pel´ıcula que se proyecta en una determinada sala. El precio es igual para todas las salas, pero se distingue entre dos tipos de asientos: preferentes y no preferentes. La empresa tambi´en quiere poder cambiar el precio de ambos tipos de asientos. Ejercicios resueltos Laboratorio DEI An´alisis y Diseno de Algoritmos
4
Soluci´ on
La figura 4 muestra un posible dise˜ no. Cine
Sala
salas Crear(): elegirSala(): anadirSala(): Eliminar():
Asiento
asientos pelicula Crear(): asignarPelicula(): visualizar(): seleccionarAsiento(): Eliminar():
numeroFila numeroAsiento estado esPreferente precio Crear(): asignarPrecio(): consultarPrecio(): cambiarEstado(): consultarEstado(): Eliminar():
Figura 4: Diagrama de clases - reserva de entradas de cine
Cuestiones abiertas: ¿Qu´e servicios no incluidos en el dise˜ no deber´ıa ofrecer el cine? ¿D´onde se plasmar´ıan las restricciones acerca de los cambio de estado del asiento?
1.5.
Modelizaci´ on de problemas - mascotas
Una tienda de mascotas quiere implementar una aplicaci´ on para gestionar el inventario de todos los animales que tiene. En la tienda hay animales de distintas especies: perros, gatos, conejos, etc. Se quiere poder a˜ nadir animales al inventario de la tienda, y tambi´en eliminarlos. Tambi´en se quiere obtener una lista con todos los animales de la tienda. Cada animal tiene un nombre y un c´odigo para identificarlo, adem´ as de su especie, raza y edad. Soluci´ on Animal nombre codigo especie raza edad Crear(): consultarNombre(): consultarRaza(): consultarEdad(): consultarCodigo(): Eliminar():
Inventario animales Crear(): listar(): anadir(): eliminar(): Eliminar():
Figura 5: Diagrama de clases - mascotas
Ejercicios resueltos Laboratorio DEI An´alisis y Diseno de Algoritmos
5