Ejercicios de POO
Ejercicios de POO
Ejercicios de POO
Ejercicios – 5
EJERCICIOS – Tema 5
1. Centro de cálculo
El centro de cálculo desea una aplicación para distribuir la ejecución de programas entre
sus ordenadores. Los programas se representan a través de su identificador y del compilador que
necesitan. El centro de cálculo debe procesar una lista de programas. Por cada programa se
decide en que ordenador se ejecuta dependiendo de algunos factores y se indica al ordenador
elegido que ejecute el programa. Para elegir el ordenador se debe comprobar que el ordenador
esté libre, se pueda utilizar y tenga instalado el compilador necesario para ejecutar el programa.
El centro de cálculo dispone de diverso equipamiento informático identificado por un
código. Dicho equipamiento se clasifica en ordenadores y dispositivos externos.
Los ordenadores tienen asociada la lista de compiladores instalados, el identificador del
procesador, la velocidad de proceso y su sistema operativo. El centro de cálculo tiene
ordenadores monotarea y multitarea. Para describir los primeros se necesita representar su
estado (libre cuando no está ejecutando ningún programa u ocupado en caso contrario). Así
mismo, los ordenadores monotarea se dividen en ordenadores sobremesa y portátiles. La política
de la empresa establece que los ordenadores portátiles no se pueden utilizar para ejecutar este
tipo de programas. En cuanto a los ordenadores multitarea, tienen asociado el número máximo
de tareas que pueden realizar a la vez y el número de tareas que está realizando en cada
momento (una tarea consiste en la ejecución de un programa).
Para completar el equipamiento informático describimos los dispositivos externos. Estos
se clasifican en dispositivos de entrada, de salida y de almacenamiento. Como dispositivos de
entrada tenemos los escáneres cuya característica es un número que indica su precisión. Las
impresoras son el único dispositivo de salida y se describen indicando su tipo (laser, chorro de
tinta) y la velocidad en páginas por segundo. Finalmente tenemos dos tipos de dispositivos de
almacenamiento, las grabadoras de CD y las unidades de cinta. Ambos tienen su velocidad de
transferencia y velocidad de acceso. Mientras que sólo las unidades de cinta tienen como
característica la cantidad de datos que pueden almacenar.
Se pide:
1
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
2. Salarios
Una empresa desea una aplicación para gestionar los salarios de sus empleados. La
empresa paga a sus empleados una cantidad de dinero por diferentes conceptos teniendo cada
uno distintas características. Algunos conceptos están libres de impuestos, mientras que otros
están sujetos a cierta retención por parte de Hacienda. Calcular el sueldo de un empleado no es
mas que sumar todos los conceptos netos correspondientes (es decir, restado las retenciones
cuando sea necesario).
Los conceptos libres de cargas son debidos a trabajos de diversa índole, por lo que se le
asocia una descripción del trabajo y número de horas invertidas.
En cuanto a los conceptos sujetos a retención, hacienda se lleva un porcentaje. Estos
conceptos se clasifican en: el sueldo base, los complementos y el trabajo extra.
• El sueldo base de cada empleado tiene un código numérico que lo identifica.
• Los complementos del sueldo tienen, además del porcentaje de retención mencionado, un
impuesto especial que varía para cada tipo de complemento. Los complementos que se tienen en
cuenta son: complemento de destino, complemento de cargo y complemento de antigüedad.
Para el complemento de destino se anotará el destino actual (ciudad y sucursal), para el
complemento de cargo se anota el propio cargo (jefe, directivo o empleado) y, finalmente,
asociado al complemento de antigüedad está el número de años.
• El concepto de trabajo extra tiene en cuenta el número de horas extra que ha realizado el trabajador
además de la justificación (fin de proyecto, guardia, otros). Dada la excepcionalidad de las horas extra,
Hacienda aplica un porcentaje especial como impuesto.
Se pide:
3. Organización de congreso
El grupo GTI está organizando un congreso en el que se prevé una amplia participación. Un
trabajo importante consiste en organizar convenientemente los maletines de participación que se
entrega a los participantes, los cuales tienen diferente contenido dependiendo del tipo de
inscripción en el congreso. Un participante puede ser:
- estudiante, y su maletín incluirá una tarjeta blanca con su nombre y centro, un libro
de actas del congreso, tres tarjetas de comida, una factura por el importe pagado
(15.000 pts) y un certificado de inscripción de Estudiante;
- senior, y su maletín incluirá una tarjeta blanca con su nombre y lugar de trabajo,
posiblemente varios libros de actas del congreso, varios tarjetas de comida, una
factura por el importe pagado (45.000 pts) y un certificado de inscripción Normal;
- miembro del comité de programa, su maletín incluirá una tarjeta verde con su
nombre y lugar de trabajo, varios libros de actas del congreso, varios tarjetas de
comida, una factura por el importe pagado (45.000 pts), certificado de inscripción
como miembro del Comité de Programa, y un regalo recuerdo de San Sebastián;
- invitado, su maletín incluirá una tarjeta azul con su nombre y lugar de trabajo,
varios libros de actas del congreso, varias tarjetas de comida, y un regalo recuerdo
de San Sebastián. No se incluye ninguna factura en este caso.
2
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
Queremos construir una aplicación que dada una lista de participantes nos proporcione,
para cada uno de ellos, la lista personalizada de contenidos de su maletín.
Utilizando programación orientada a objetos, diseñar la jerarquía de tipos de objetos
adecuada e implementar el procedimiento contenidosMaletín para cada clase de objetos.
4. Pago de autopistas
La empresa Europistas S.A. quiere automatizar el pago de usuarios en los controles de sus
autopistas. Para calcular el importe exacto a pagar por cada vehículo tiene en cuenta
básicamente: los kilómetros recorridos y el precio por km. Los kilómetros se determinan
directamente a partir de los puntos de entrada y salida de la autopista (el número de
entrada/salida indica directamente el punto kilométrico).
Establecer gráficamente una jerarquía utilizando tipos etiquetados que permita compartir la
información de forma óptima: en cada nodo del árbol que representa la jerarquía se especificará
el tipo definido y los atributos a definir en su nivel. Declarar en Ada los tipos de la rama del
árbol que va desde el tipo raíz al tipo Coche; hacerlo en diferentes paquetes aplicando
adecuadamente el principio de ocultación de información.
5. Primas de seguros
Una compañía de seguros de automóviles quiere automatizar el proceso de cálculo de las primas
de sus asegurados, y para ello encarga el desarrollo de una aplicación.
Los seguros que oferta la compañía son cuatro: Responsabilidad Civil, Terceros-Motocicleta,
Terceros-Coche y Todo-riesgo, aunque en todos los casos es posible además contratar una
póliza especial de seguro de Ocupantes. A continuación se describen los tipos de seguro:
- Responsabilidad Civil es obligatorio y su contratación está obligada por ley. La
3
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
cuota básica es fija y su valor está marcado anualmente por cada compañía. La
cobertura del seguro a terceras personas en siniestros está limitada a una cantidad
fija.
- Terceros-Motocicleta y Terceros-Coche amplían su cobertura a terceros hasta una
cantidad ilimitada. Las cuotas terceros-motocicleta y terceros-coche dependen de la
clase de vehículo, y sus valores están marcados anualmente por cada compañía en
las tablas correspondientes.
- Todo-riesgo incluye la cobertura de daños propios. Su cuota también depende de la
clase de vehículo, y su valor está marcado anualmente por cada compañía en la
correspondiente tabla. En este caso es posible pagar una franquicia de 20.000 o
40.000 pts, lo cual supone una disminución considerable de la prima a pagar.
- Ocupantes, añade la cobertura de daños del propietario, conductor y tomador del
seguro. Su cuota es una cantidad fijada por la compañía.
Se pide la especificación de estos tipos de ventanas y sus operaciones haciendo uso de técnicas
de programación orientada a objetos, compartiendo información en lo posible −herencia de
atributos y operaciones−, y estructurando la información en módulos distintos para los
diferentes tipos abstractos de datos. En concreto se piden:
− La jerarquía de clases.
− implementar la operación que permite cambiar de dimensiones a una ventana de tipo
aviso, indicando además dónde debe ir.
La operación de cambio de dimensión de las ventanas será común para todos los tipos, excepto
para los avisos (en los que la operación no producirá ningún efecto). En cuanto a la
visualización, hay que pensar que no será posible visualizar objetos tan heterogéneos por medio
de una única operación, y que las versiones de la operación para los diferentes tipos de ventanas
tienen que tener acceso a atributos comunes (título, dimensiones y posición).
4
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
La biblioteca anterior quiere modernizarse e incluir nuevo material de préstamo. Como se prevé
que vaya a haber nuevos cambios posteriores se plantea hacer la modificación del programa de
gestión en modo orientado a objetos. Ahora la biblioteca incorporará a sus fondos: discos, cintas
de vídeo y revistas. Es posible pedir en préstamo libros, discos y vídeos; sin embargo no se
prestan las enciclopedias, ni los diccionarios, ni las revistas.
Todos los ejemplares de la biblioteca llevan como información su código de identificación, la
fecha de incorporación a la misma, el título y un resumen de sus características. Cuando el
ejemplar se puede prestar es necesario saber también su estado de préstamo (libre, prestado, o
desaparecido), la fecha del préstamo y la de devolución prevista, y el número de socio que lo
tiene en su poder.
Para los libros se guarda además el autor y el tema general (novela, historia, artes, ciencia
ficción, etc.), la editorial y la fecha de edición; de los discos se almacena el interprete, la lista de
temas, y la compañía discográfica; de las enciclopedias y diccionarios se almacena la editorial,
la fecha de edición, y el número de tomos; de las revistas se almacena el título y la editorial.
Se pide:
− diseñar la jerarquía de clases aprovechando adecuadamente las propiedades de la
programación orientada a objetos.
− Implementar la operación constructora Crear para libros, y también cualquier otra
operación que se necesite para ello.
8. Subvenciones multicines
5
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
Las hortalizas (tomates, pimientos, vainas, acelgas, lechugas) y los árboles frutales (manzano,
cerezo, ciruelo) son cultivos de regadío y por sus problemas de plagas necesitan unos cuidados
especiales; cada tipo de cultivo tiene un grupo de plagas particulares.
Se pide:
1. Dibujar la jerarquía clases adecuada para implementar la información descrita; para
cada tipo indicar únicamente sus características y operaciones primitivas propias.
2. Implementar la operación imprimirCaracterísticas para los tipos necesarios de la rama
cuya hoja es Tomate; utilizar de forma óptima las características de la programación
orientada a objetos.
3. La consulta de un agricultor sobre un cultivo específico se resuelve accediendo a una
lista que incluye los cultivos posibles cada año. Crear un programa en el que se
implemente y explore dicha lista para una consulta concreta del agricultor, éste indicará
el nombre del cultivo del que requiere información y la aplicación imprimirá sus
características.
6
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
1. Dibujar la jerarquía de clases para implementar la información descrita; para cada tipo
indicar únicamente sus características y operaciones primitivas propias.
2. Implementar la operación esPosibleTalar para todos los tipos de la jerarquía
aprovechando las ventajas de la POO. Esta operación devuelve un valor True cuando es
posible talar el árbol (según los criterios descritos) y False en caso contrario (que sea
posible talar el árbol no significa que se vaya a hacer).
3. Supongamos que tenemos una lista de todos los árboles del bosque ordenada según los
criterios de asignación propios del ayuntamiento. Se pide implementar un programa
que: dado un número de árboles y la identificación del fuego al que corresponden,
imprima los árboles que el ayuntamiento asignaría a dicho fuego y los marque con la
identificación dada. En caso de que no hubiera árboles suficientes para asignar, el
programa visualizará un mensaje de aviso.
Las lecturas de los sensores metereológicos, están caracterizadas por el identificador del sensor,
la hora y el valor, pueden ser de diferentes tipos: temperatura, presión, viento y humedad
relativa del aire.
Hay lecturas que se toman en el exterior y otras que se toman en el interior de edificios. En el
exterior se toman lecturas de todos los tipos, mientras que en el interior de edificios
actualmente sólo se toman lecturas de temperatura, aunque se prevé que en un futuro se tomen
también otras. Todas las lecturas de exterior llevan como atributo la orientación de la pared en
la que está colocado el sensor (N, S, E, O) y una indicación de la condición de sol o sombra en
la que se encuentra en el momento de la medición. Las lecturas de la velocidad del viento se
caracterizan, además de por su valor en kms/h, por la dirección del mismo (tipo orientación).
Se pide:
a) Diseñar (gráficamente) una jerarquía de clases que represente la información
descrita, haciendo un uso óptimo del principio de compartición de la información,
y teniendo en cuenta la posible ampliación de la jerarquía en el futuro. Indicar en el
diagrama los atributos correspondientes a cada tipo, y la condición de abstractas
de las clases que así lo sean (usando líneas discontinuas), si es el caso.
b) Escribir la especificación del paquete que implementa el tipo correspondiente
a las lecturas de exterior como extensión de otro tipo de la jerarquía. Declárense
solamente los tipos de datos (no hace faltar declarar las operaciones).
Para cada película se guarda la siguiente información: título, productora, si está en alquiler
o no, y si lo está, el número de horas que lleva alquilada.
7
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
Por otra parte, el precio cambia en función del formato de la película. En el formato video
el precio básico se mantiene y se almacena una lista con los trailers (anuncios) incluidos en la
cinta. Todas las películas en DVD cuestan 0,5 euros más. Además tenemos tres tipos de
películas en DVD: normales, especiales y de lujo. Todos estos ofrecen la posibilidad de oír la
película en el idioma original, esta información se almacena para que los clientes puedan
conocerla. Los DVD normales tienen también una lista de trailers. Por su parte, los DVD
especiales, disponen de subtítulos en diferentes idiomas y son más caros que los normales en
0,25 euros. Finalmente los DVD de lujo, además de las ventajas de los DVD especiales, tienen
extras como el resumen del argumento y una crítica. Además los DVD de lujo tienen un precio
de 3 euros más 0,5 euros por hora extra de alquiler.
Se pide:
1. Estableced en un diagrama UML una jerarquía que represente los objetos que se han
descrito en el enunciado. Situar de forma correcta los atributos y operaciones de tal
manera que se fomente la compartición de la información y el comportamiento. Marcar
las clases abstractas (por ejemplo con línea discontinua). Para que el diagrama no sea
muy grande, indicad los atributos de las clases, SÓLO las operaciones imprescindibles
para esta aplicación y NO incluyáis las interfaces.
2. Implementad el método calcularPrecio en las clases que sea necesario.
3. Implementad el método de la clase VideoClub que muestre el título de las películas
que están actualmente alquiladas.
4. Queremos también una operación mostrarTrailersPeliculas en la clase
VideoClub para mostrar la lista de todos los trailers incluidos en las películas del
videoclub. NO defináis la operación mostrarTrailers en aquellos soportes que no
los tienen. Si necesitáis nuevas clases o definir algunos métodos en las clases
previamente descritas, hacedlo. Justifica tus decisiones explicando cuales son las
ventajas que tiene tu solución.
5. Imaginad que la aplicación incluye una clase Maquina que controla la máquina
expendedora de películas. Esta clase implementa la interfaz IMaquina que se muestra
a continuación. La clase VideoClub debe tener una operación
recuperarPelícula que se ejecuta cuando el usuario selecciona la operación para
devolver una película. Dado que en la devolución física de la película se pueden
producir errores, el usuario puede realizar varios intentos siempre dentro de un tiempo
límite. La máquina debe proporcionar ayuda en estos casos. Si se pasa el tiempo para la
devolución, la operación recuperarPelícula debe elevar otra excepción llamada
ErrorRecuperacion. Escribe el código de la operación recuperarPelícula
para que se traten adecuadamente las situaciones excepcionales.
8
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5