Open In Colab

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.

Descripción de la imagen

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.