Consulta ejercicio QMP2 #477
-
Hola, tengo una duda con los requerimientos del ejercicio de QMP2 y con la resolucion que esta en el aula, pregunto por aca porque nose si llego a conectarme hoy. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
Hola @LeandroFusetti
Correcto. Y eso no es necesariamente malo: se trata de un contrato débil, es decir, un acuerdo explícito del equipo de desarrollo por el cual siempre utilizarán
Sí, correcto. Allí estarías, en cambio, buscando crear un contrato fuerte, que impida la instanciación de la Esto no es bueno ni malo por sí mismo, sino otra alternativa con sus propias ventajas y desventajas: garantiza que tu intención se cumpla siempre, a expensas de menor flexibilidad y una solución más engorrosa de codificar. |
Beta Was this translation helpful? Give feedback.
-
Es importante notar que no todo requerimiento, expresado usualmente en términos humanos, de casos de uso e interacciones entre personas y el sistema (o entre otros sistemas y el nuestro), se mapea uno a uno a líneas de código. Quizás desde la aplicación siempre se creen las prendas siguiendo el proceso antes descripto, pero eso no necesariamente se traduce a que tus objetos tienen que crearse únicamente de esa forma. Definitivamente, que los objetos expresen fielmente a los requerimientos y que se comporten de forma consistente con los casos de uso es valioso, pero no siempre deseable y para nada exigible. Por el contrario, en muchas ocasiones permitir situaciones que no se darían normalmente en el flujo primario de una aplicación puede ser beneficioso: por ejemplo, podría simplificar la escritura de tus tests, o permitir otros casos de uso (como integraciones con sistemas externos, herramientas de mantenimiento, etc) que no sigan fielmente el mismo flujo que una persona usuaria. |
Beta Was this translation helpful? Give feedback.
-
Ésto se desprende de mis comentarios anteriores: no, no tiene por que ser implementado de esa forma. No existe una única forma de "instanciar" a un patrón (es decir, de llevarlo a la práctica). Los patrones se caracterizan por los problemas que resuelven, la terminología que introducen, las estrategias de solución, componentes, responsabilidades y relaciones que presentan, las ventajas y desventajas que aportan. Las implementaciones que se describen funcionan a modo de referencia y variarían de situación a situación y de lenguaje a lenguaje. En este caso particular, la esencia del patrón builder está en independizar la forma en que se configura a un objeto de su representación interna y posibilitar la construcción del mismo en varios pasos, potencialmente diferidos en el tiempo. Para ello se cosifica un objeto constructor (builder), que tendrá la responsabilidad de gestionar esas configuraciones y generar la representación concreta del mismo. Luego, otras cuestiones como polimorfismo entre builders o subtipos, orden de las operaciones, acoplamiento entre el objeto constructor y el construído, etc, varían y las podrás encontrar en diferentes implementaciones y bibliografías. |
Beta Was this translation helpful? Give feedback.
Hola @LeandroFusetti
Correcto. Y eso no es necesariamente malo: se trata de un contrato débil, es decir, un acuerdo explícito del equipo de desarrollo por el cual siempre utilizarán
Borrador
es para instanciar prendas. Nada evitará que incumplan este acuerdo, y será la responsabilidad del equipo velar por que el mismo se observe (por ejemplo, a través de la realización de revisiones de código en pull requests). De hecho, incluso podría haber situaciones en que acuerden que es mejo…