Lernziele
Zentrale Konzepte in diesem Kapitel: Entwurf nach Zuständigkeiten, Kohäsion, Kopplung, Refactoring
Java-Konstrukte in diesem Kapitel: Aufzählungstypen switch
Notes: Ein guter Klassenentwurf kann kurzfristig mehr Aufwand bedeuten als ein schlechter, aber auf lange Sicht zahlt sich dieser Mehraufwand fast immer aus.
8.1 Koppelung und Kohäsion
Konzept
Der Begriff Koppelung beschreibt den Grad der Abhängigkeiten zwischen Klassen. Wir streben für ein System eine möglichst lose Koppelung an… also ein System, in dem jede Klasse weitgehend unabhängig ist und mit anderen Klassen nur über möglichst schmale, wohldefinierte Schnittstellen kommuniziert.
Konzept
Der Begriff Kohäsion beschreibt, wie gut eine Programmeinheit eine logische Aufgabe oder Einheit abbildet. In einem System mit hoher Kohäsion ist jede Programmeinheit ( eine Methode, eine Klasse oder ein Modul) verantwortlich für genau eine wohldefinierte Aufgabe oder Einheit. Ein guter Klassenentwurf weist einen hohen Grad an Kohäsion
8.2 Code-Duplizierung
Konzept
Code-Duplizierung ( ein Quelltextabschnitt erscheint mehr als einmal in einer Anwendung) ist ein Indiz für einen schlechten Entwurf. Sie sollte vermieden werden
Notes: Das Problem mit Code-Duplizierung ist, dass Änderungen an der einen Stelle immer auch an der anderen durchgeführt werden müssen, damit keine Inkonsistent entstehen. Dies erhöht den Aufwand für einen Wartungsprogrammierer und die Gefahr von Fehlern.
Code-Duplizierung ist ein Zeichen für schlechte Kohäsion.
8.3 Kapselung
Konzept
Saubere Kapselung reduziert die Koppelung und führt deshalb zu besseren Entwürfen
Die Richtlinien für Kapselung (Informationen über die Implementierung verbergen) besagt, dass nur Informationen über das WAS einer Klasse (Was sie leistet) nach aussen sichtbar sein sollten.
8.4 Entwurf nach Zuständigkeiten (Responsibility-Driven-Design)
Konzept
Entwurf nach Zuständigkeiten ist ein Entwurfsprozess, bei dem jeder Klasse eine klare Verantwortung zugewiesen wird. Dieser Prozess kann benutzt werden, um festzulegen, welche Klasse für welche Funktionen in einer Anwendung zuständig sein soll.
Note: The java.util.HashMap.keySet() method in Java is used to create a set out of the key elements contained in the hash map.
8.5 Änderung lokal halten
Konzept
Eines der Hauptziele eines guten Klassenentwurfs lautet, Änderungen lokal halten: eine Änderung an einer Klasse sollte einen möglich geringen Einfluss auf andere Klassen haben.
8.6 Kohäsion
Konzept
Kohäsion von Methoden: Eine Methode mit hoher Kohäsion ist verantwortlich für genau eine wohldefinierte Aufgabe
Das Prinzip der Kohäsion kann auf Klassen und auf Methoden angewendet werden
Konzept
Kohäsion von Klasse: Eine Klasse mit hoher Kohäsion repräsentiert genau eine wohldefinierte Einheit
Hohe Kohäsion verbessert einen Entwurf in vielerlei Hinsicht. Die beiden wichtigsten Aspekte sind Lesbarkeit und Wiederverwendung.
8.7 Refactoring
Konzept
Refactoring ist eine Aktivität, bei der ein bestehender Entwurf (Klassen und Methoden) restrukturiert wird, um die Qualität des Klassenentwurfs in Hinsicht auf vorzunehmende Änderungen und Erweiterungen zu erhalten.
8.8 Code-Anweisung
public enum Befehlswort{
GO,QUIT, HELP, UNKNOWN;
}
switch(befehlswort){
case UKNOWN:
//toDO
break;
case HELP:
//toDO
break;
case GO:
//toDO
break;
}
8.9 Zusammenfassung der Konzepte
Koppelung – Der Begriff Koppelung beschreibt den Grad der Abhängigkeiten zwischen Klassen. Wir streben für ein System eine möglichst lose Koppelung an… also ein System, in dem jede Klasse weitgehend unabhängig ist und mit anderen Klassen nur über möglichst schmale, wohldefinierte Schnittstellen kommuniziert.
Kohäsion – Der Begriff Kohäsion beschreibt, wie gut eine Programmeinheit eine logische Aufgabe oder Einheit abbildet. In einem System mit hoher Kohäsion ist jede Programmeinheit ( eine Methode, eine Klasse oder ein Modul) verantwortlich für genau eine wohldefinierte Aufgabe oder Einheit. Ein guter Klassenentwurf weist einen hohen Grad an Kohäsion
Code-Duplizierung – Code-Duplizierung ( ein Quelltextabschnitt erscheint mehr als einmal in einer Anwendung) ist ein Indiz für einen schlechten Entwurf. Sie sollte vermieden werden
Kapselung – Saubere Kapselung reduziert die Koppelung und führt deshalb zu besseren Entwürfen
Entwurf nach Zuständigkeiten: ist ein Entwurfsprozess, bei dem jeder Klasse eine klare Verantwortung zugewiesen wird. Dieser Prozess kann benutzt werden, um festzulegen, welche Klasse für welche Funktionen in einer Anwendung zuständig sein soll.
Änderungen lokal halten – Eines der Hauptziele eines guten Klassenentwurfs lautet, Änderungen lokal halten: eine Änderung an einer Klasse sollte einen möglich geringen Einfluss auf andere Klassen haben.
Kohäsion von Methoden: Eine Methode mit hoher Kohäsion ist verantwortlich für genau eine wohldefinierte Aufgabe
Kohäsion von Klasse: Eine Klasse mit hoher Kohäsion repräsentiert genau eine wohldefinierte Einheit
Refactoring ist eine Aktivität, bei der ein bestehender Entwurf (Klassen und Methoden) restrukturiert wird, um die Qualität des Klassenentwurfs in Hinsicht auf vorzunehmende Änderungen und Erweiterungen zu erhalten.
Eine switch-Anweisung wählt aus verschiedenen möglichen Anweisungsfolgen eine Folge zur Ausführung.
Kommentare