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
Animalcon los siguientes atributos:nombre(String)edad(int)
- Incluye un método llamado
hacerSonidoque devuelva un String con el sonido que hace el animal. - Crea al menos dos subclases de
Animal:LeonyElefante, cada una con su implementación del métodohacerSonido.
- Crea una clase base llamada
- Polimorfismo:
- Implementa una clase
Zoologicoque tenga un métodoagregarAnimalpara añadir diferentes tipos de animales a una lista. - Crea un método
mostrarSonidosque recorra la lista de animales y llame al métodohacerSonidode cada uno, demostrando polimorfismo.
- Implementa una clase
- Arrays de Objetos:
- En la clase
Zoologico, crea un array de objetosAnimalque contenga una cantidad fija de animales (por ejemplo, 5).
- En la clase
- ArrayList:
- Usa un
ArrayListen la claseZoologicopara gestionar los animales que están en exhibición.
- Usa un
- Pilas y Colas:
- Implementa una clase
Visitacon 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
- Propuestas de actividades avanzadas con XML, DTD, XPath y XSLT
- Apuntes extensos de XML y XSLT
- El momento IDEAL para impulsar tu FORMACIÓN y alcanzar tus Metas Académicas: LAS NAVIDADES.

- 20 ejercicios de funciones avanzadas en Python (al estilo de Ackermann)
- Cómo guardar una página web completa en MySQL con PHP (urlencode, BLOB y otras técnicas)
- 60 ejercicios de funciones recursivas en Python para la carrera de Informática
- SIMULACRO 2 – FP Programación de Videojuegos
- Simulacro de examen – FP Programación de Videojuegos
- ALERTA METEOROLÓGICA

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
- Propuestas de actividades avanzadas con XML, DTD, XPath y XSLT
- Apuntes extensos de XML y XSLT
- El momento IDEAL para impulsar tu FORMACIÓN y alcanzar tus Metas Académicas: LAS NAVIDADES.

- 20 ejercicios de funciones avanzadas en Python (al estilo de Ackermann)
- Cómo guardar una página web completa en MySQL con PHP (urlencode, BLOB y otras técnicas)
- 60 ejercicios de funciones recursivas en Python para la carrera de Informática
- SIMULACRO 2 – FP Programación de Videojuegos
- Simulacro de examen – FP Programación de Videojuegos
- ALERTA METEOROLÓGICA

ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido





































































































































































































































































INFORMACIÓN SOBRE 







Comments are closed