Java: aplicación de gestión de gastos personales

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.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario