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!
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.

NUESTRAS ÚLTIMAS PUBLICACIONES
- Las maravillas de las ciencias biológicas según la Academia SanRoque
- La motivación en Academia SanRoque
- Los docentes también se divierten.
- Comandos Principales en MongoDB y sus Equivalentes en Java
- Las bondades de escribir y leer cada día: herramientas esenciales para la vida académica, empresarial y social
- Immanuel Kant: Disertación contra las IA
- Forma Normal de Boyce-Codd (FNBC) en Bases de Datos
- Las Formas Normales en Bases de Datos
- La importancia de rodearte de personas virtuosas para alcanzar tus metas
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.

NUESTRAS ÚLTIMAS PUBLICACIONES
- Las maravillas de las ciencias biológicas según la Academia SanRoque
- La motivación en Academia SanRoque
- Los docentes también se divierten.
- Comandos Principales en MongoDB y sus Equivalentes en Java
- Las bondades de escribir y leer cada día: herramientas esenciales para la vida académica, empresarial y social
- Immanuel Kant: Disertación contra las IA
- Forma Normal de Boyce-Codd (FNBC) en Bases de Datos
- Las Formas Normales en Bases de Datos
- La importancia de rodearte de personas virtuosas para alcanzar tus metas
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido
Comments are closed