Ejercicios – Patrones
Instrucciones:
1. Dado del caso en StarUML. Modifíquelo de tal manera de representar claramente cada uno de los
patrones.
a. Experto en información
b. Creador
c. Controlador
d. Alta cohesión
e. Bajo acoplamiento
f. Polimorfismo
g. Fabricación pura
h. Indirección
i. Variaciones Protegidas
2. Cada patrón del modelo debe expresarse a nivel de clases de diseño, mostrando de ser necesario
cambios que agreguen clases, atributos, relaciones, interfaces, entre otros
3. Cada uno de los patrones debe aplicarse justificando alguna funcionalidad o requisito.
4. Al final su trabajo debe seleccionar uno de los patrones representados e implementar las clases en
Java usando Eclipse.
5. Mostrar el diagrama de Clases de diseño, en donde se incorporan los patrones aplicados
Página 1 de 12
1 Patrones
1.1 Patrón Experto en Información:
Requerimiento: Gestionar el Stock del producto
Patrón: Experto en información
Diagrama de Clases Asociado:
Explicación: La Clase stock debe estar encargada de aumentar o disminuir las unidades
disponibles del producto, ya que esta Clase tiene toda la información sobre las unidades de los
productos
1.2 Patrón Creador:
Requerimiento: El pedido debe generar pagos
Patrón: Creador
Diagrama de Clases Asociado:
Explicación: El método agregar pago será el encargado de crear la Clase pago, ya que se agrega a
la Clase, almacena una instancia de los pagos, tiene toda la información necesaria para crear el
pago y usa las instancias creadas del objeto.
Página 2 de 12
1.3 Patrón Controlador:
Requerimiento: Generar pedido de compra
Patrón: Controlador
Diagrama de Clases Asociado:
Explicación: CarritoController es la Clase coordinadora, que al recibir la confirmación del usuario
desde la Clase VistaCarrito, genera un pedido con la información de CarritoCompra.
Página 3 de 12
1.4 Patrón Alta Cohesión:
Requerimiento: Calcular el total de la compra
Patrón: Alta Cohesión
Diagrama de Clases Asociado:
Explicación: Se separaron las responsabilidades del cálculo, creando un método subtotal, que es
cantidad de producto multiplicado por precio unitario, para la LíneaProducto y un método total,
que es la suma de los subtotales de LineaProducto, para CarritoCompra, generando una alta
cohesión de información.
Página 4 de 12
1.5 Patrón Bajo Acoplamiento:
Requerimiento: Disminuir acoplamiento entre clases
Patrón: Bajo acoplamiento
Diagrama de Clases Asociado:
Explicación: Existía un alto acoplamiento, por lo cual, para disminuirlo, se crea la Interfaz
ISubtotalLinea, lo que genera más independencia de las clases.
Página 5 de 12
1.6 Patrón Polimorfismo:
Requerimiento: Consultar crédito disponible para personas naturales y jurídicas
Patrón: Polimorfismo
Diagrama de Clases Asociado
Explicación: Se implementó polimorfismo, con el fin de hacer una distinción entre clientes, y
poder consultar el crédito disponible, según corresponda. Aunque las dos heredan de la Clase
Abstracta Cliente, la Clase PersonaNatural tiene un nombre como atributo y su crédito está dado
por una tarjeta de crédito, a diferencia de la Clase PersonaJuridica, que tiene razónSocial y posee
una línea de crédito.
Página 6 de 12
1.7 Patrón Fabricación Pura:
Requerimiento: Disminuir acoplamiento.
Patrón: Fabricación pura
Diagrama de Clases Asociado:
Explicación: Se disgregaron las responsabilidades de la Clase CarritoCompra, Creando una Clase
que se encargue de la vista de usuario y otra que tome la responsabilidad de generar el pedido,
desacoplando las Clases y dejando que CarritoCompra solo se responsabilice de la lógica del
negocio.
Página 7 de 12
1.8 Patrón Indirección:
Requerimiento: implementar medio de pagos
Patrón: indirección
Diagrama de Clases Asociado:
Explicación: Se utiliza la Clase servicio de pago como indirección, porque se espera que la API de
WebPay pueda sufrir cambios en el futuro.
1.9 Patrón Variaciones Protegidas:
Requerimiento: implementar medios de pago
Patrón: variaciones protegidas
Diagrama de Clases Asociado:
Explicación: Se crean Clases que heredan de la Clase abstracta MedioPago y que utilizan
polimorfismo para permitir la incorporación de modificaciones en los procesos de pago de
nuestros clientes
Página 8 de 12
2 Desarrollo de Patrón en JAVA
Patrón seleccionado: polimorfismo
Justificación: el código ejemplifica la implementación del patrón enfocada en el requerimiento de
consultar el crédito disponible de forma indistinta a un cliente ya sea una persona natural o
jurídica (polimorfismo).
Foto código clases implementadas (imagen parcial)
Página 9 de 12
Página 10 de 12
Página 11 de 12
3 Star UML.
Se adjunta el modelo con las modificaciones efectuadas producto de la aplicación de los patrones en
Star UML
Página 12 de 12