Ejercicios Unidad 5: Programación Orientada a Objetos (Avanzado)
Resultados de Aprendizaje
Este boletín trabaja los siguientes RAs del módulo de Programación:
- RA2, RA4 — Diseña clases con lógica de negocio real: validaciones, atributos estáticos, constructores sobrecargados y métodos complejos. Aplica encapsulamiento y desarrolla programas orientados a objetos de mayor complejidad.
Instrucciones Generales
- Crea un proyecto nuevo en tu IDE llamado
AvanzadoPOO. - Para cada ejercicio, implementa la clase solicitada y una clase
Mainpara realizar las pruebas. - Asegúrate de seguir los principios de encapsulamiento (atributos privados y métodos públicos) donde se indique.
1. Registro de Personas (IMC y Edad)
Enunciado: Crea una clase Persona para gestionar datos personales y calcular indicadores de salud.
Detalles Técnicos:
- Atributos (Privados):
nombre,edad,DNI(no modificable tras su creación),sexo(H/M),pesoyaltura. - Constructores:
- Vacío (valores por defecto).
- Nombre, edad y sexo (resto por defecto).
- Todos los atributos.
- Métodos:
int calcularIMC(): Calcula el índice de masa corporal (peso / altura^2). Devuelve:- -1: Por debajo del peso ideal (IMC < 20).
- 0: Peso ideal (IMC entre 20 y 25, inclusive).
- 1: Sobrepeso (IMC > 25).
boolean esMayorDeEdad():truesi es >= 18.String toString(): Devuelve toda la información formateada.private void generarDNI(): Genera un número y letra aleatorios al crear el objeto.
Ponlo a prueba en el main: Pide datos por consola para un objeto, crea otros dos con valores fijos y muestra para cada uno su IMC, si es mayor de edad y su ficha completa.
Ejemplo de Salida por Consola:
2. El Juego del Conecta 4
Enunciado: Crea una clase Conecta4 que represente el clásico juego de estrategia en un tablero de 6 filas y 7 columnas. El tablero debe representarse mediante una matriz de caracteres (char[][]).
Detalles Técnicos:
- Atributos:
tablero: Matriz de 6x7.
- Métodos:
- Constructor: Inicializa el tablero con espacios vacíos o un carácter neutral (ej: '.').
boolean estaDisponible(int fila, int columna): Devuelvetruesi la posición está libre.void setFicha(int fila, int columna, char ficha): Coloca una 'X' o una 'O' en la posición indicada.boolean esO(int fila, int columna)yboolean esX(int fila, int columna): Verifican qué ficha hay en la posición.void mostrarTablero(): Imprime el tablero de forma legible en la consola.
Ponlo a prueba en el main: Crea un programa que permita a dos jugadores insertar fichas alternativamente. Muestra el tablero después de cada jugada.
Ejemplo de Salida por Consola:
3. El Desafío del Puzle 15
Enunciado: Crea una clase Puzle para resolver el rompecabezas de 15 piezas en un tablero de 4x4. El objetivo es ordenar los números del 1 al 15, dejando el hueco (representado por el 0) en la última posición.
Detalles Técnicos:
- Atributos:
matriz: Matriz de 4x4 de enteros.filaVacia,columnaVacia: Posición actual del hueco (0).
- Métodos:
- Constructor: Recibe una matriz de configuración inicial y localiza el hueco.
boolean moverArriba(),moverAbajo(),moverIzquierda(),moverDerecha(): Desplazan la pieza adyacente al hueco. Devuelvenfalsesi el movimiento es imposible (ej: mover arriba si el hueco está en la última fila).boolean estaResuelto(): Comprueba si los números están en orden (1-15) y el 0 al final.void mostrar(): Dibuja el tablero actual.
Ponlo a prueba en el main: Inicializa un puzle, muéstralo, realiza varios movimientos y verifica si se ha resuelto.
Ejemplo de Salida por Consola:
4. Gestión de Librería
Enunciado: Crea un sistema para gestionar una colección de objetos Libro utilizando un ArrayList.
Detalles Técnicos:
- Clase Libro: Atributos (
ISBN,titulo,autor,numPaginas) con getters/setters ytoString. - Clase Main: Implementa un menú interactivo:
- Añadir libro.
- Mostrar todos.
- Buscar por ISBN.
- Eliminar por ISBN.
- Vaciar lista.
Ponlo a prueba en el main: Mantén el programa en ejecución hasta que el usuario elija "Salir".
Ejemplo de Salida por Consola:
5. Sistema de Gestión de Empleados
Enunciado: Diseña un programa para administrar una plantilla de empleados con funciones avanzadas de búsqueda y ordenación.
Detalles Técnicos:
- Atributos:
id(único),nombre,puesto,salario. - Gestión de Datos: Puedes utilizar un
ArrayListde empleados, o unHashMap<Integer, Empleado>si deseas optimizar las búsquedas por ID. - Funcionalidades del Menú:
- Registrar Empleado: Validar que el ID no se repita.
- Buscar por Puesto: Filtrar y mostrar todos los empleados de un área.
- Aumentar Salario: Por ID y porcentaje.
- Estadísticas: Mostrar el empleado con mayor salario y el total de las nóminas.
- Ordenar: Permitir ordenar la lista por salario de forma ascendente.
Ejemplo de Salida por Consola: