Boletín de Ejercicios - Unidad 6: Herencia y Polimorfismo
Resultados de Aprendizaje
Este boletín trabaja los siguientes RAs del módulo de Programación:
- RA4 — Desarrolla programas aplicando los principios avanzados de POO: composición, herencia, clases abstractas, interfaces y polimorfismo. Utiliza colecciones de objetos con jerarquías de clases.
Organización del boletín
Los ejercicios están organizados por temáticas progresivas: Composición → Herencia → Clases Abstractas → Interfaces → Polimorfismo. Completa cada sección antes de pasar a la siguiente.
1. Composición
Ejercicio 1: El PC Gamer
Queremos montar un ordenador por piezas.
- Crea las clases
Procesador(modelo, precio),MemoriaRAM(capacidad, precio) yTarjetaGrafica(modelo, precio). -
Crea la clase
Ordenador.- Atributos: Debe tener un objeto de cada uno de los componentes anteriores (Composición).
- Métodos:
getPrecioTotal(): Suma el precio de todos los componentes.toString(): Muestra la configuración completa del PC. 3. En elmain, monta tu PC ideal y muestra su precio.
Ejercicio 2: La Casa Real
Vamos a modelar una vivienda.
- Crea la clase
Habitacioncon atributosnombre(ej: "Salón", "Cocina") ymetrosCuadrados. - Crea la clase
Casa.- Atributos: Una lista (
ArrayList) de habitaciones. - Constructor: Inicializa la lista vacía.
- Métodos:
agregarHabitacion(Habitacion h).borrarHabitacion(String nombre).getMetrosTotales(): Recorre la lista y suma los metros cuadrados de todas las habitaciones.
- Atributos: Una lista (
- Crea una casa, añade 3 habitaciones y comprueba los metros totales.
2. Herencia
Ejercicio 3: Electrodomésticos Inteligentes
- Clase Padre:
Electrodomestico(precio, peso, color).- Constructor, Getters/Setters y un método
consumirEnergia()que imprime "Electrodoméstico consumiendo...".
- Constructor, Getters/Setters y un método
- Clases Hijas:
Lavadora: Añade atributocarga(kg) y sobreescribeconsumirEnergia().Television: Añaderesolucion(pulgadas) y sobreescribeconsumirEnergia().
- Prueba a crear objetos de ambos tipos y llama a sus métodos.
Ejercicio 4: Red Social
- Clase Base:
Publicacion(usuario, fecha, likes). - Clases Derivadas:
Tweet(texto). Restricción: No puede superar los 280 caracteres.Foto(urlImagen, filtro).Video(duracion).
- Crea un método
darLike()en la clase base que incremente el contador.
3. Clases Abstractas
Ejercicio 5: Figuras Geométricas
- Clase Abstracta:
Figura2D.- Métodos abstractos:
double calcularArea()ydouble calcularPerimetro().
- Métodos abstractos:
- Clases Concretas:
Circulo: Atributoradio. Implementa las fórmulas ($Area = \pi * r^2$).Rectangulo: Atributosbase,altura.
- Crea una figura de cada tipo y muestra sus áreas. Intenta instanciar
Figura2Dpara ver el error.
Ejercicio 6: Gestión de Empleados
- Clase Abstracta
Empleado(nombre, apellidos, dni).- Método abstracto:
double calcularSalarioMensual().
- Método abstracto:
- Hijos:
Asalariado: Tiene un sueldo fijo mensual al año (14 pagas). Salario mensual = sueldoAnual / 14.Comisionado: Tiene un sueldo base + comisión por ventas. Añade atributoventasRealizadas.PorHoras: Cobra por hora trabajada. Atributos:precioHora,horasTrabajadas.
4. Interfaces
Ejercicio 7: Reproductor Multimedia
- Interfaz
Reproducible.- Métodos:
play(),pause(),stop().
- Métodos:
- Clases:
CancionSpotify: Al hacer play dice algo como "Reproduciendo canción de rock...".VideoYoutube: Al hacer play dice "Mostrando vídeo...".Podcast: Al hacer play dice "Reproduciendo audio...".
- Prueba a meterlos todos en un array de
Reproducibley dale al play a todo.
Ejercicio 8: Sistema de Notificaciones
- Interfaz
Notificablecon métodoenviar(String mensaje). - Implementaciones:
Email: Imprime "Enviando correo a [email]: [mensaje]".SMS: Imprime "Enviando SMS a [telefono]: [mensaje]".PushNotification: Imprime "Notificación app: [mensaje]".
- Crea una clase
Alertaque tenga una lista deNotificabley un métodolanzarAlerta(String msg)que notifique por todas las vías a la vez.
5. Polimorfismo
Ejercicio 9: El Garaje Inteligente
- Clase Abstracta
Vehiculo(matricula, marca). Método abstractocalcularPrecioParking(). - Hijos:
Coche: 0.02€ por minuto.Moto: 0.01€ por minuto.Camion: 0.04€ por minuto.
- Clase
Garaje:- Tiene un
ArrayList<Vehiculo>. - Método
entrar(Vehiculo v). - Método
salir(Vehiculo v, int minutos)que cobra según el tipo de vehículo (Polimorfismo puro).
- Tiene un
Ejercicio 10: La Orquesta Sinfónica
- Interfaz
Instrumentocon métodotocar(). - Clases:
Piano,Guitarra,Violin.- Añade un método exclusivo a
Piano:afinarTecla().
- Añade un método exclusivo a
- En el
main:- Crea una lista de instrumentos variados.
- Recórrelos y haz que suenen.
- Reto: Usa
instanceofpara detectar si hay algún piano en la orquesta y, solo si es un piano, llámale aafinarTecla().