¡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 libro
- editorial(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 objetos- Cancion) - 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). Devuelve- truesi la encontró y eliminó,- falseen caso contrario.
- buscarCancionPorTitulo(String tituloCancion): Devuelve la- Cancionsi la encuentra, o- nullsi 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.