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.

Zuletzt bearbeitet: 21. Oktober 2022

Autor

Kommentare

Schreibe eine Antwort oder einen Kommentar

Deine EMail-Adresse wird nicht veröffentlicht.