¡Claro! Aquí tienes una nueva serie de ejercicios de programación orientada a objetos en Java, con un nivel de dificultad similar a los que me has pasado:
Ejercicio 1: Gestión de Libros
Se necesita crear una clase Libro para gestionar la información de los libros en una biblioteca. De cada libro se requiere conocer:
titulo(String)autor(String)isbn(String) - Identificador único del libroeditorial(String)numeroPaginas(int)precio(double)
Se necesitan los siguientes constructores:
- Un constructor sin argumentos.
- Un constructor que inicialice
titulo,autoreisbn. - Un constructor que inicialice todos los atributos.
Además, se deben implementar:
- Métodos getters y setters para todos los atributos. El
isbnno debería poder modificarse una vez establecido (solo getter o setter privado si se inicializa en constructor). - Los métodos
equals()(dos libros son iguales si suisbnes el mismo),hashCode()ytoString()(que muestre la información del libro de forma legible). - Un método
mostrarInformacionDetallada()que imprima por consola todos los datos del libro de forma clara y formateada. - Un método
actualizarPrecio(double nuevoPrecio)que permita modificar el precio del libro. Asegúrate de que el precio no pueda ser negativo.
Implementa un método main donde se creen al menos dos objetos de tipo Libro, se muestre su información por consola utilizando toString() y mostrarInformacionDetallada(), y se pruebe el método actualizarPrecio.
Ejercicio 2: Simulación de Cuenta Bancaria
Desarrolla una clase CuentaBancaria que simule las operaciones básicas de una cuenta. La clase debe tener los siguientes atributos:
numeroCuenta(String) - Formato libre, pero único.nombreTitular(String)saldo(double)tipoCuenta(String) - Por ejemplo: “Ahorro”, “Corriente”, “Inversión”.
Se requieren los siguientes constructores:
- Un constructor sin argumentos (saldo inicial
0.0). - Un constructor que reciba
numeroCuentaynombreTitular(saldo inicial0.0). - Un constructor que reciba todos los atributos.
Implementa lo siguiente:
- Métodos getters y setters. El
numeroCuentano debería ser modificable tras la creación del objeto. Elsaldosolo debe ser modificable a través de los métodos de ingreso y retiro. - Los métodos
equals()(dos cuentas son iguales si sunumeroCuentaes el mismo),hashCode()ytoString(). - Un método
ingresarDinero(double cantidad)que incremente el saldo. Debe validar que la cantidad a ingresar sea positiva. Devolverátruesi la operación fue exitosa,falseen caso contrario. - Un método
retirarDinero(double cantidad)que decremente el saldo. Debe validar que la cantidad a retirar sea positiva y que haya saldo suficiente. Devolverátruesi la operación fue exitosa,falseen caso contrario. - Un método
consultarSaldo()que devuelva el saldo actual.
Crea una clase principal con un método main para instanciar objetos CuentaBancaria, realizar algunas operaciones de ingreso y retiro, y mostrar el estado de las cuentas.
Ejercicio 3: Gestión de Playlist Musical
Diseña una clase Cancion con los atributos: titulo (String), artista (String), y duracionSegundos (int).
- Implementa un constructor que reciba todos los atributos.
- Implementa getters y setters.
- Implementa
equals()(dos canciones son iguales si título y artista son iguales),hashCode()ytoString().
Luego, crea una clase Playlist que tendrá los siguientes atributos:
nombrePlaylist(String)canciones(un array de objetosCancion) - Capacidad máxima de 20 canciones.numeroCancionesActual(int) - Para controlar cuántas canciones hay en el array.
Para la clase Playlist:
- Implementa un constructor que reciba el
nombrePlayliste inicialice el array de canciones ynumeroCancionesActuala0. - Métodos getters para
nombrePlaylistynumeroCancionesActual. No se necesitan setters directos paracancionesonumeroCancionesActual. - Implementa
equals()(dos playlists son iguales si tienen el mismo nombre y las mismas canciones en el mismo orden),hashCode()ytoString()(que muestre el nombre de la playlist y los detalles de cada canción).
Añade los siguientes métodos a la clase Playlist:
agregarCancion(Cancion cancion): Añade una canción al final de la playlist si hay espacio. Si la playlist está llena, mostrará un mensaje. Devolverátruesi se añadió,falsesi no.eliminarCancion(String tituloCancion): Busca una canción por su título y la elimina de la playlist (debes reorganizar el array para no dejar huecos). Devuelvetruesi la encontró y eliminó,falseen caso contrario.buscarCancionPorTitulo(String tituloCancion): Devuelve laCancionsi la encuentra, onullsi no.duracionTotalPlaylist(): Devuelve la duración total de la playlist en segundos.mostrarCanciones(): Imprime por consola la lista de canciones de la playlist.
Crea un programa main para probar la funcionalidad: crea algunas canciones, crea una playlist, añade canciones, elimina alguna, busca una canción y muestra la duración total y todas las canciones de la playlist.
Ejercicio 4: Inventario de Tienda
Se quiere gestionar el inventario de una pequeña tienda. Para ello, crea una clase Articulo con los siguientes atributos:
codigo(String) - Identificador único del artículo.nombre(String)descripcion(String)precioCompra(double)precioVenta(double)stock(int)
Se necesitan:
- Un constructor que inicialice todos los atributos.
- Un constructor que inicialice
codigo,nombreyprecioVenta(stock inicial0, descripción vacía,precioCompraigual aprecioVenta*0.6). - Métodos getters y setters para todos los atributos. Valida que los precios y el stock no sean negativos.
- Los métodos
equals()(dos artículos son iguales si sucodigoes el mismo),hashCode()ytoString(). - Un método
incrementarStock(int cantidad)que aumente el stock del artículo. La cantidad debe ser positiva. - Un método
decrementarStock(int cantidad)que disminuya el stock. La cantidad debe ser positiva y no se puede decrementar más allá del stock disponible. Devuelvetruesi la operación es exitosa,falsesi no. - Un método
obtenerGananciaUnitaria()que devuelva la diferencia entreprecioVentayprecioCompra. - Un método
esRentable()que devuelvatruesiprecioVentaes mayor queprecioCompra,falseen caso contrario.
Implementa una clase GestionInventario con un método main. En el main:
- Crea un array (o
ArrayList) para almacenar objetos de tipoArticulo. - Añade varios artículos al inventario.
- Implementa una función (puede ser un método estático en
GestionInventarioo directamente enmain) que reciba el array de artículos y un código, y devuelva el artículo correspondiente onullsi no se encuentra. - Simula la venta de algunos artículos (decrementando su stock) y la llegada de nuevo stock (incrementando).
- Muestra por consola el estado final de varios artículos, su ganancia unitaria y si son rentables.