Professional Documents
Culture Documents
Ejercicios – 5
EJERCICIOS – Tema 5
PROGRAMACIÓN ORIENTADA A OBJETOS en JAVA
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:
A. Diseñar (gráficamente) una jerarquía de clases que represente la información descrita
sobre los elementos que integran el Centro de Cálculo, haciendo un uso óptimo del
principio de compartición y ocultación de la información. Identificar las operaciones
necesarias para la aplicación descrita. Indicar en el diagrama los atributos y operaciones
correspondientes a cada clase, y la condición de abstractas de las clases que así lo sean
(usando líneas discontinuas), si es el caso.
B. Implementa en Java la clase Centro de Cálculo
C. Implementa en Java la clase Ordenador y sus descendientes
D. Implementa en Java en las clases que juzgues necesario la operación para comprobar si un
ordenador está disponible
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:
A. Diseñar (gráficamente) una jerarquía de clases que represente la información descrita
sobre los Conceptos pertenecientes al salario de un empleado, haciendo un uso óptimo del
principio de compartición de la información. Indicar en el diagrama los atributos y
operaciones 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. Implementa la clase complemento de antigüedad.
C. Escribe el método de la clase Empleado que calcula el total de su sueldo: obtenerSalario()
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
2
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
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.
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.
Implementar la operación Tarifa para el tipo raíz y para el tipo Autobús.
Implementar el programa principal que procese una secuencia de vehículos a su paso
por el control de salida de la autopista.
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.
Para formalizar un seguro la compañía necesita unos datos iniciales:
tomador del seguro (persona que efectúa el contrato con la compañía)
propietario del vehículo
conductor habitual
3
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
tipo de vehículo (motocicleta o coche)
características del vehículo
coeficiente bonusmalus , valor numérico cercano a 1 que se utiliza para calcular la
prima total a pagar
6. Interfaz gráfica de ventanas
4
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
7. Biblioteca con nuevos fondos
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
Se acaba de inaugurar un centro multicines orientado al aprendizaje de idiomas y se quieren
gestionar sus diferentes salas. Las salas de cine tienen un aforo, una ocupación (el número de
asistentes del día actual) y un precio base de la butaca, y se dividen en varios tipos: salas donde se
proyectan películas en castellano; salas donde se proyectan películas en euskara y salas donde se
proyectan películas en versión original.
La entrada en las salas de castellano tiene un precio base. Sin embargo, como las salas con
películas en euskara o en versión original reciben subvención, se abarata su precio de entrada de
acuerdo a un porcentaje prefijado. Por ejemplo, si el precio base es de 1000 pesetas y el porcentaje
de descuento es un 25%, la entrada valdrá 750 pesetas.
Además del porcentaje de descuento queremos guardar la información acerca del idioma de los
subtítulos, ya que las salas que proyectan películas en euskara pueden tener los subtítulos en
5
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
9. Diferentes tipos de cultivos
La misma cooperativa anterior quiere automatizar la información de los distintos tipos de cultivos.
Dicha información incluirá las características de los cultivos adaptadas a la zona geográfica
concreta, para que un agricultor pueda consultarlas y decidir su nueva plantación.
Todos los cultivos tienen una época de siembra y de cosecha adecuadas, un tamaño mínimo de
finca y un tipo concreto de exposición solar (sol, sol/sombra, sombra). Por otro lado en los
cultivos de regadío se indica también la frecuencia de riego y las necesidades de agua en
litros/m2.
Los cereales (trigo, avena, maíz, centeno) y legumbres (garbanzos, lentejas, alubias) son cultivos
de secano y en ellos se indica el material industrial necesario para la cosecha y siembra
(cosechadora, empaquetadora).
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
10. Reparto de leña
En un municipio de una zona rural se va a proceder a realizar el reparto de leña para el invierno. A
cada fuego (familia) le corresponde un número de árboles del bosque del municipio; la cantidad
de árboles depende del número de personas de la familia. Al hacer el reparto el ayuntamiento
marca los árboles con dos iniciales correspondientes al fuego.
Un árbol se caracteriza, entre otras cosas, por la forma de la hoja, el grosor máximo que pueda
alcanzar, la calidad de su madera, el grosor real y el número de años; además tiene un código de
identificación. Un árbol se puede talar cuando su grosor real es mayor que la mitad del grosor
máximo correspondiente; además, en el caso de los árboles que no dan fruto la velocidad de
crecimiento (lenta, rápida) también se tiene en cuenta.
La zona de bosque del municipio tiene árboles de hoja caduca y árboles de hoja perenne. Entre los
árboles de hoja caduca algunos dan fruto (estos no se talan) y otros no. Algunos árboles de hoja
caduca de este municipio tienen la particularidad de encontrarse en zonas protegidas, lo que
impide su tala, y entre los de hoja perenne algunos son árboles singulares que tampoco se pueden
talar.
Para designar los árboles que finalmente se cortan el ayuntamiento utiliza una serie de criterios
basados en toda la información descrita, como por ejemplo la antigüedad o la velocidad de
crecimiento.
Se pide:
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.
11. Sensores de meteorología
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:
7
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
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).
12. Video Club
Un videoclub quiere poner en marcha un sistema de alquiler de películas por ordenador. Cuando
los clientes devuelven las películas, el programa calcula la cantidad que deben pagar. El videoclub
dispone de una amplia colección de películas en diferentes formatos como se describe a
continuación.
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.
El precio básico de las películas se calcula de la siguiente manera: si la película ha estado
menos de 24 horas alquilada se cobran 2 euros. A partir de entonces cada hora extra se cobra 0,25
euros.
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
8
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
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.
public interface IMaquina {
...
public Pelicula devolverPelicula ()
throws Error1, Error2;
// Salida: Devuelve el objeto película correspondiente
a la
// película que se ha devuelto
// Efecto: Dispara la excepción Error1 cuando el
usuario
// no ha insertado correctamente la película
// Dispara la excepción Error2 cuando se ha
// agotado el tiempo para la devolución
public void mensajeExplicacion ();
// Efecto: Muestra un mensaje por la pantalla de la
máquina
// indicando las instrucciones de uso
public void mensajeExpiracionTiempo ();
// Efecto: Muestra un mensaje por la pantalla de la
máquina
// indicando que se ha agotado el tiempo para
la devolución
...
}
13. Ludoteca
Una ludoteca dispone de diferentes juegos para entretener a sus socios. Estos juegos se pueden
clasificar en dos grandes grupos atendiendo al grado de influencia que tiene el azar en la
obtención de una victoria. Así, puede observarse que en juegos tales como el parchís y el
chinchón, el azar es un factor muy importante mientras que en otros como el ajedrez, el sudoku o
los crucigramas, éste apenas influye.
9
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
El centro dispone de la siguiente infraestructura: tableros de parchís para cuatro y para seis
jugadores, de tableros y piezas de ajedrez y de barajas de distintos tipos (de 40 cartas y de 50).
Además distribuye crucigramas, sopas de letras y sudokus. En cuanto al número máximo de
personas por partida depende de cada juego: para una partida de chinchón es de cinco jugadores,
para una de póker o de julepe es de cuatro, para el ajedrez es de dos, los sudokus, crucigramas y
sopas de letras son individuales y para el parchís depende del tablero disponible.
La ludoteca desea recoger de forma organizada la información correspondiente a todos los juegos
de los que dispone. Para cada uno de ellos guardará su nombre, descripción, normas del juego,
origen y número máximo de jugadores que pueden participar en una partida y precio de
inscripción por jugador. Además, para aquellos juegos en los que el azar no es factor decisivo, se
desea incluir una característica adicional que indique si el juego es considerado deporte o no.
También, dependiendo del tipo de juego, se deberá guardar información propia de cada uno de
ellos, tal como: el tamaño del tablero de parchís (para 4 jugadores o para 6), el número de
columnas y filas del sudoku, si el crucigrama es por sílabas o por letras, el nivel de dificultad de
la sopa de letras (alto, medio o bajo) y para el ajedrez el tiempo máximo que puede emplear cada
jugador para hacer un movimiento.
Cuando un cliente de la ludoteca desea participar en algún juego, debe inscribirse adecuadamente
y pagar la cuota de inscripción correspondiente. El precio de inscripción en los juegos de azar es
de 0.5 euros por jugador. Para los juegos que no son de azar, se establece una cuota de 1 euro si
no son considerados deporte y de 2 euros en el caso contrario. El precio total de una partida se
calculará multiplicando el valor de la inscripción por el número de jugadores.
Se pide:
Establecer 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. Marcar las clases abstractas
con línea discontinua. Para que el diagrama no sea muy grande, indicar todos los atributos
de las clases, pero SÓLO las operaciones imprescindibles para esta aplicación y NO
incluyáis las interfaces.
Implementar el método calcularPrecio que devuelve el precio total de una partida para
cada tipo de juego ofrecido por la ludoteca, suponiendo que en ella participa el número
máximo de jugadores. Indica para cada clase el código que le corresponde.
Implementar el método calcularPrecioTotal, que calcula el importe recaudado por la
ludoteca cuando todos los juegos disponibles están siendo utilizados por el número
máximo de jugadores.
10
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
Este año, y con motivo del aniversario de la creación de la ludoteca, se desea celebrar un
campeonato de juegos de naipes. Para ello, se está organizando partidas teniendo en
cuenta las barajas disponibles y el número máximo de jugadores que pueden participar en
cada juego. Los puntos apostados por los jugadores durante la partida se irán acumulando
en un atributo del juego que al comenzar estará inicializado con el valor cero. En los
juegos de naipes se guardan, además de la información propia del juego, los nombres de
los jugadores y la cantidad de puntos apostados.
Teniendo en cuenta las características descritas para este campeonato, se pide:
o Amplía la jerarquía de juegos previamente descrita para poder representar los juegos
de naipes.
o Implementar un método que, para cada juego de naipes muestre el nombre del juego,
los nombres de los jugadores que han participado en la partida y el número total de
puntos apostados en la misma. Implementad un método que imprima la información de
todas las partidas del campeonato ordenada por nombre del juego. Si hay varias
partidas del mismo juego, éstas se ordenan en función del número de puntos
apostados.
14. Agencia de Seguros
Se desea diseñar una aplicación que gestione los seguros de una empresa del ramo. Cada seguro
estará identificado por un código, el nombre y DNI del tomador y debe representar el precio base
y el agente que lo gestiona. Entre los seguros que oferta la compañía los más extendidos son los
seguros de vehículos los cuales se caracterizan por la matricula y el año de fabricación del
vehiculo. Existen seguros para vehículos particulares y para vehículos comerciales. En los
primeros es imprescindible conocer la edad del conductor así como la potencia del vehículo. Entre
los vehículos particulares (coches y motos), los seguros de moto tienen un complemento de
peligrosidad al precio base. También existen seguros para vehículos comerciales, en concreto para
furgonetas y camiones. En un seguro para vehiculo comercial se debe indicar el NIF de la
empresa, su sede y dedicación. Para los camiones un factor a tener en cuenta es el peso máximo
autorizado. Otra rama de seguros son los seguros de locales. Para una casa particular, se tiene en
cuenta si el barrio en que se encuentra es peligroso o no. En caso de un barrio peligroso el precio
se duplica. Para los locales comerciales se debe conocer el NIF de la empresa, su sede y
dedicación. La última rama que se gestiona son los seguros de vida, en los cuales se ha de
representar la edad del tomador del seguro, complemento de estado de salud y si pertenece a la
mafia o no. El precio de los seguros de vida se calcula de multiplicando la edad por el
complemento de salud y sumando 60000 euros si el tomador del seguro pertenece a la mafia.
Finalmente, en las clases que corresponda, se deberá definir una operación para mostrar los datos
del tomador del seguro y otra para mostrar los datos de la empresa relacionada.
Se pide:
− Establecer 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.
Marcar las clases abstractas con línea discontinua. Para que el diagrama no sea
muy grande, indicar todos los atributos de las clases, pero SÓLO las operaciones
imprescindibles para esta aplicación y NO incluyáis las interfaces.
11
PROGRAMACIÓN II Programación Orientada a Objetos en Java
Ejercicios – 5
− Implementar el método calcularPrecio que devuelve el precio del seguro.
Indica para cada clase el código que le corresponde.
− Implementar el método calcularPrecioTotal, que calcula el precio
correspondiente a todos los seguros tramitados por la compañía.
− En las condiciones del enunciado, identificar dónde es interesante definir una
interfaz que agrupe comportamiento de clases de diferentes puntos de la
jerarquía. Define la interfaz y justifica por qué es útil.
− Implementar el método infoSegurosComerciales, que muestra por pantalla la
información de todos los seguros contratados por empresas y muestra el número
de estos seguros que superan los 1000 euros.
12