Hoy vamos a resolver un ejercicio de programación en Java usando programación orientada a objetos y lo que conlleva.
Veremos unas clases y clases abstractas que van a servir para llevar el control de gastos personales.
Te aviso desde ahora que solo te enseñaré las clases, pero no su implementación, ya que solo eso es lo que falta: un menú para invocar a los métodos de las clases e imprimir los resultados.
Obviamente tú puedes implementar este menú en consola, en una GUI, en un servidor web, etcétera.
Descripción del ejercicio
La práctica consiste en crear una aplicación de gestión de gastos personales. A través de un menú interactivo por la consola, introducir ingresos y gastos para así poder llevar un pequeño control de nuestra economía.
Clase Usuario
Esta clase será la encargada de gestionar un único usuario. Éste se creará al inicio del programa leyendo datos por el teclado. Ejemplo de datos correctos:
- Nombre: Alberto
- Edad: 23
El DNI deberá tener un formato concreto, está comprobación la realizará en la función setter, la cual devolverá un booleano conforme es correcto o no. Si el DNI es correcto quedará asignado.
Formato correcto:
- Los primeros 8 caracteres solo podrán ser numéricos.
- El ultimo caracteres deberá ser una letra entre la A y la Z.
- El guion entre los números y la letra es opcional admitiendo ambas
posibilidades. - DNI: 78844112L
- DNI: 78844112-L
Tendrá una función toString
con la que devolver su contenido.
Clases Gasto e Ingreso
Las clases Gasto
e Ingreso
heredarán de Dinero
(clase abstracta) y tendrán un único constructor en el que se inicializarán los valores recibidos por parámetros.
Además, tendrán una función toString
con la que devolver su contenido.
Clase Cuenta
Clase donde se gestionarán todos los movimientos de dinero tanto ingresos como gastos.
Inicialmente (en el constructor) se recibirá el usuario que es dueño de la cuenta y el saldo inicial será de 0.
Al añadir un nuevo ingreso se sumará al saldo de la cuenta teniendo en esta variable nuestro dinero real, la función devolverá el saldo de la cuenta.
Al añadir un nuevo gasto se debe comprobar si se dispone de saldo suficiente, en caso contrario se deberá lanzar una nueva excepción del tipo GastoException()
, pero el programa no debe finalizar.
Si se dispone de saldo suficiente se restará el importe del gasto y se devolverá el saldo de la cuenta.
Las funciones getGastos
y getIngresos
nos devolverán todos los movimientos de un tipo u otro. Tendrán una función toString
con la que devolverá el usuario y su saldo.
Código de Java
Una vez que hemos visto los requisitos de esta aplicación, veamos el código. Comencemos viendo la clase abstracta Dinero:
Recuerda que una clase abstracta no se puede instanciar, solo se puede extender desde otras clases. Y hablando de las clases que la extienden tenemos al gasto y al ingreso:
Por otro lado vamos a tener al usuario. Recuerda que se debe validar el DNI así que presta atención al método setDNI:
Después de eso tenemos la clase Cuenta
que como lo solicita el ejercicio va a recibir un Usuario
:
Fíjate en la línea 37. Dentro de ella estamos lanzando la excepción GastoException
como lo solicita el ejercicio, misma que es una excepción personalizada de Java y se ve así:
Poniendo todo junto
El código completo de todas las clases junto con el método Main que usa un poco de ellas (no todo, pues como te lo dije, no he implementado el menú) queda así:
Como siempre te digo: eres libre de descargar, mejorar y modificar el código. También te dejo con más artículos de programación en Java para que aprendas más sobre este lenguaje.