1.7. Acoplamiento en programación#
El acoplamiento se refiere al grado de interdependencia entre diferentes partes de un programa, especialmente entre clases. Un acoplamiento alto indica una fuerte interdependencia, lo que significa que los cambios en una parte del programa pueden tener un impacto significativo en otras partes. Por otro lado, un acoplamiento bajo indica una débil interdependencia, lo que significa que las partes del programa están menos relacionadas entre sí y los cambios en una parte tienen un impacto limitado en otras partes.
Definiciones:
Acoplamiento Fuerte: Ocurre cuando las clases o módulos dependen estrechamente entre sí. Un cambio en una clase o módulo puede requerir cambios significativos en otras clases o módulos.
Acoplamiento Débil: Ocurre cuando las clases o módulos dependen débilmente entre sí. Un cambio en una clase o módulo tiene un impacto mínimo en otras clases o módulos.

1.7.1. Acoplamiento Fuerte#
class Usuario:
def __init__(self, nombre):
self.nombre = nombre
def mostrar_nombre(self):
return self.nombre
class Saludo:
def __init__(self):
self.usuario = Usuario("Juan")
def saludar(self):
print("¡Hola,", self.usuario.mostrar_nombre() + "!")
En este ejemplo, la clase Saludo
está fuertemente acoplada a la clase Usuario
. El método saludar()
de la clase Saludo
depende directamente del método mostrar_nombre()
de la clase Usuario
. Si se cambia el nombre del método mostrar_nombre()
en la clase Usuario
, también se debería cambiar en la clase Saludo
.
1.7.2. Acoplamiento Débil#
class Usuario:
def __init__(self, nombre):
self.nombre = nombre
class Saludo:
def __init__(self, usuario):
self.usuario = usuario
def saludar(self):
print("¡Hola,", self.usuario.nombre + "!")
En este ejemplo, la clase Saludo
tiene una dependencia débil de la clase Usuario
. En lugar de crear una instancia de Usuario
dentro de Saludo
, se pasa una instancia de Usuario
como parámetro al constructor de Saludo
. Esto hace que Saludo
no esté directamente acoplado a la implementación específica de Usuario
, sino que depende solo de la interfaz proporcionada por Usuario
.
1.7.3. Diferencias y Similitudes entre cohesión y acoplamiento#
Diferencias: La cohesión se centra en la relación entre los elementos internos de un módulo o clase, mientras que el acoplamiento se centra en la relación entre diferentes módulos o clases. La cohesión se refiere a cómo los elementos internos de una unidad de código están relacionados entre sí, mientras que el acoplamiento se refiere a cómo diferentes unidades de código dependen entre sí.
Similitudes: Tanto la cohesión como el acoplamiento son métricas utilizadas para evaluar la calidad del diseño del software. Ambos conceptos se centran en la relación entre las diferentes partes del programa y cómo afecta la facilidad de mantenimiento, reutilización y flexibilidad del código.