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
- ✅ Cómo crear una aplicación To-Do List con C# y Windows Forms
- 🧠 ¿Qué es la herencia en C#? Ejemplo con personajes de videojuegos
- ¿Qué es una clase y un objeto en C#? Aprende a programar con ejemplos claros
- ¿Qué es una pila (stack)?
- ¿Qué es una función recursiva?
- ¿Qué es una enumeración en C#?
- 🧪 Simulacro de Examen – Programación II VJ1208 (Simulacro 5 – Estilo PDF)
- 🧪 Simulacro de Examen – Programación II VJ1208 (Sin estructuras dinámicas)
- ¿Qué son los Stack, Push, Pop y Peek en C#?
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
- ✅ Cómo crear una aplicación To-Do List con C# y Windows Forms
- 🧠 ¿Qué es la herencia en C#? Ejemplo con personajes de videojuegos
- ¿Qué es una clase y un objeto en C#? Aprende a programar con ejemplos claros
- ¿Qué es una pila (stack)?
- ¿Qué es una función recursiva?
- ¿Qué es una enumeración en C#?
- 🧪 Simulacro de Examen – Programación II VJ1208 (Simulacro 5 – Estilo PDF)
- 🧪 Simulacro de Examen – Programación II VJ1208 (Sin estructuras dinámicas)
- ¿Qué son los Stack, Push, Pop y Peek en C#?
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