EXPOSICION: POLIMORFISMO Y FABRICACION PURA

Anuncio
EXPOSICION: POLIMORFISMO Y FABRICACION PURA
GRUPO 1: Cindy J. Bernal, Albeyro Echeverry, Jhoan A. García, Santiago
Gómez, Luis D. Males.
CONCEPTOS BÁSICOS:
COHESION: En una clase es la relación entre los distintos elementos de la
clase normalmente en sus métodos.
La cohesión consiste en que todos los elementos de una misma clase tienen
que trabajar en la misma dirección, es decir hacia un mismo propósito.
Ej.: Clase Coche debe ocuparse de cosas relacionadas con el coche en si,
como acelerar y frenar, pero no de cosas ajenas a el como manipular
información referente a su seguro.
En un buen diseño de un Producto de Software Orientado a Objetos el objetivo
es mantener en sus clases la mayor cohesión posible.
ACOPLAMIENTO: Es la interdependencia existente entre 2 o mas clases,
paquetes, etc. Esto ocurre cuando una clase o paquete necesita conocer
demasiados detalles internos de otra para su funcionamiento. Para obtener un
buen diseño fácil de mantener y modelar cuanto mas bajo acoplamiento se
presente en las clases mucho mejor.
POLIMORFISMO
En patrones GRASP es asignar el mismo nombre a servicios en diferentes
objetos cuando los servicios son parecidos ya que tienen asignados una misma
responsabilidad o están relacionados por la jerarquía de clases.
PROBLEMA:
¿Cómo manejar alternativas basadas en el tipo (clase).?
¿Cómo crear componentes de software conectables?
SOLUCION:
Cuando los comportamientos varían según el tipo asignar la responsabilidad
del comportamiento al tipo que varia, no utilizar condicionales para
comprobaciones del tipo de objeto para realizar la operación.
EJEMPLO:
En la aplicación del PDV Nueva Era, se debe soportar diferentes sistemas
externos de cálculo de impuestos de terceras partes, (como Master en
impuestos e impuestos-pro); el sistema debe integrarse con distintos de ellos.
PROBLEMA: ¿Qué objetos deberían ser los responsables de manejar estas
interfaces diferentes de los calculadores de impuestos externos?
SOLUCION: Polimorfismo en la adaptación a diferentes calculadores de
impuestos externos.
DISCUSION: Es un principio fundamental para el diseño en un sistema que
debe gestionar variaciones similares. Es fácil de extender para manejar nuevas
variaciones, por ejemplo el manejo de un nuevo Calculador de Impuestos seria
introduciendo una nueva clase adaptadora de ese calculador con su propio
método getImpuestos en el diseño existente.
CONTRAINDICACIONES: El uso innecesario de Polimorfismo para manejar
variaciones con poca o ninguna probabilidad que ocurran en el sistema.
Patrones relacionados con el Polimorfismo: Son las Variaciones Protegidas, el
Adaptador, Command, Composite, Proxy, Estado y Estrategia.
FABRICACIÓN PURA
Patrón que se basa en la creación de clases artificiales que agrupan
comportamientos o funciones comunes entre clases del dominio para soportar
los conceptos de Alta Cohesión y Bajo Acoplamiento.
PROBLEMA:
¿Qué Objetos deberían tener la responsabilidad para evitar la baja cohesión y
el alto acoplamiento ocasionados en algunos casos por otros patrones como el
Experto?
SOLUCION:
Asignar un conjunto de responsabilidades comunes (funciones) a una clase
artificial que no representa un concepto del dominio del problema y que al
implementarlas en otras clases provoca baja cohesión y alto acoplamiento en
ellas. Esta clase nueva soporta alta cohesión y bajo acoplamiento.
EJEMPLO:
En la aplicación del PDV Nueva Era, se debe almacenar los objetos creados de
Venta en una Base de Datos.
¿Qué clase debería dar el soporte a la Base de Datos para almacenar el objeto
Venta?
Según el Patrón Experto la Clase Venta sería la candidata para almacenar sus
propios atributos en la Base de Datos.
PROBLEMA: La clase Venta tendría que soportar gran variedad de
operaciones orientada al almacenamiento de datos que no se referencian en si
al concepto de Venta por lo tanto se produce Baja Cohesión.
La clase se debe adaptar a una interfaz de Base de Datos, en nuestro caso al
JDBC de java, provocando así alto acoplamiento.
SOLUCION: Almacenar datos en una Base de Datos son comportamientos
comunes entre varias clases por lo tanto implementarlos en una nueva clase
artificial “AlmacenamientoPersistente” que soporte estas funciones evita así el
problema de baja cohesión, baja reutilización y alto acoplamiento que se
producía al seguir el Patrón Experto.
DISCUSION: El diseño de los objetos se puede dividir en dos grupos:
1. Los escogidos de acuerdo a una descomposición de la representación.
2. Los escogidos según una descomposición del comportamiento.
DESCOMPOSICION DE LA REPRESENTACION:
Es una estrategia común en el diseño de los objetos y favorece el objetivo de
salto en la representación, es cuando decimos que una clase esta relacionada
o representa una cosa en el dominio.
DESCOMPOSICION DEL COMPORTAMIENTO
Cuando deseamos asignar responsabilidades agrupando comportamientos o
algoritmos, sin que interese crear una clase con un nombre u objetivo que este
relacionado con un concepto del dominio del mundo real.
Es una clase de conveniencia concebida por el desarrollador para agrupar
algún comportamiento o métodos relacionados
BENEFICIOS: Soporta alta Cohesión puesto que las responsabilidades se
factorizan en una clase que solo se centra en un conjunto muy especifico de
tareas relacionadas.
El potencial para reutilizar podría aumentar debido a la presencia de clases de
fabricación pura cuyas responsabilidades tienen aplicación en otras
aplicaciones.
CONTRAINDICACIONES: Abusar de la descomposición de comportamiento en
la creación de objetos de fabricación pura.
Abusar de la fabricación pura (demasiados objetos de comportamientos con
responsabilidades que NO se colocaron con la información necesaria para su
realización) = afecta el acoplamiento negativamente, ya que se puede
presentar clases con solo estructura de datos y otras con solo funciones.
Descargar