Ejercicios Disenyo Resueltos y Comentados en Java Programación orientada a objetos21 22 PDF

Title Ejercicios Disenyo Resueltos y Comentados en Java Programación orientada a objetos21 22
Author Aitor García Camargo
Course Programacion orientada a objetos
Institution Universidad Rey Juan Carlos
Pages 12
File Size 507.9 KB
File Type PDF
Total Downloads 40
Total Views 146

Summary

Download Ejercicios Disenyo Resueltos y Comentados en Java Programación orientada a objetos21 22 PDF


Description

Ejercicio 1. Se desea modelar un sistema de gestión de pedidos. Un cliente puede realizar varios pedidos en un período de tiempo. Cada pedido está formado por varias líneas de pedido, cada una de las cuales se refiere a un solo producto. Se diferencian dos tipos de clientes, el cliente personal y el cliente corporativo. La diferencia entre los dos tipos de clientes es que el cliente personal pagará mediante una tarjeta de crédito, mientras que el cliente corporativo tiene un contrato con la empresa y un límite de crédito. Además, los vendedores de la empresa se encargan de atender las peticiones de los clientes corporativos, de forma que cada vendedor se hace cargo de una cartera de clientes corporativos, y a cada cliente corporativo sólo le atiende un vendedor.

A destacar:  Los llamados métodos de gestión: añadirPedido, añadirCliente, eliminarCliente, editarCliente. Son imprescindibles, especialmente los de añadir. Trabajan siempre con el array de objetos de la clase con la que están relacionados. Tienen un objeto de esa clase como argumento.  El método pagar de la clase Cliente. Recogerá un pedido (el que haya que pagar) , e invocará al método pagar de la clase Pedido, que cambiará el valor del atributo pagado.  La clase Línea de Pedido se podría eliminar, si añadimos a la clase Producto dos atributos: cantidad y precio_total.

Ejercicio 2. El sistema consiste en la venta de billetes para trenes que realizan diferentes trayectos sin paradas intermedias. La venta se realiza por personal de Renfe en las ventanillas destinadas a tal efecto en las estaciones origen y destino. Cada tren que realiza el trayecto está formado por una locomotora y ocho vagones. Cada vagón dispone de 60 plazas (30 de ventanilla y 30 de pasillo). El tren dispone de dos clases de billetes: turista y preferente. Cada clase de billete tiene un precio. El pago del billete se puede realizar en metálico o mediante tarjeta de crédito. Los plazos para la cancelación varían en función del tipo de billete. El supervisor de un viaje debe poder revisar la disposición de viajeros. El encargado de seguridad de las vías debe poder consultar los trenes que circularán por ellas en un determinado horario.

8

A destacar:  El encargado de seguridad o el supervisor de un viaje representan distintos tipos de usuarios que utilizarán el programa. En este ejercicio no se guarda información de ninguno de ellos, y por lo tanto no aparecen en el diagrama de clases. Sí es importante considerar las operaciones que realizan, que se corresponden con métodos que aparecen en las clases.  Al billete se le podría añadir un método imprimir y un atributo pagado.  En esta solución, la clase Plaza y Billete se podrían unificar, uniendo sus métodos y atributos. Es algo que suele suceder si las clases están relacionadas mediante una asociación bidireccional con cardinalidad 1 en ambos extremos.

Ejercicio 3. Se desea modelar el siguiente sistema: •





Los CDs de música contienen un título, un sólo intérprete, una calificación y un listado de canciones. Los intérpretes se encuentran identificados por su nombre. Los intérpretes pueden clasificarse en solistas y en grupos musicales. En el caso de los grupos musicales, habrá un listado de los nombres de las personas que componen la banda. La canción tiene un título, una duración expresada en segundos (no puede superar los 60 minutos), una fecha de publicación y una calificación. Una misma canción puede estar en varios CDs de música (por ejemplo, recopilatorios que haga el intérprete). Se deben definir los métodos que nos indiquen si una canción es igual a otra (será cuando el título, la fecha y la duración sea la misma), un método que nos devuelva en formato de cadena de caracteres los datos de una canción y un método para comprobar si una canción tiene calificación superior a otra. Las canciones (sueltas) y los CDs se podrán comprar por la plataforma de música que estamos diseñando.

A destacar:  La relación entre Canción e Intérprete es conveniente porque puede haber canciones sueltas, que no pertenezcan a un CD.  Advertir que en las relaciones unidireccionales la cardinalidad en el lado en el que no está la flecha no es importante, ya que ese objeto no migrará a la clase donde esté la flecha. En el ejercicio, un CD tiene un intérprete, y en la implementación habrá un objeto de la clase Intérprete en la clase CD. Pero no habrá ningún objeto de la clase CD en la clase Intérprete, por lo que la cardinalidad en ese lado no tiene demasiada importancia.

