Ejercicio de Nivel Asequible
Introducción
Este examen final está diseñado para evaluar 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, con un enfoque particular en el uso de ArrayList
y polimorfismo.
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.
- Utiliza correctamente los conceptos de herencia y polimorfismo.
- Implementa y utiliza estructuras de datos como arrays de objetos,
ArrayList
, pilas y colas. - Utiliza la estructura de control
switch
para gestionar las opciones de un menú. - 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 una tienda de mascotas. La tienda tiene diferentes tipos de animales y cada uno tiene características específicas. Además, se deben gestionar las ventas y reservas de los animales usando estructuras de datos como ArrayList
, pilas y colas. Utiliza un menú interactivo con switch
para gestionar las opciones de la aplicación.
Requisitos
- Clases y Subclases:
- Crea una clase base llamada
Animal
con los siguientes atributos:nombre
(String)codigo
(String)
- Incluye un método llamado
mostrarInfo
que devuelva un String con la información del animal. - Crea al menos dos subclases de
Animal
:Perro
yGato
, cada una con su implementación del métodomostrarInfo
.
- Crea una clase base llamada
- Polimorfismo:
- Implementa una clase
Tienda
que tenga un métodoagregarAnimal
para añadir diferentes tipos de animales a una lista. - Crea un método
mostrarAnimales
que recorra la lista de animales y llame al métodomostrarInfo
de cada uno, demostrando polimorfismo.
- Implementa una clase
- ArrayList:
- Usa un
ArrayList
en la claseTienda
para gestionar los animales disponibles en la tienda.
- Usa un
- Pilas y Colas:
- Implementa una clase
Venta
con los atributoscliente
(String) ycodigoAnimal
(String). - Usa una pila (
Stack
) para almacenar las ventas realizadas. - Usa una cola (
Queue
) para gestionar la lista de reservas de los clientes para animales específicos.
- Implementa una clase
- Menú con
switch
:- Implementa un menú interactivo que permita al usuario:
- Agregar un animal
- Mostrar animales
- Vender un animal
- Reservar un animal
- Mostrar ventas realizadas
- Mostrar reservas pendientes
- Implementa un menú interactivo que permita al usuario:
Ejemplo de Código
import java.util.*;
class Animal {
protected String nombre;
protected String codigo;
public Animal(String nombre, String codigo) {
this.nombre = nombre;
this.codigo = codigo;
}
public String mostrarInfo() {
return "Animal: " + nombre + ", Código: " + codigo;
}
}
class Perro extends Animal {
private String raza;
public Perro(String nombre, String codigo, String raza) {
super(nombre, codigo);
this.raza = raza;
}
@Override
public String mostrarInfo() {
return "Perro: " + nombre + ", Raza: " + raza + ", Código: " + codigo;
}
}
class Gato extends Animal {
private String color;
public Gato(String nombre, String codigo, String color) {
super(nombre, codigo);
this.color = color;
}
@Override
public String mostrarInfo() {
return "Gato: " + nombre + ", Color: " + color + ", Código: " + codigo;
}
}
class Venta {
private String cliente;
private String codigoAnimal;
public Venta(String cliente, String codigoAnimal) {
this.cliente = cliente;
this.codigoAnimal = codigoAnimal;
}
@Override
public String toString() {
return "Cliente: " + cliente + ", Animal vendido: " + codigoAnimal;
}
}
class Tienda {
private ArrayList<Animal> animales;
private Stack<Venta> ventasRealizadas;
private Queue<Venta> reservasPendientes;
public Tienda() {
animales = new ArrayList<>();
ventasRealizadas = new Stack<>();
reservasPendientes = new LinkedList<>();
}
public void agregarAnimal(Animal animal) {
animales.add(animal);
}
public void mostrarAnimales() {
for (Animal animal : animales) {
System.out.println(animal.mostrarInfo());
}
}
public void venderAnimal(String codigoAnimal, String cliente) {
Iterator<Animal> iterator = animales.iterator();
while (iterator.hasNext()) {
Animal animal = iterator.next();
if (animal.codigo.equals(codigoAnimal)) {
ventasRealizadas.push(new Venta(cliente, codigoAnimal));
iterator.remove();
System.out.println("Animal vendido: " + animal.mostrarInfo());
return;
}
}
System.out.println("Animal no encontrado en la tienda.");
}
public void reservarAnimal(String codigoAnimal, String cliente) {
reservasPendientes.add(new Venta(cliente, codigoAnimal));
}
public void mostrarVentasRealizadas() {
for (Venta venta : ventasRealizadas) {
System.out.println(venta);
}
}
public void mostrarReservasPendientes() {
for (Venta reserva : reservasPendientes) {
System.out.println(reserva);
}
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Tienda tienda = new Tienda();
boolean salir = false;
while (!salir) {
System.out.println("Menú de opciones:");
System.out.println("1. Agregar animal");
System.out.println("2. Mostrar animales");
System.out.println("3. Vender animal");
System.out.println("4. Reservar animal");
System.out.println("5. Mostrar ventas realizadas");
System.out.println("6. Mostrar reservas pendientes");
System.out.println("7. Salir");
System.out.print("Elija una opción: ");
int opcion = scanner.nextInt();
scanner.nextLine(); // Consumir el salto de línea
switch (opcion) {
case 1:
System.out.println("Agregar animal:");
System.out.print("Nombre: ");
String nombre = scanner.nextLine();
System.out.print("Código: ");
String codigo = scanner.nextLine();
System.out.println("Tipo de animal (1: Perro, 2: Gato): ");
int tipo = scanner.nextInt();
scanner.nextLine(); // Consumir el salto de línea
Animal animal;
if (tipo == 1) {
System.out.print("Raza: ");
String raza = scanner.nextLine();
animal = new Perro(nombre, codigo, raza);
} else {
System.out.print("Color: ");
String color = scanner.nextLine();
animal = new Gato(nombre, codigo, color);
}
tienda.agregarAnimal(animal);
break;
case 2:
System.out.println("Mostrar animales:");
tienda.mostrarAnimales();
break;
case 3:
System.out.println("Vender animal:");
System.out.print("Código del animal: ");
String codigoVenta = scanner.nextLine();
System.out.print("Nombre del cliente: ");
String cliente = scanner.nextLine();
tienda.venderAnimal(codigoVenta, cliente);
break;
case 4:
System.out.println("Reservar animal:");
System.out.print("Código del animal: ");
String codigoReserva = scanner.nextLine();
System.out.print("Nombre del cliente: ");
String clienteReserva = scanner.nextLine();
tienda.reservarAnimal(codigoReserva, clienteReserva);
break;
case 5:
System.out.println("Mostrar ventas realizadas:");
tienda.mostrarVentasRealizadas();
break;
case 6:
System.out.println("Mostrar reservas pendientes:");
tienda.mostrarReservasPendientes();
break;
case 7:
salir = true;
break;
default:
System.out.println("Opción no válida.");
}
}
scanner.close();
}
}
Conclusión
Este ejercicio te permitirá poner en práctica tus conocimientos sobre programación orientada a objetos y estructuras de datos, con un enfoque particular en el uso de ArrayList
y polimorfismo. Asegúrate de seguir las instrucciones y de utilizar correctamente las técnicas mencionadas. ¡Buena suerte en tu examen!
¿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
- La importancia de mantener un ritmo de estudio durante las navidades.
- Cómo Multiplicar Matrices en Java: Guía Completa con Ejemplo Práctico
- Triunfos y logros de nuestra Academia SanRoque
- Herramientas Imprescindibles para Realizar Ingeniería Inversa en Java
- ¿A qué nivel de conversación en inglés estás dispuesto a llegar con Academia SanRoque?
- Cómo Resolver una Ecuación de Segundo Grado con GNU Octave
- Cuando vienes a la Academia SaRoque justo antes del examen final.
- 25N Día Internacional para la Eliminación de la Violencia contra la Mujer
- Cuando el profesor nos da la última oportunidad.
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