Principios de diseño en POO

Cohesión


La cohesión describe qué tan bien están relacionadas entre sí las responsabilidades de un módulo o clase. Un módulo con alta cohesión tiene una única responsabilidad clara y todas sus funciones están estrechamente relacionadas con esa responsabilidad.


Tipos de cohesión:

  • Cohesión débil (baja): El módulo realiza múltiples tareas no relacionadas. Esto aumenta la complejidad y dificulta su comprensión, mantenimiento y reutilización.
  • Cohesión fuerte (alta): El módulo se centra en una sola responsabilidad. Es más fácil de entender, mantener, probar y reutilizar.

Ejemplo de cohesión débil:

def suma():
    a = float(input("Introduce el primer número: "))
    b = float(input("Introduce el segundo número: "))
    print("La suma es:", a + b)
Esta función:
  • Solicita entrada al usuario.
  • Convierte los datos.
  • Realiza la suma.
  • Imprime el resultado.

Realiza varias tareas que podrían dividirse para mejorar la cohesión.


Mejora: cohesión fuerte

def suma(a, b):
    return a + b

# Otro módulo puede encargarse de la interacción con el usuario
def pedir_numeros_y_mostrar_resultado():
    a = float(input("Introduce el primer número: "))
    b = float(input("Introduce el segundo número: "))
    resultado = suma(a, b)
    print("La suma es:", resultado)

Ahora, la función suma() tiene una sola responsabilidad: sumar dos números. Esto la hace más reutilizable en distintos contextos (por ejemplo, sin entrada de usuario).


Ventajas de la cohesión fuerte:

  • Reducción de la complejidad: Cada módulo tiene una única tarea bien definida.
  • Mejora en la reutilización: Es más fácil reutilizar módulos bien definidos en otros programas.
  • Facilidad de mantenimiento: Los cambios en una parte del código son más predecibles y localizados.