java

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:

See the gist on github.

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:

See the gist on github.

Por otro lado vamos a tener al usuario. Recuerda que se debe validar el DNI así que presta atención al método setDNI:

See the gist on github.

Después de eso tenemos la clase Cuenta que como lo solicita el ejercicio va a recibir un Usuario:

See the gist on github.

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í:

See the gist on github.

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í:

See the gist on github.

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

1 día hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

2 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

2 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

3 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

1 semana hace

Esta web usa cookies.