00 - La Forja: la práctica del curso
Durante todo el curso construiremos La Forja, una única aplicación que evoluciona con nosotros:
- Al principio es una aplicación de consola para gestionar el Gremio de Héroes: registrar héroes, consultar su ficha y gestionar el inventario de la forja.
- Cada tema del módulo aporta un concepto nuevo que la aplicación necesita, y ese concepto se aplica directamente sobre ella.
- Al final del curso, La Forja es una API REST con Spring Boot y login con tokens.
1. Cómo funciona la práctica
- Tras explicar cada tema en clase, se abre la versión actual de La Forja y se presenta el paso nuevo: no es un tutorial, es un encargo.
- Cada paso define tres cosas: el problema que sufre la versión anterior, la funcionalidad que se exige y las pruebas que deben pasar.
- El paso no trae diseño ni código resuelto: cómo se agrupan los datos, cómo se nombran las funciones, qué estructura de datos se elige, cómo se organizan los paquetes… son decisiones de cada alumno, razonadas y defendibles.
- Solo se da como fijo lo externo: los contratos que no se diseñan (el formato del JSON de configuración, el intercambio de tokens, el HTTP).
- Cada paso termina con una lista de pruebas: si las pasa, la versión cumple. Lo que sigue doliendo es la motivación del paso siguiente.
- Cada práctica tiene una solución de referencia: se publica después del encargo, y lo valioso no está en acertar el diseño a la primera, sino en comparar las decisiones razonadas de cada uno con las de la solución.
2. El arco de la aplicación
| Tema | Paso de La Forja | Herramientas del tema |
|---|---|---|
01 | La app existe antes que el código: diseñar el menú y el registro | IPO, diagramas con PlantUML, pseudocódigo |
02 | Primera versión funcional: arrays paralelos, funciones y estado compartido | Variables, IO, selección, bucles, arrays, funciones, sobrecarga |
03 | El modelo del gremio: objetos, jerarquía de héroes y forja | Clases, encapsulación, enum, herencia, polimorfismo, abstract, interfaces, equals/hashCode |
04 | La plantilla y la forja tienen techo: hay que quitarlo | List, Set, Map, Iterator, Comparable |
05 | La app tumba ante datos malos: reglas que no se rompen | Excepciones propias, try/catch, fichero de configuración |
06 | Los informes del gremio, sin bucles a mano | Stream, lambdas, Optional |
07 | Un montón de clases sin orden ni gestor | Paquetes, Maven, librería externa (Gson) |
08 | El negocio mezclado con la consola: separar en capas | Capas, DTO records, mapeadores, inyección manual |
09 | El contrato de la API, en papel | Endpoints, métodos HTTP, JSON, códigos de estado |
10 | La API en Spring Boot | @RestController, ResponseEntity, manejador global, logs |
11 | Peticiones que llegan a la vez | Pool de hilos de Tomcat, estado compartido |
12 | Acceso identificado al gremio | Tokens opacos, roles, filtro Servlet, Principal |
3. Nota de material
La práctica es material aparte de los temas de temario/: no sustituye a las explicaciones ni los ejercicios de cada tema. Los pasos se redactan en sintaxis DokuWiki y se publican junto a los temas de la web.
<note tip>Cada paso es corto y no vuelve a explicar los conceptos del tema: describe el problema, los requisitos y las pruebas; el diseño y el código los aport