Ejercicio de Nivel Medio
Introducción
En este examen final, se evaluarán tus conocimientos sobre clases y subclases, polimorfismo, arrays de objetos, ArrayList, pilas y colas. A continuación, se presentan las instrucciones y el ejercicio a realizar.
Instrucciones
- El examen consta de un solo ejercicio práctico.
- Deberás implementar varias clases siguiendo los principios de la programación orientada a objetos.
- Asegúrate de usar correctamente los conceptos de herencia y polimorfismo.
- Implementa y utiliza estructuras de datos como arrays de objetos, ArrayList, pilas y colas.
- El código debe ser claro, comentado y bien estructurado.
Ejercicio
Contexto
Vamos a simular una pequeña aplicación para la gestión de un zoológico. El zoológico tiene diferentes tipos de animales y cada animal tiene características específicas. Además, se deben gestionar las visitas de los clientes, usando estructuras de datos para almacenar las colas de espera y las listas de animales en exhibición.
Requisitos
- Clases y Subclases:
- Crea una clase base llamada
Animal
con los siguientes atributos:nombre
(String)edad
(int)
- Incluye un método llamado
hacerSonido
que devuelva un String con el sonido que hace el animal. - Crea al menos dos subclases de
Animal
:Leon
yElefante
, cada una con su implementación del métodohacerSonido
.
- Crea una clase base llamada
- Polimorfismo:
- Implementa una clase
Zoologico
que tenga un métodoagregarAnimal
para añadir diferentes tipos de animales a una lista. - Crea un método
mostrarSonidos
que recorra la lista de animales y llame al métodohacerSonido
de cada uno, demostrando polimorfismo.
- Implementa una clase
- Arrays de Objetos:
- En la clase
Zoologico
, crea un array de objetosAnimal
que contenga una cantidad fija de animales (por ejemplo, 5).
- En la clase
- ArrayList:
- Usa un
ArrayList
en la claseZoologico
para gestionar los animales que están en exhibición.
- Usa un
- Pilas y Colas:
- Implementa una clase
Visita
con los atributosnombreCliente
(String) yhoraLlegada
(String). - Usa una pila (
Stack
) para almacenar el historial de visitas. - Usa una cola (
Queue
) para gestionar la lista de espera de los visitantes.
- Implementa una clase
Ejemplo de Código
import java.util.*;
class Animal {
protected String nombre;
protected int edad;
public Animal(String nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
}
public String hacerSonido() {
return "Sonido genérico";
}
}
class Leon extends Animal {
public Leon(String nombre, int edad) {
super(nombre, edad);
}
@Override
public String hacerSonido() {
return "Rugido";
}
}
class Elefante extends Animal {
public Elefante(String nombre, int edad) {
super(nombre, edad);
}
@Override
public String hacerSonido() {
return "Barrito";
}
}
class Zoologico {
private Animal[] animales;
private ArrayList<Animal> exhibicion;
private Stack<Visita> historialVisitas;
private Queue<Visita> listaEspera;
public Zoologico() {
animales = new Animal[5];
exhibicion = new ArrayList<>();
historialVisitas = new Stack<>();
listaEspera = new LinkedList<>();
}
public void agregarAnimal(Animal animal) {
for (int i = 0; i < animales.length; i++) {
if (animales[i] == null) {
animales[i] = animal;
return;
}
}
exhibicion.add(animal);
}
public void mostrarSonidos() {
for (Animal animal : animales) {
if (animal != null) {
System.out.println(animal.hacerSonido());
}
}
for (Animal animal : exhibicion) {
System.out.println(animal.hacerSonido());
}
}
public void agregarVisita(Visita visita) {
listaEspera.add(visita);
}
public void registrarVisita() {
if (!listaEspera.isEmpty()) {
Visita visita = listaEspera.poll();
historialVisitas.push(visita);
}
}
}
class Visita {
private String nombreCliente;
private String horaLlegada;
public Visita(String nombreCliente, String horaLlegada) {
this.nombreCliente = nombreCliente;
this.horaLlegada = horaLlegada;
}
@Override
public String toString() {
return nombreCliente + " llegó a las " + horaLlegada;
}
}
public class Main {
public static void main(String[] args) {
Zoologico zoo = new Zoologico();
Animal leon = new Leon("Simba", 5);
Animal elefante = new Elefante("Dumbo", 10);
zoo.agregarAnimal(leon);
zoo.agregarAnimal(elefante);
zoo.mostrarSonidos();
Visita visita1 = new Visita("Juan Pérez", "10:00 AM");
Visita visita2 = new Visita("María López", "10:15 AM");
zoo.agregarVisita(visita1);
zoo.agregarVisita(visita2);
zoo.registrarVisita();
zoo.registrarVisita();
}
}
Conclusión
Este ejercicio integra varios conceptos clave de la programación orientada a objetos y estructuras de datos. Al completarlo, habrás demostrado tu capacidad para aplicar estos conceptos en una situación práctica. ¡Buena suerte!
… … …
¡Coméntanos que te ha parecido este artículo al final de la página!
TÚ OPINIÓN IMPORTA
NUESTRAS ÚLTIMAS PUBLICACIONES
- La vida nos aguarda triunfos importantes. Sé resiliente.
- Creación de una Calculadora de Ecuación de Segundo Grado con HTML, CSS y JavaScript
- Comunicado a nuestros amigos, alumnos y compañeros de Valencia.
- Artículo: Funciones esenciales de C para la manipulación de cadenas: fgets, strlen, stdin, y más
- Uso de la Clase DAO sin Interfaces en Java: Ejemplo de Gestión de Trabajadores
- Uso de DAO en Java: Simplificando el Acceso a Datos con el Patrón DAO
- Guía Completa para la Creación de Gramáticas en JFLAP: Ejercicios y Soluciones
- Generación de Lenguajes en JFLAP con Gramáticas: Ejercicios y Estrategias
- Máquinas de Turing y Enumeración de Números Binarios: Diseño y Funcionamiento en JFLAP
… … …
¡Coméntanos que te ha parecido este artículo al final de la página!
TÚ OPINIÓN IMPORTA
NUESTRAS ÚLTIMAS PUBLICACIONES
- La vida nos aguarda triunfos importantes. Sé resiliente.
- Creación de una Calculadora de Ecuación de Segundo Grado con HTML, CSS y JavaScript
- Comunicado a nuestros amigos, alumnos y compañeros de Valencia.
- Artículo: Funciones esenciales de C para la manipulación de cadenas: fgets, strlen, stdin, y más
- Uso de la Clase DAO sin Interfaces en Java: Ejemplo de Gestión de Trabajadores
- Uso de DAO en Java: Simplificando el Acceso a Datos con el Patrón DAO
- Guía Completa para la Creación de Gramáticas en JFLAP: Ejercicios y Soluciones
- Generación de Lenguajes en JFLAP con Gramáticas: Ejercicios y Estrategias
- Máquinas de Turing y Enumeración de Números Binarios: Diseño y Funcionamiento en JFLAP
Contenido restringido
Comments are closed