Kann mir jemand das Prinzip der losen Kopplung aus der Informatik erklären?

1 Antwort

Es beschreibt einfach nur die Idee, Hard-/Softwarekomponenten möglichst unabhängig voneinander zu halten, sodass jederzeit die Flexibilität gegeben ist, sie auszutauschen.

Ein sehr einfaches Beispiel auf Hardware-Ebene wären Bildschirm, Maus und Tastatur. Du kannst in deinen Rechner verschiedene Kabel / Dongles stecken und schon lässt sich ein anderes Gerät verwenden.

Das Konzept der losen Kopplung zieht sich aber noch weiter, durch verschiedene Ebenen. Es braucht an sich nur eine Schnittstelle, damit zwei Programme miteinander kommunizieren können. Dein Internetbrowser beispielsweise erlaubt es dir, Plugins externer Anbieter zu installieren, um ihn funktional weiter aufzurüsten. Webseiten können Skripte einbinden, die dem Browser anweisen, die Darstellung der Seite nochmals nachträglich zu modifizieren, weil es eine Schnittstelle gibt, die diese Kommunikation erlaubt.

Ein sehr einfaches Beispiel auf noch tieferer Ebene (im Programmcode) wäre folgendes:

List<String> list = new ArrayList<String>();
list = new LinkedList<String>();

Es handelt sich hierbei um Java-Code. In der ersten Zeile wird eine Variable angelegt, die einen Schnittstellentyp nutzt (List). Diese Schnittstelle definiert nur grob, welche Funktionalitäten sie von einer Liste erwartet (dass man bspw. Elemente hinzufügen und wieder entfernen kann).

Dieser Variable wird nun ein Objekt vom Typ ArrayList zugewiesen. Dieses Objekt implementiert die erwarteten Funktionen der Schnittstelle, daher klappt das (Stichwort: Polymorphie). Später kann man sich auch noch einmal umentscheiden und ein anderes Objekt eines anderen Typs der Variable zuweisen. Das Objekt muss lediglich die Schnittstelle bedienen. Aufgrund des polymorphen Verhaltens ist also eine lose Kopplung möglich. Würde man eine stärkere Kopplung nutzen:

ArrayList<String> list = new ArrayList<String>();
list = new LinkedList<String>(); // error

wäre das Vorgehen nicht erlaubt. Man wäre nicht so flexibel wie im obigen Beispiel.