Informatik > Lexikon

Kohäsion

Unter Kohäsion versteht man in der Informatik die Qualität, mit der eine Methode oder eine Klasse die ihr zugeordnete Aufgabe ausführt.

Kohäsion von Methoden

Allgemein gilt für das Entwerfen einer Methode, dass sie nur die ihr zugeordnete Aufgabe erledigen und keine "Nebendinge" betreiben soll. Dieses Prinzip wird auch als Kohäsion von Methoden bezeichnet. Eine Methode wie setColor sollte nur die Farbe eines Objektes verändern und nicht gleichzeitig den Durchmesser oder eine andere Eigenschaft.

Hier ein Beispiel aus dem Unterricht, das keine gute Kohäsion zeigt:

public double idealgewicht()
{
   double ideal = (groesse-100)*0.9;
   System.out.println("Ihr Idealgewicht beträgt "+ideal+"kg.");
   return ideal;
}

Warum zeigt diese Methode keine hohe Kohäsion? Die Aufgabe der sondierenden Methode idealgewicht ist es, das Idealgewicht einer Person zu berechnen und an die aufrufende Methode zurückzuliefern. Die hier abgebildete Methode idealgewicht gibt jedoch zusätzlich das berechnete Idealgewicht in der Konsole als Meldung aus. Solche Meldungen gehören aber eigentlich nicht in die Methode idealgewicht hinein, dafür hat man normalerweise eigene Methoden wie anzeigen, ausgeben oder paint.

Ein weiteres Beispiel aus der Unterrichtspraxis:

public void ausgeben()
{
   double ideal = (groesse-100)*0.9;
   System.out.println("Sie wiegen "+gewicht+" kg.");
   System.out.println("Ihr Idealgewicht beträgt "+ideal+"kg.");
}

Hier liegt der umgekehrte Fall vor. Die Methode ausgeben soll eigentlich nur Meldungen ausgeben, aber keine Berechnungen anstellen. Die Berechnung des Idealgewichts gehört in eine eigene Methode.

Quelltexte von Klassen sind übersichtlicher, leichter zu verstehen und leichter zu warten, wenn die Methoden möglichst kurz sind und wirklich nur das machen, was ihre eigentliche Aufgabe ist. Umgekehrt sollte eine Klasse nicht zu viele Methoden besitzen, weil dann wiederum die Klasse selbst unübersichtlich wird. Hier gilt es also, ein möglichst optimales Gleichgewicht zu finden zwischen einer nicht zu großen Anzahl von Methoden und Methoden, die nicht allzu lang sind.

In den frühen Tagen der Programmierung, als man noch Röhrenmonitore hatten, die 16 Zeilen Text mit je 64 bis 80 Zeichen Länge darstellen konnten, gab es eine Regel für die Länge von Methoden (damals hießen Methoden allerdings noch "Funktionen" oder "Prozeduren"): Eine Methode sollte nur so viele Zeilen haben, dass sie komplett auf einen Bildschirm passt. Der Vorteil war klar: Beim Studium einer solchen Methode musste man nicht dauernd nach unten oder nach oben scrollen.

Kohäsion von Klassen

Auch für Klassen gilt das Qualitätsmerkmal der Kohäsion. Eine Klasse sollte nur für die Aufgaben zuständig sein, die typisch für die Klasse sind, und sonst nichts machen. Wenn beispielsweise eine Klasse Auto eine Klasse Motor besitzt, dann sollte die Klasse Motor sich wirklich nur um die Aufgaben eines Motors kümmern, und nicht zum Beispiel auch noch die Außentemperatur messen und anzeigen. Diese Aufgabe könnte gut von einer anderen Klasse erledigt werden, die dann auch wieder nichts anderes macht.

Interne Links: