Ejercicio de Nivel Asequible
Introducción
Este examen final está diseñado para evaluar tus conocimientos básicos 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 pilas y colas.
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.
- 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 sistema de pedidos en una tienda en línea. La tienda tiene diferentes tipos de productos y cada producto tiene características específicas. Además, se deben gestionar las órdenes de los clientes usando estructuras de datos para almacenar las pilas de productos en el almacén y las colas de pedidos de los clientes.
Requisitos
- Clases y Subclases:
- Crea una clase base llamada
Producto
con los siguientes atributos:nombre
(String)codigo
(String)
- Incluye un método llamado
mostrarInfo
que devuelva un String con la información del producto. - Crea al menos dos subclases de
Producto
:Electrodomestico
yRopa
, cada una con su implementación del métodomostrarInfo
.
- Crea una clase base llamada
- Polimorfismo:
- Implementa una clase
Tienda
que tenga un métodoagregarProducto
para añadir diferentes tipos de productos a una lista. - Crea un método
mostrarProductos
que recorra la lista de productos y llame al métodomostrarInfo
de cada uno, demostrando polimorfismo.
- Implementa una clase
- Arrays de Objetos:
- En la clase
Tienda
, crea un array de objetosProducto
que contenga una cantidad fija de productos (por ejemplo, 5).
- En la clase
- ArrayList:
- Usa un
ArrayList
en la claseTienda
para gestionar los productos en el inventario.
- Usa un
- Pilas y Colas:
- Implementa una clase
Pedido
con los atributosnombreCliente
(String) ycodigoProducto
(String). - Usa una pila (
Stack
) para almacenar los productos en el almacén. - Usa una cola (
Queue
) para gestionar la lista de pedidos de los clientes.
- Implementa una clase
Ejemplo de Código
import java.util.*;
class Producto {
protected String nombre;
protected String codigo;
public Producto(String nombre, String codigo) {
this.nombre = nombre;
this.codigo = codigo;
}
public String mostrarInfo() {
return "Producto: " + nombre + ", Código: " + codigo;
}
}
class Electrodomestico extends Producto {
private int potencia; // Potencia en vatios
public Electrodomestico(String nombre, String codigo, int potencia) {
super(nombre, codigo);
this.potencia = potencia;
}
@Override
public String mostrarInfo() {
return "Electrodoméstico: " + nombre + ", Potencia: " + potencia + "W, Código: " + codigo;
}
}
class Ropa extends Producto {
private String talla; // Talla de la ropa
public Ropa(String nombre, String codigo, String talla) {
super(nombre, codigo);
this.talla = talla;
}
@Override
public String mostrarInfo() {
return "Ropa: " + nombre + ", Talla: " + talla + ", Código: " + codigo;
}
}
class Tienda {
private Producto[] productos;
private ArrayList<Producto> inventario;
private Stack<Producto> almacen;
private Queue<Pedido> pedidos;
public Tienda() {
productos = new Producto[5];
inventario = new ArrayList<>();
almacen = new Stack<>();
pedidos = new LinkedList<>();
}
public void agregarProducto(Producto producto) {
for (int i = 0; i < productos.length; i++) {
if (productos[i] == null) {
productos[i] = producto;
almacen.push(producto);
return;
}
}
System.out.println("No hay espacio en la tienda para más productos.");
}
public void mostrarProductos() {
for (Producto producto : productos) {
if (producto != null) {
System.out.println(producto.mostrarInfo());
}
}
}
public void realizarPedido(String nombreCliente, String codigoProducto) {
pedidos.add(new Pedido(nombreCliente, codigoProducto));
}
public void procesarPedido() {
if (!pedidos.isEmpty()) {
Pedido pedido = pedidos.poll();
for (int i = 0; i < productos.length; i++) {
if (productos[i] != null && productos[i].codigo.equals(pedido.codigoProducto)) {
inventario.add(productos[i]);
almacen.remove(productos[i]);
productos[i] = null;
System.out.println("Pedido procesado: " + pedido);
return;
}
}
System.out.println("Producto no disponible en el inventario.");
}
}
}
class Pedido {
private String nombreCliente;
private String codigoProducto;
public Pedido(String nombreCliente, String codigoProducto) {
this.nombreCliente = nombreCliente;
this.codigoProducto = codigoProducto;
}
@Override
public String toString() {
return "Cliente: " + nombreCliente + ", Producto: " + codigoProducto;
}
}
public class Main {
public static void main(String[] args) {
Tienda tienda = new Tienda();
Producto electrodomestico1 = new Electrodomestico("Microondas", "E001", 800);
Producto ropa1 = new Ropa("Camiseta", "R001", "M");
tienda.agregarProducto(electrodomestico1);
tienda.agregarProducto(ropa1);
tienda.mostrarProductos();
tienda.realizarPedido("Ana García", "E001");
tienda.realizarPedido("Juan Pérez", "R001");
tienda.procesarPedido();
tienda.procesarPedido();
}
}
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 pilas y colas. Asegúrate de seguir las instrucciones y de utilizar correctamente las técnicas mencionadas. ¡Buena suerte en tu examen!
… … …
¡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