Alta cohesión
Bajo acoplamiento
Manuel G. Ochoa
Cindy Vanessa Perez
Camilo A. Sampedro
Grado de Cohesión
El nivel en el que el contenido de la clase es coherente con respecto a las responsabilidades de esta.
¿Está bien enfocada la clase a su propósito?
Grado de acoplamiento
Nivel de dependencia de una clase con respecto a otras.
¿Qué tan susceptible es la clase a cambios hechos en otras clases?
Tipos de cohesión:
- Cohesión coincidente.
- Cohesión lógica.
- Cohesión temporal.
- Cohesión de procedimiento.
- Cohesión de comunicación.
- Cohesión de información.
- Cohesión funcional.
Cohesión coincidente:
Sus tareas no tienen ningún tipo de relación entre sí.
Cohesión lógica:
Las tareas entran en una misma categoría, pero no se relacionan unas con otras.
Cohesión temporal:
Las tareas se relacionan al tener que ser ejecutadas al mismo tiempo.
Cohesión de procedimiento
Las tareas corresponden a una misma secuencia de acciones propia de la clase.
Cohesión de comportamiento
Las tareas tienen cohesión de procedimiento y además afectan a los mismos datos.
Cohesión de información
Las tareas tienen su propio punto de arranque, codificación independiente y trabajan sobre los mismos datos (ej: objetos)
Cohesión funcional
Se ejecutan llegando a un solo fin.
Tipos de acoplamiento
-
De contenido: Un módulo referencia directamente el contenido de otro.
- Común: Dos o más módulos acceden y afectan a un mismo valor global.
- De control: Un módulo envía a otro un elemento de control que determina la lógica de ejecución del mismo.
¿Para qué sirve?
Hace los módulos más fáciles de modificar posteriormente.
Permite a los módulos encargarse únicamente de sus responsabilidades, haciéndolas más sencillas.
Ejemplo alto acoplamiento.
class ProcesosImpuestos { float estimacion; float hacerEstimacion() { ValoresTasas vals = new ValoresTasas(); estimacion = vals.estimacionVentas;//Debería haber sido llamado como un método. Por ejemplo obtenerEstimacionVentas("CO"). } }
class ValoresTasas { public float estimacionVentas;//Debería ser private. public float estimacionVentasAjustado;//Debería ser private. public float obtenerEstimacionVentas(String region) { estimacionVentas = new ProcesosImpuestos().hacerEstimacion(); //Se debería de hacer el cálculo directamente aquí. return estimacionVentasAjustado; } }
Ejemplo baja cohesión
class InformePresupuesto {
void conectarABaseDeDatos(){ }
void generarInformeDePresupuesto() { }
void guardarAArchivo() { }
void mostrar() { }
}
class InformePresupuesto {
Opciones obtenerOpcionesDeReporte() { }
void generarInformeDePresupuesto(Opciones o) { }
}
class ConexionABaseDeDatos {
ConexionDB obtenerRDBMS() { }
}
class MaterialImpresion {
OpcionesImpresion obtenerOpcionesImpresion() { }
}
class ManejadorArchivo {
OpcionesGuardado obtenerOpcionesDeGuardadoAArchivo() { }
}
Fuentes:
- http://juan-garcia-carmona.blogspot.com/2012/09/grasp-a
lta-cohesion-y-bajo-acoplamiento.html - http://kimeraweb.com.es/SCJP/tema17.php
- http://cysingsoft.wordpress.com/2009/06/23/modularida
d-cohesion-y-acoplamiento-carlos-fontela/ - http://es.wikipedia.org/wiki/Dise%C3%B1o_estructurado
- http://es.wikipedia.org/wiki/GRASP#Alta_cohesi.C3.B3n_y
_bajo_acoplamiento
Alta cohesion, bajo acomplamiento
By Camilo Sampedro
Alta cohesion, bajo acomplamiento
- 1,061