Este repositorio recopila los ejercicios de la asignatura Programación realizados en el tercer trimestre del Primer curso del Grado Superior en Desarrollo de Aplicaciones Multiplataforma (DAM).
La práctica se centra en el desarrollo de una aplicación de consola que simula las operaciones de un cajero automático. El objetivo principal es aplicar los conocimientos de Java y la persistencia de datos utilizando JDBC para conectar con una base de datos MySQL. Se implementa el patrón de diseño DAO (Data Access Object) para separar la lógica de negocio del acceso a los datos, promoviendo un código más limpio y mantenible.
El objetivo de este proyecto es crear un sistema de cajero automático funcional que permita al usuario realizar las siguientes operaciones:
- Crear y conectarse a diferentes "bancos" (esquemas de base de datos en MySQL).
- Listar el dinero total y el desglose de billetes/monedas en la cuenta.
- Realizar compras, calculando el vuelto si es necesario.
- Ingresar dinero en la cuenta.
- Transferir fondos entre diferentes bancos.
Todo esto se gestiona a través de una interacción por consola, demostrando el manejo de transacciones y operaciones CRUD (Crear, Leer, Actualizar, Borrar) en la base de datos.
El proyecto está organizado siguiendo una estructura estándar de Maven:
pom.xml: Archivo de configuración de Maven que define las dependencias del proyecto, como el conector de MySQL, y la versión de Java a utilizar.src/main/java: Contiene todo el código fuente de la aplicación, organizado en los siguientes paquetes:main: Contiene la claseMain, que es el punto de entrada de la aplicación y gestiona el menú de usuario.model: Incluye las clases del modelo, comoCuentaBancaria, que representa las entidades de datos.dao: Implementa el patrón DAO. Contiene la interfazCuentaBancariaDAOy su implementaciónCuentaBancariaDAOImplementacion, que encapsula toda la lógica de acceso a la base de datos.util: Clases de utilidad para la gestión de la base de datos.DBUtilse encarga de la conexión yDBcreacionDatabaseTablasgestiona la creación dinámica de esquemas y tablas.
src/main/resources: Almacena archivos de configuración, comodb.properties, que contiene las credenciales y la URL de conexión a la base de datos.
Para ejecutar y desarrollar este proyecto, se ha utilizado el siguiente entorno:
- IDE: Eclipse IDE for Enterprise Java and Web Developers.
- Lenguaje: Java (se recomienda JDK 17 o superior).
- Gestor de Proyectos: Apache Maven.
- Base de Datos: MySQL.
- Driver: JDBC a través de la dependencia
mysql-connector-javaespecificada en elpom.xml.
- Asegúrate de tener una instancia de MySQL en ejecución.
- Modifica el archivo
src/main/resources/db.propertiescon tus credenciales de MySQL (usuario y contraseña). - Importa el proyecto como un "Existing Maven Project" en Eclipse.
- Ejecuta la clase
main.Mainpara iniciar la aplicación.
La estructura del ejercicio ha sido establecida por el profesor de la asignatura, dando la libertad de abordarlo según criterio personal. Este repositorio tiene fines educativos y refleja el progreso en el aprendizaje de Programación durante el primer curso de DAM.
Desarrollar este proyecto ha sido una experiencia de aprendizaje muy valiosa. Me ha permitido aplicar y entender en profundidad conceptos que hasta ahora eran más teóricos.
- Implementar el patrón DAO fue un gran paso. Me ha permitido separar la lógica de negocio de la capa de acceso a los datos. Esto hace que el código sea mucho más limpio, organizado y fácil de mantener. Ahora entiendo por qué es una práctica tan recomendada.
- También he profundizado el uso de JDBC para conectar la aplicación a una base de datos MySQL. Aprendí a realizar operaciones CRUD de forma segura usando
PreparedStatementpara evitar inyecciones SQL, y a manejar transacciones complejas concommityrollback. Esto fue muy importante para asegurar que operaciones como las transferencias de dinero se efectuaran correctamente y en caso de error revertir el proceso, reflejándose en la base de datos. - Usar Maven para gestionar el proyecto me ha facilitado mucho el trabajo, sobre todo para manejar las dependencias y configurar el entorno de compilación. Finalmente, este ejercicio me ha ayudado a pensar de forma más orientada a objetos, modelando el problema con clases que encapsulan tanto los datos como su comportamiento.
- En definitiva, siento que este proyecto ha sido un paso fundamental para entender cómo se construye una aplicación real, conectando todas sus capas para crear un software robusto y bien estructurado.