Ejercicio 4. Se pide realizar el diagrama de clases UML de un proyecto informático que permita la gestión de los datos relacionados con una empresa de ventas de coches de segunda mano, con las siguientes características: •

Los coches pueden ser turismos, industriales y todoterrenos. Además, pueden necesitar ser reparados, por lo que se debe tener un control de las reparaciones hechas, que pueden ser mecánicas, eléctricas o de chapa. Cada reparación se resolverá de una forma claramente diferenciada. Los coches pueden estar en reparación, en venta, reservados o vendidos.



En la empresa habrá varios vendedores, que pueden ser asalariados o por comisión. De ellos se conocerá su nombre, dirección y teléfono. De los asalariados nos interesa saber también el salario y de los que van con comisión los coches que han vendido.



Además, se tendrá un control de los clientes, tanto de los que han comprado un coche como de los interesados en algún tipo de coche, que podrán reservar. De los clientes sabemos su nombre, dni, dirección, teléfono, los coches que ha comprado y los coches que ha reservado.



Los coches pueden estar en distintas exposiciones, y debemos saber en todo momento dónde se encuentra cada coche. De las exposiciones debemos conocer el número de exposición, la dirección y el teléfono.



Se necesitan operaciones para realizar la venta de un coche, para reparar los coches que lo necesiten, para reservar un coche a un cliente interesado y para mover los coches de una exposición a otra.



También interesa tener operaciones que nos devuelvan qué cliente compró un determinado coche y qué coches ha vendido un vendedor determinado.

A destacar:  Entre Cliente y Coche aparecen dos relaciones diferentes. Recordemos que una relación implica una migración de atributos. En el caso de la compra, al ser la relación bidireccional, asumimos que al cliente le interesa almacenar un array de coches, precisamente aquellos que ha comprado, y además, al coche también le interesa saber qué cliente le ha comprado. Sin embargo, en la reserva, es suficiente con que el cliente sepa qué coches ha reservado, pero no es necesario que el coche tenga información sobre el cliente.  La clase Concesionario utiliza los almacenes necesarios para realizar las operaciones de compra y reserva. Parece aislada, pero en realidad apunta a las clases AlmacénCoches, AlmacénVendedores y AlmacénClientes.  Ejemplo de operación concreta: comprar un coche. La interfaz, que tendrá creado un Concesionario, o bien creará un Cliente, un Coche y un Vendedor o bien los seleccionará de entre los que hay en los almacenes de los que dispone. A partir de ahí, llamará al método concesionario.comprarCoche (cliente, coche, vendedor). Este método invocará a los métodos agregarCocheComprado (coche) y agregarCocheVendido (coche) del Cliente y del Vendedor, respectivamente. Estos últimos métodos, a su vez, invocarán a los métodos adecuados del Coche para modificar su estado, que pasará a estar comprado, no reservado y no en venta.  El método reparar de la clase Coche no tiene argumentos porque se supone que barre el array completo de reparaciones, resolviendo todas ellas.

Ejercicio 5 Se pide realizar el análisis y diseño de un proyecto informático que permita la gestión (simplificada) de un equipo o escudería de fórmula URJC, así como la simulación de su participación en carreras del Mundial o en entrenamientos. •

Cada escudería tiene nombre, país, año de fundación, presupuesto anual, varios directivos, puntos del mundial, al menos un piloto oficial (como

máximo dos) y uno o dos coches. También puede tener hasta un máximo de dos pilotos probadores. •

Los pilotos tienen nombre, apellidos, datos personales (edad, altura, peso), puntos del mundial, precio, sueldo por carrera y características técnicas (reflejos, agresividad, paciencia, valentía). Estas características tomarán valores de cero a cinco, y la suma de ellas será la valoración global del piloto. Su sueldo estará en función de la valoración: 50 € por cada punto de valoración. Los pilotos pueden estar empleados en una escudería o podrán estar libres, sin escudería.



Hay dos tipos de pilotos: pilotos oficiales y pilotos probadores. Los pilotos oficiales pueden participar en las carreras y en los entrenamientos. Los pilotos probadores sólo pueden participar en los entrenamientos. Los pilotos oficiales tendrán un plus de 50 euros por peligrosidad en su sueldo, por cada carrera.



