Kopplung vs. Zusammenhalt
Kopplung und Kohäsion sind zwei Konzepte, die in Java (und allen anderen objektorientierten Sprachen) zu finden sind. Die Kopplung misst, wie stark die einzelnen Programmmodule von den anderen Programmmodulen abhängig sind. Kohäsion misst, wie stark die einzelnen Funktionen innerhalb eines Moduls zusammenhängen. Tatsächlich hat jede objektorientierte Sprache (einschließlich Java) die zwei Hauptziele, die Kohäsivität zu erhöhen und gleichzeitig die Kopplung zu verringern, um möglichst effiziente Programme zu entwickeln. Diese beiden Metriken zur Softwareentwicklung wurden von Larry Constantine entwickelt, um die Kosten für das Ändern und Warten von Software zu reduzieren.
Was ist Kohäsion??
Kohäsion misst, wie stark die einzelnen Funktionen innerhalb eines Programmmoduls zusammenhängen. Gut strukturierte Klassen führen zu stark zusammenhängenden Programmen. Wenn eine bestimmte Klasse eine Reihe von stark verwandten Funktionen ausführt, wird diese Klasse als zusammenhängend bezeichnet. Wenn eine Klasse jedoch eine Reihe völlig unabhängiger Funktionen ausführt, bedeutet dies, dass die Klasse überhaupt nicht zusammenhängend ist. Es ist wichtig zu verstehen, dass das Fehlen einer Kohäsion nicht bedeutet, dass die gesamte Anwendung nicht die erforderliche Funktionalität aufweist. Es ist nur so, dass es ohne Kohäsion sehr schwierig sein wird, die Funktionalität zu verwalten, da sie an vielen falschen Stellen verstreut werden, wenn die Komplexität der Anwendung mit der Zeit zunimmt. Das Beibehalten, Ändern und Erweitern von über den gesamten Code verteiltem Verhalten ist selbst für die meisten Programmierer sehr langwierig.
Was ist Kopplung??
Die Kopplung misst, wie stark die einzelnen Programmmodule von den anderen Programmmodulen abhängig sind. Wechselwirkungen zwischen zwei Objekten treten auf, weil es eine Kopplung gibt. Locker gekoppelte Programme sind sehr flexibel und erweiterbar. Eine starke Kopplung ist niemals gut, da ein Objekt stark von einem anderen Objekt abhängig sein kann. Dies ist ein Albtraum, wenn der Code geändert wird, da eine hohe Kopplung bedeutet, dass die Programmierer selbst an einer einzigen Verhaltensänderung an verschiedenen Stellen des Codes arbeiten müssen. Starke Kopplung führt immer zu Programmen mit geringer Flexibilität und geringer Skalierbarkeit / Erweiterbarkeit. In Programmiersprachen wie Java ist eine vollständige Kopplung jedoch nicht möglich. Es wird jedoch empfohlen, dass die Programmierer sich bemühen, die Kopplung so weit wie möglich zu reduzieren. Es ist auch möglich, über eine Kopplung zu verfügen, die die Interaktion von Objekten unterstützt, ohne deren Skalierbarkeit und Flexibilität zu beeinträchtigen.
Was ist der Unterschied zwischen Kopplung und Kohäsion??
Obwohl Kopplung und Kohäsion die Qualität eines Moduls im Software-Engineering betreffen, handelt es sich dabei um völlig unterschiedliche Konzepte. Cohesion spricht darüber, wie sehr die Funktionalität innerhalb des Moduls in Beziehung steht, während die Kopplung davon abhängt, wie stark ein Modul von den anderen Programmmodulen in der gesamten Anwendung abhängig ist. Um die beste Software zu erhalten, sollten Kohäsion und Kopplung die beiden gegenüberliegenden Enden ihres Spektrums erreichen. Mit anderen Worten, lockere Kopplung und starke Kohäsion bieten die beste Software. Mit privaten Feldern, nicht öffentlichen Klassen und privaten Methoden ist eine lose Kopplung möglich, wobei alle Mitglieder innerhalb der Klasse sichtbar gemacht werden und Paket als Standardsichtbarkeit für hohe Kohäsion sorgt.