Contexto
Una tienda necesita un pequeño sistema para llevar el control de sus productos:
cuántas unidades tiene de cada uno, a qué precio se vende y cómo registrar ventas
y reposiciones. Vas a modelar esto con una clase Producto y vas a crear varios
objetos independientes a partir de ella, tal como viste en la lección: el plano
(Producto) frente a cada edificación concreta (cada producto real del local).
Consigna
Escribí una clase Java llamada Producto.java que represente un artículo de la
tienda, y una clase MainInventario.java con el método main que la ponga a
prueba.
1. Atributos de la clase Producto
Definí los siguientes atributos públicos (estado del objeto):
nombre(String)codigo(String)precio(double)stock(int)
Estructura sugerida para arrancar (completá los cuerpos de los métodos):
public class Producto {
public String nombre;
public String codigo;
public double precio;
public int stock;
public void venderUnidades(int cantidad) { /* ... */ }
public void reponerStock(int cantidad) { /* ... */ }
public void actualizarPrecio(double precio) { /* ... */ }
public void mostrarFicha() { /* ... */ }
}
2. Métodos (comportamiento)
venderUnidades(int cantidad): sicantidades mayor a cero y no supera elstockdisponible, descontá el stock e imprimí un mensaje de venta exitosa. Si no se cumple alguna condición, imprimí un mensaje de error explicando cuál.reponerStock(int cantidad): sicantidades mayor a cero, sumala alstocke imprimí la confirmación. Si no, imprimí un error.actualizarPrecio(double precio): el parámetro se llama igual que el atributo (sombreamiento intencional). Usáthis.preciopara referirte al atributo del objeto y actualizá su valor, mostrando el precio anterior y el nuevo.mostrarFicha(): imprimí todos los datos del producto con un formato prolijo, como en el ejemplo de salida esperada.
3. Instanciación en main
En MainInventario, creá al menos tres objetos Producto distintos con el
operador new, asignales atributos diferentes y ejercitá sus métodos. Verificá
que modificar un objeto (por ejemplo, vender unidades de productoUno) no
afecta en nada a los otros objetos: cada new reserva su propio espacio en el
Heap.
4. Referencias: alias vs. objeto nuevo
Para cerrar, comprobá con código la diferencia entre copiar una referencia y crear un objeto nuevo:
Producto copia = productoUno;
copia.stock = 29;
// productoUno.stock también es 29: copia y productoUno son la MISMA
// referencia, apuntando al mismo objeto en el Heap.
Mostrá por consola el valor de productoUno.stock después de modificar copia
para dejar en evidencia que no se creó un objeto nuevo, solo una segunda
variable apuntando al mismo lugar de memoria.
El formato exacto de tus mensajes puede variar, pero debe comunicar la misma información que la salida esperada de más abajo: qué se vendió, qué se repuso, el cambio de precio y el resultado del aliasing.