Kopplung vs. Kohäsion
Kopplung und Kohäsion sind zwei Konzepte, die man in Java (und allen anderen objektorientierten Sprachen) findet. Die Kopplung misst, wie sehr jedes der Programmmodule von den anderen Programmmodulen abhängig ist. Kohäsion misst, wie stark jede der Funktionen innerhalb eines Moduls miteinander verbunden ist. Tatsächlich hat jede objektorientierte Sprache (einschließlich Java) die beiden Hauptziele, die Kohäsion zu erhöhen und gleichzeitig die Kopplung zu verringern, um die effizientesten Programme zu entwickeln. Diese beiden Software-Engineering-Metriken wurden von Larry Constantine entwickelt, um die Kosten für die Änderung und Wartung 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 hoch kohärenten Programmen. Wenn eine bestimmte Klasse eine Reihe von eng verwandten Funktionen ausführt, wird diese Klasse als kohäsiv bezeichnet. Wenn andererseits eine Klasse eine Reihe von völlig unabhängigen Funktionen ausführt, bedeutet dies, dass die Klasse überhaupt nicht zusammenhängend ist. Es ist wichtig zu verstehen, dass fehlende Kohärenz nicht bedeutet, dass die gesamte Anwendung nicht die erforderliche Funktionalität hat. Es ist nur so, dass es ohne Kohäsion sehr schwierig sein wird, die Funktionalität zu verw alten, da sie an vielen falschen Stellen verstreut sein werden, wenn die Komplexität der Anwendung im Laufe der Zeit zunimmt. Das Pflegen, Ändern und Erweitern von Verh altensweisen, die über den gesamten Code verstreut sind, ist selbst für die erfahrensten Programmierer sehr mühsam.
Was ist Kopplung?
Kopplung misst, wie stark jedes der Programmmodule von den anderen Programmmodulen abhängig ist. Wechselwirkungen zwischen zwei Objekten treten auf, weil es eine Kopplung gibt. Lose gekoppelte Programme zeichnen sich durch hohe Flexibilität und Erweiterbarkeit aus. Eine starke Kopplung ist nie 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 an mehreren Stellen des Codes arbeiten müssen, selbst für eine einzige Verh altensänderung. Eine starke Kopplung führt immer zu Programmen mit geringer Flexibilität und geringerer Skalierbarkeit/Erweiterbarkeit. In Programmiersprachen wie Java ist es jedoch unmöglich, die Kopplung vollständig zu vermeiden. Es wird jedoch empfohlen, dass die Programmierer sich nach besten Kräften bemühen, die Kopplung so weit wie möglich zu reduzieren. Es ist auch möglich, eine gewisse Kopplung zu haben, damit Objekte miteinander interagieren können, ohne die Skalierbarkeit und Flexibilität zu beeinträchtigen.
Was ist der Unterschied zwischen Kopplung und Kohäsion?
Auch wenn es bei Kopplung und Kohäsion um die Qualität eines Moduls im Software Engineering geht, handelt es sich um völlig unterschiedliche Konzepte. Kohäsion spricht darüber, wie sehr die Funktionalität innerhalb des Moduls miteinander verbunden ist, während Kopplung sich damit befasst, wie sehr ein Modul von den anderen Programmmodulen innerhalb der gesamten Anwendung abhängig ist. Um Software von bester Qualität zu haben, sollten Kohäsion und Kopplung die beiden entgegengesetzten Enden ihres Spektrums erreichen. Mit anderen Worten: Lose Kopplung und starke Kohäsion liefern die beste Software. Das Vorhandensein von privaten Feldern, nicht öffentlichen Klassen und privaten Methoden bietet eine lose Kopplung, während alle Mitglieder innerhalb der Klasse sichtbar gemacht werden und das Paket als Standardsichtbarkeit eine hohe Kohäsion bietet.