01 - La Forja: la app existe antes de escribir código
La Forja todavía no es un programa: es una idea que hay que especificar. Antes de escribir una línea de Java (la app nace en el paso 02), hay que decidir qué tiene que hacer y cómo se le va a hacer, con las herramientas del tema: el modelo Entrada - Proceso - Salida, diagramas de flujo con PlantUML y pseudocódigo.
1. Qué será la aplicación
La Forja es la aplicación interna del Gremio de Héroes:
- Registrar héroes: nombre, clase (guerrero, mago, arquero) y nivel inicial.
- Consultar la plantilla y la ficha de un héroe, con su poder de combate.
- Gestionar la forja: el almacén de ítems (armas, pociones, armaduras) del gremio.
- Equipar a un héroe con un ítem de la forja.
- Su versión final, mucho más adelante, será una API REST; pero eso no cambia el análisis: el algoritmo del menú es el mismo aunque cambie quién lo ejecuta.
Hoy solo se entrega la parte del gremio (registrar, listar, buscar): la forja y el equipado quedan para cuando la app sepa de objetos.
2. Entrada - Proceso - Salida
Primer análisis: clasificar cada acción en las tres fases del modelo.
| Fase | En La Forja |
|---|---|
| Entrada | opciones del menú, datos de un héroe (nombre, clase, nivel) |
| Proceso | registrar héroe, buscar por nombre, calcular poder |
| Salida | listado de la plantilla, ficha del héroe, mensajes de confirmación o aviso |
3. El encargo
- Completar el análisis IPO: repasar la tabla y añadir las acciones que faltan — entre otras, todo lo que puede salir mal (un dato inválido, una búsqueda fallida, plazas agotadas).
- Dibujar los diagramas de flujo: el bucle del menú y el recorrido de una acción que tenga decisiones (el registro sirve de caso representativo).
- Escribir el pseudocódigo equivalente, con las tres estructuras de control y sin detalles de Java (aún no se sabe ninguno).
- Documentar las decisiones: qué se considera un dato válido y qué se muestra en cada caso.
4. Con qué
- La sintaxis de PlantUML y las convenciones del pseudocódigo están en el tema 01.
- El material de hoy es papel (o diagrama y texto): hoy no existe ni compilador.
5. Decisiones tuyas
- ¿Qué acciones del menú son imprescindibles hoy y cuáles se dejan para la siguiente versión?
- ¿Qué le pedimos al usuario y en qué orden? ¿Confirmamos antes de guardar?
- ¿Qué es un dato válido y qué no (nombre vacío, clase sin sentido, nivel fuera de rango…)? ¿Y dónde se comprueba: al leerlo, al ejecutar la acción o al guardarlo?
- ¿Qué se muestra en cada caso: acierto, aviso de datos, error de plazas, despedida?
6. Comprobación
- Los diagramas no dejan callejones: toda decisión conduce a un aviso o a una continuación, y el menú siempre vuelve.
- El pseudocódigo usa de forma reconocible las tres estructuras: el menú como iterativa con ramas condicionales, cada acción como secuencial con sus validaciones.
- Ejecutarlo a mano con un guion (dos registros, un listado, una búsqueda acertada y una fallida) produce los mismos mensajes que se prometen.
- El de al lado puede seguir el pseudocódigo sin preguntar cómo funciona un gremio: nombres y mensajes se explican solos.
7. Pendientes
- El diseño dice *qué* guardar, pero no *cuánto*: la versión con arrays de 02 pondrá el primer techo artificial.
- El paso 02 traduce este diseño a Java con lo poco que se sabe por entonces: variables, la clase IO, selección, bucles, arrays y funcio