Los coches tienen un modelo y tres características técnicas: potencia del motor, aerodinámica y neumáticos. Estas características hacen que los coches tengan una velocidad máxima en rectas y una velocidad máxima en curvas. Cada característica técnica tendrá un valor de cero a cinco. La velocidad máxima en rectas se obtiene de multiplicar la potencia por 20 y la aerodinámica por 30, sumando ambos productos. La velocidad máxima en curvas se obtiene de multiplicar la potencia por 10, los neumáticos por 10 y la aerodinámica por 10, sumando los tres productos. Ambas velocidades se representan en km/h.



Las escuderías podrán fichar pilotos (siempre y cuando tengan presupuesto para pagar sus sueldos). Para ello podrán solicitar pilotos que estén sin escudería, y también podrán fichar pilotos de otras escuderías (que no podrán oponerse), pagando con dinero (tendrán que tener suficiente) o intercambiando el piloto por otro piloto propio (la valoración de los pilotos intercambiados no podrá exceder más de un 10%). Es obligatorio mantener siempre el límite mínimo y máximo de pilotos permitidos para cada categoría de pilotos. Las escuderías también podrán descartar pilotos (pasarán a estar sin escudería).



Las escuderías podrán dar vueltas de entrenamiento por un circuito para mejorar sus coches y pilotos. Si deciden dar vueltas de entrenamiento, tienen que elegir el circuito, un piloto y un coche. Tanto el coche como el piloto oficial mejorarán todas sus características en 0,1 puntos. Si el piloto es probador, mejorará en 0.05 todas sus características. La escudería deberá pagar el canon del circuito por usarlo. Los circuitos se caracterizan por tener un nombre, un aforo, un canon por coche (un precio que tienen que pagar las escuderías por usar el circuito, ya sea para competir o para entrenar), un conjunto de rectas y un conjunto de curvas. De cada curva y de cada recta se almacenan sus kilómetros.





El Mundial está constituido por 5 carreras. Cada carrera tiene asociada un circuito. Cada carrera tendrá, una vez concluida, una clasificación final, que incluirá el tiempo marcado por cada piloto. A cada escudería y a cada

piloto se le asignan puntos de acuerdo a su clasificación: Al primero se le asignan 25 puntos, al segundo 18, al tercero 15, al cuarto 12, al quinto 10, al sexto 8, al séptimo 6, al octavo 4, al noveno 2 y al décimo 1. Además, los patrocinadores pagan a las escuderías 100000 euros al primer coche, 75000 al segundo, 50000 al tercero, 25000 al cuarto, 15000 al quinto y 10000 al sexto. Al finalizar el Mundial se mostrará un listado con la clasificación de los pilotos y de las escuderías. •

Las escuderías pueden decidir qué coches y qué pilotos van a participar en cada carrera del mundial. Si no eligen nada se establecerá una combinación al azar por defecto.



El Mundial de Fórmula URJC empieza cuando el director del Mundial lo decide. Una vez que el Mundial comienza las escuderías no pueden hacer cambios en sus pilotos.



La carrera consiste en dar cincuenta vueltas al circuito. La escudería tendrá que tener presupuesto suficiente para poder pagar el canon del circuito, así como el sueldo de sus pilotos. El tiempo empleado por cada coche se calculará de acuerdo a las velocidades en recta y en curva del coche y a los kilómetros de rectas y de curvas que tenga el circuito. Al tiempo obtenido por el coche se le restará 1 segundo por cada punto de la valoración global del piloto. Al acabar cada carrera se deberá dar la siguiente información de cada escudería: o Presupuesto actual (después de descontar sueldos, canon y sumar ganancias) o Puntos de sus pilotos. o Puntos de la escudería.



El sistema permitirá consultar las clasificaciones del mundial, parciales y finales. También será posible acceder a los resultados de cada carrera, una vez que ésta haya sido disputada. Además, dado un piloto será posible conocer en qué carreras ha participado y en qué posición ha quedado en cada una de ellas.

A destacar (explicación general del diagrama):  Un Mundial está compuesto de 5 Carreras. En las Carreras participan varios Coches. Los Coches tienen Pilotos. Los Pilotos, que también "ven" a sus Coches (relación bidireccional), se dividen en Probadores y Oficiales.  Las Escuderías contratan Pilotos, y disponen de los métodos para hacerlo. También realizan las asignaciones entre Coche y Piloto, y mandan a entrenar a sus Coches.  El Mercado es un almacén de Pilotos, que es utilizado por las Escuderías.  Los Coches, los Pilotos y las Escuderías utilizan la clase Circuito, para realizar entrenamientos.  El piloto Oficial almacenará directamente todas las Carreras en las que compita, de cara a tener rápido acceso a sus estadísticas.  La competición la controlará la clase Carrera, que dispone de toda la información relativa a sus Coches, Pilotos y Circuitos. El Mundial, como agregado de Carreras, podrá realizar clasificaciones generales.

