Está en la página 1de 4

Preguntas sobre Tarea 2. Introducción al diseño de objetos con patrones.

Lee todas las preguntas antes de contestar y después responde consultando los
apartados del tema 16.

1. ¿Cuáles son los dos tipos principales de responsabilidades que puede tener un objeto?

Un objeto puede tener las siguientes responsabilidades:


• Conocer
o En él se puede conocer datos privados, objetos relacionados o
conocer las cosas que puede derivar o calcular
• Hacer
o La responsabilidad de hacer de un objeto, pueden ser crear un
objeto, hacer un cálculo, indicar acción entre varios objetos o
controlar y coordinar actividades en otros objetos.

2. ¿Qué es un patrón de diseño? ¿Qué tres partes forman la definición de un patrón?

Describen un problema recurrente y una solución donde cada patrón nombra, explica y
evalúa un diseño recurrente. Dicho de otra manera, da solución a contextos, con una
sugerencia sobre la manera de usarlo en situaciones nuevas y diferentes.

• Las 3 partes diferentes son:


o Nombre
o Problema que resuelve
o Solución

3. ¿Qué significan en inglés las siglas GRASP? Traduce su significado al castellano.

GRASP es un acrónimo de General Responsibility Assignment Software Patterns, lo que


traducido al castellano sería “Patrones Generales de Software para Asignación de
Responsabilidades”.

4. ¿Qué significa que una clase tiene una responsabilidad? ¿Cómo se traduce esta
responsabilidad a código en una clase software?

Una única clase solo puede corresponder a una responsabilidad, ya que en caso de que se
pudieran tener varias (hacer y conocer), se produciría él citado acoplamiento provocando en
nuestra clase un alto acoplamiento junto a una baja cohesión. Algo totalmente incorrecto e
disfuncional.

5. ¿Qué problema resuelve el patrón Experto? ¿A quién le da la responsabilidad de hacer algo?

El problema que resuelve es: ¿Cuál es el principio general para asignar responsabilidades a
los objetos? Y la solución del mismo es darle la responsabilidad al experto en información.

6. ¿Qué problema resuelve el patrón Creador? ¿Qué solución aconseja?

·El problema que resuelves es quién debería ser responsable de crear una nueva instancia de
una clase. Y la solución que aporta sería asignarle a la clase “B” la responsabilidad de poder
crear una instancia de la clase “A” siempre que se diera alguno de los siguientes casos:
• B agrega objetos de A.
• B contiene objetos de A.
• B registra instancias de objetos de A.
• B utiliza más estrechamente objetos de A.
• B tiene los datos de inicialización que se pasarán a un objeto de A cuando sea creado
(por tanto, B es un Experto con respecto a la creación de A).
• B es un creador de los objetos A

7. ¿Qué es el acoplamiento? Pon un ejemplo de alto y de bajo acoplamiento. ¿Un alto


acoplamiento es bueno? Explica razonadamente tu respuesta.

Es una medida de la fuerza donde un elemento está conectado a una pieza o elementos que
encajan perfectamente exigiendo independencia de clases. Un ejemplo de bajo acoplamiento
sería necesitar crear la instancia “Pago” y asociarla a “Venta”.

¿Qué clase se encargará de hacer esto?


Como la instancia Caja “registra” un “pago”, el patrón CREADOR (visto anteriormente)
indica que “Caja” sería un buen candidato para crear la instancia “Pago”. Así mismo la
instancia “Caja” podrá enviarle a “Venta” el mensaje: “agregarpago” y con “Pago” como
parámetro.

Un alto acoplamiento no es bueno ya que recurre a muchas clases mientras que un bajo
acoplamiento recurre a menos. Al utilizar un alto acoplamiento podrían darse los siguientes
problemas:
• Los cambios de las clases afines ocasionan cambios locales
• Son más difíciles de entender cuando están aisladas
• Son más difíciles de reutilizar porque se requiere la presencia de otras clases de las
que dependen

8. ¿Qué es la cohesión? Pon un ejemplo de alta y de baja cohesión. ¿Una alta cohesión es
buena? Explica razonadamente tu respuesta.

La cohesión es una medida de la fuerza con la que se relacionan las y del grado de
focalización de las responsabilidades de un elemento. Una alta cohesión caracteriza a las
clases con responsabilidades estrechamente relacionadas para que no realicen un gran
trabajo. Algún ejemplo sería:

Aquí tratamos de colocar en la clase “Caja” la generación del pago debido al ya visto
patrón Creador.
Esto estaría bien hecho, pero si seguimos haciendo que la clase “Caja” se encargue de
efectuar algún trabajo con un número creciente de prácticas del sistema saturará y acabará
perdiendo totalmente la cohesión.

En cambio, en el siguiente ejemplo, “Venta”, posee la responsabilidad de crear el pago


dándole asimismo una alta cohesión y un bajo acoplamiento, en otras palabras, lo que sería
más funcional y correcto.

Por esto mismo y que la baja cohesión hace muchas cosas no afines y se carga de un trabajo
excesivo, implica que es mejor el uso de la alta cohesión.

9. ¿Qué problema resuelve el patrón Controlador? Pon un ejemplo de responsabilidad que se


le debe asignar a un objeto controlador y otro que no se le debe asignar.

El patrón controlador resuelve el problema sobre quién debería de encargarse en atender a


un evento del sistema.

Un ejemplo sería por ejemplo tener varias opciones en un mismo sistema tales como
terminarVenta(), pasarProducto() o efectuarPago().

Según el patrón controlador tenemos las siguientes opciones:

Y durante el diseño se le asignan una o más clases que se identificaron durante dicho
análisis tales como “registro”.
Al controlador se le debe asignar la responsabilidad de hacer ya que su función es
encargarse de quien debe resolver y encargarse de un evento del sistema.

10. ¿Es mejor diseñar pocas clases grandes con muchos métodos, o por el contrario muchas
clases con pocos métodos? Razona la respuesta y explica cómo afecta la cohesión y el
acoplamiento en los dos casos.

Es mejor tener muchas clases con pocos métodos ya que al modificar una clase mantiene un
bajo acoplamiento que a su vez tiene relacionado una alta cohesión en el sistema entre clases
y clases. El bajo acoplamiento favorece a que no se tengan que realizar muchos cambios
dentro del propio sistema por su esquematización, y que sean más fácil de entender y
comprender. Al producirse esto, como ya dije anteriormente se dará lugar una alta cohesión
que favorece la comunicación entre métodos para ser asimismo más efectivo y segura la
organización y control de ejecuciones.

También podría gustarte