Acoplamiento y Cohesión en El Software
Acoplamiento y Cohesión en El Software
Acoplamiento y Cohesión en El Software
Acoplamiento,
Cohesión y SOLID {
<Por="Angela Maria Acosta y
Juan Pablo Caro"/>
}
Qué es Acoplamiento {
Acoplamiento de Contenido
}
Tipos de Acoplamiento {
}
Tipos de Acoplamiento {
}
Tipos de Acoplamiento {
}
Tipos de Acoplamiento {
}
Tipos de Acoplamiento {
}
Tipos de Acoplamiento {
}
Qué es Cohesión {
Cohesión Coincidente
La cohesión es una medida de la Cohesión Lógica
proximidad de la integración entre los Cohesión Temporal
distintos componentes de un módulo.
Cuanto más estrecha sea la combinación Cohesión Procedimental
de los elementos constitutivos del Cohesión Comunicativa
módulo, mayor será la cohesión del
Cohesión Secuencial
módulo y mayor la independencia del
módulo. Cohesión Funcional
}
Tipos de Cohesión {
}
Tipos de Cohesión {
}
Tipos de Cohesión {
Cuando las operaciones se incluyen en Modulo que tiene como tarea inicializar
un modulo porque han de realizarse al las tareas de un programa.
mismo tiempo. los elementos están
cohesionados en base a un hecho que
sucede en un determinado espacio de
tiempo. Es habitual encontrar este tipo
de cohesión en métodos de
inicialización o finalización.
}
Tipos de Cohesión {
·Un módulo continente operaciones que Modulo A: Tiene como funciones, recibir
se realizan en un orden concreto, la información de un usuario, validar
aunque sean independientes. la información, convertirla a un
formato especifico, registrar la
información en la base de datos.
}
Tipos de Cohesión {
Ejemplo:
Cohesión Comunicativa
Modulo A: Obtiene la información de un
Un modulo contiene un conjunto de usuario, calcula la edad, calcula peso
operaciones que se realizan sobre los ideal de la persona, calcula cuantos
mismos datos. años bisiestos ha vivido.
}
Tipos de Cohesión {
Ejemplo:
Modulo A:
}
Tipos de Cohesión {
Modulo A:
}
Principios SOLID { S - Single Responsability Principle
O - Open/Closed Principle
L - Liskov Substitution Principle
I - Interface Segretation Principle
D - Dependency Inversion Principle
Objetivos:
Crear un software eficaz: que cumpla con su cometido y que sea robusto y estable.
Escribir un código limpio y flexible ante los cambios: que se pueda modificar fácilmente
según necesidad, que sea reutilizable y mantenible.
Permitir escalabilidad: que acepte ser ampliado con nuevas funcionalidades de manera
ágil.
¡Crear Software de Calidad!
}
Single Responsability
Principle {
void enviarEmail(Usuario usuario, String
mensaje) {
Este principio establece que un
componente o clase debe tener una enviarMail;
responsabilidad única, sencilla y
concreta. }
}
public class CarroCarreras extends Carro {
Open/Closed Principle {
@Override
void acelerar() {
inyectarExtraGas();
Este principio establece que los super.acelerar();
componentes del software deben estar }
abiertos para extender a partir de private void inyectarExtraGas() {
ellos, pero cerrados para evitar que
se modifiquen. }
}
}
public class ElectricCar implements ICar {
@Override
public void accelerate() {
Liskov Substitution if (hasBattery()) {
Principle { System.out.println("Acelerando");
} else {
System.out.println("No puede acelerar");
}
Este principio establece que una }
subclase puede ser sustituida por su
String getType();
}
@Override }
public int getAge() {return age;}// get and set..
}
interface Persistence {
void save(Product product, PaymentType paymentType);
}
class Cash {
Este principio establece que los
módulos de alto nivel no deben de
Persistence persistence;
depender de los de bajo nivel. En
public Cash(Persistence persistence) {
ambos casos deben depender de las
this.persistence = persistence;
abstracciones.
}
public void pay(Prod product, PayTy payTy) {
persistence.save(product, paymentType);
} }
}