Ejercicio 6

Estamos interesados en diseñar una aplicación que simulará una red social relacionada con el cine. El sistema contará con un conjunto de usuarios, que tendrán un nombre que los identificará y una clave de acceso. Cada usuario contará con un conjunto de "amigos" (otros usuarios afines), y con un muro en el que se publicará diferente información. Las películas serán dadas de alta en el sistema por los usuarios. Las películas tendrán un título, un año, un género, un director/a, un actor protagonista y una actriz protagonista. Cuando un usuario da de alta una película, la información de la misma aparecerá en su muro. Los usuarios podrán escribir críticas de cualquiera de las películas dadas de alta en el sistema. Las críticas tendrán una puntuación de 0 a 10 y un texto. Cuando un usuario escribe una crítica, ésta aparecerá en su muro. Tanto las películas como las críticas podrán ser compartidas: con todos los amigos o con alguno/s en particular. La información compartida aparecerá en los muros de los destinatarios, indicando quién compartió el elemento correspondiente. También existirá la opción de compartirlo todo (todas las películas y todas las críticas), nuevamente con todos los amigos o con alguno/s. La red social dará a los usuarios la posibilidad de jugar partidas a un trivia relacionado con las películas. Cada partida será disputada por dos usuarios, que tendrán que contestar a seis preguntas extraídas de la información de las películas (ver anexo). Los dos usuarios contestarán a las mismas preguntas, y cada uno acabará con una puntuación, por lo que la partida contará con un resultado final y con un ganador (o con empate). En cuanto al desarrollo de la partida, los usuarios podrán jugar una partida nueva. En este caso, se escogerá un usuario al azar de entre los que estén dados de alta en el sistema, que será su rival. El creador de la partida contestará las preguntas, y la partida quedará marcada como parcial, incorporándose además a la lista de partidas pendientes del rival. Cuando el rival entre al sistema podrá completar la partida: cuando lo haga, la partida dejará de ser parcial, pasando a formar parte de la lista de partidas completas tanto en el rival como en el usuario que la comenzó. En base a los datos de las diferentes partidas completas se construirá una clasificación que, en cada fila contará con el nombre del usuario, el número de partidas jugadas, ganadas, empatadas y perdidas, el porcentaje de victorias sobre el total de partidas jugadas y los puntos totales conseguidos. Esta clasificación se actualizará cada vez que concluya una partida, y se podrá ordenar por puntos totales, por número de victorias y también por porcentaje de victorias sobre el total de partidas jugadas. Además, la clasificación permitirá seleccionar a un usuario y mostrar el detalle de las partidas que ha jugado. Cuando una partida termina, la información de la misma se publicará en el muro de ambos usuarios, que, además, tendrán la opción de compartirla con todos sus

amigos o con alguno/s. Compartir las partidas también estará incluido en la opción de compartirlo todo antes explicada. ANEXO. REGLAS DEL JUEGO Cada pregunta estará relacionada con una película diferente, extraída al azar del sistema. Todas las preguntas tendrán una mecánica similar. •

La primera pregunta pedirá el título de una película determinada, dando como pista el año de distribución. Si el usuario acierta, sumará 50 puntos. Si falla o no lo sabe, el sistema ofrecerá otra pista: el género. Si el usuario acierta, sumará 40 puntos. El sistema seguirá dando sucesivas pistas (director/a, actor, actriz) y deduciendo 10 puntos cada vez en caso de error.



La segunda pregunta pedirá el año, ofreciendo el título como primera pista. Las siguientes pistas serán las siguientes: género, director/a, actor, actriz.



La tercera pregunta pedirá el género, ofreciendo el título como primera pista. Las siguientes pistas serán las siguientes: año, director/a, actor, actriz.



La cuarta pregunta pedirá el director/a, ofreciendo el título como primera pista. Las siguientes pistas serán las siguientes: año, género, actor, actriz.



La quinta pregunta pedirá el actor, ofreciendo el título como primera pista. Las siguientes pistas serán las siguientes: año, género, director/a, actriz.



La sexta pregunta pedirá la actriz, ofreciendo el título como primera pista. Las siguientes pistas serán las siguientes: año, género, director/a, actor.

 En la solución aparece la Interfaz “Compartible”. Se trata de un elemento de

programación similar a la clase, que representa que las clases que la implementan (en UML, notación parecida a la herencia, pero con líneas discontinuas) tienen métodos en común: en este caso, la posibilidad de compartir su información con otros usuarios....


Similar Free PDFs