06 - La Forja: los informes del gremio en una línea

Los informes siguen con bucles manuales: sumar el poder de toda la plantilla exige acumulador, filtrar ítems de una rareza exige un if dentro de un for, y buscar un héroe es la tercera vez que se escribe el mismo bucle de búsqueda. El paso aplica el tema: lambdas e interfaces funcionales, API Stream y la clase Optional.

  • El gremio gana un día de informes — cada uno declarativo, sin bucles a mano:
    • Poder total del gremio (suma del poder de toda la plantilla).
    • ¿Alguien veterano?: una respuesta de sí/no para “¿hay algún héroe de nivel máximo?”
    • Capitán del gremio: el héroe de mayor poder.
    • Selección de la forja: los ítems de una rareza pedida, como nueva colección.
    • La agrupación por clase del paso 04, pero declarativa.
  • La búsqueda de héroes deja de devolver posiciones de la suerte (-1): su firma ya dice que puede no encontrar nada, y el que llama decide qué hacer con lo ausente — en La Forja, lanzar la excepción propia del paso 05.
  • Los bucles manuales que quedaban desaparecen: si un informe sigue con for cuando en clase se vio cómo se hace sin él, se defiende por qué.
  • Todo lo del tema: lambdas, interfaces funcionales(predicate, function, consumer, supplier), operadores intermedios y terminales de Stream (filtrar, transformar, agrupar, sumar, comprobar, elegir), y Optional para el resultado que puede no existir.
  • Cuida el nombre de la operación: si el informe es una suma, que se lea como suma; si es una comprobación, que no termine acumulando ni ordenando. La regla del tema: el código se lee como la frase que lo describe.
  • ¿Devuelve el capitán un héroe o algo que *puede ser* un héroe? Y si no hay nadie en la plantilla, ¿lanza, devuelve ausente o muestra consola? Justifica el camino.
  • ¿La agrupación por clase produce qué estructura y en qué orden llega? ¿Le importa al que imprime?
  • ¿Dónde vive cada informe y qué expone: números crudos o colecciones listas para imprimir? ¿Quién decide el formato final?
  • ¿La comprobación de los veteranos cuenta a los veteranos o pregunta solo si hay? Son informes distintos — y uno de ellos desperdicia trabajo si lo eliges mal.
  • ¿Los ítems de una rareza comparten estructura con los héroes de una clase: es el mismo informe con otras palabras?
  • Los bucles for que quedaban en los informes han desaparecido: cada informe se lee de arriba abajo como una frase.
  • El poder total con una plantilla vacía no rompe nada: devuelve y se muestra lo decidido.
  • El busca héroe que no existe pasa por el canal propio del paso 05, sin null por el medio.
  • El ítem que no existe no rompe nada: la selección devuelve colección válida (vacía).
  • El capitán de un gremio de un solo héroe es ese héroe.
  • Las pruebas de los pasos anteriores pasan enteras.
  • El proyecto es un puñado de clases en el paquete por defecto; sin estructura y sin gestor → paquetes y Maven (07).
  • El fichero de configuración aún se parsea a mano → con una librería de JSON (07).
  • clase/daw/prog/2eval/practicas/p7.txt
  • Última modificación: 2026/10/29 10:05
  • por cesguiro