20 Jahre Erfahrung FreeCall 0800 tutegos

Umgang mit Generalisierung (Dealing with Generalization)

Attribut hochziehen (Pull Up Field)

Zwei Unterklassen besitzen das gleiche Attribut.

Verschiebe das Attribut in die Oberklasse.
[UML]

Weitere Informationen auf Seite 320 in Refactoring.

Methode hochziehen (Pull Up Method)

Es gibt Methoden mit identischen Ergebnissen in den Unterklassen.

Verschiebe sie in die Oberklassen.
[UML]

Weitere Informationen auf Seite 322 in Refactoring.

Konstruktorkörper hochziehen (Pull Up Constructor Body)

Für Konstruktoren in Unterklassen, die größtenteils identisch sind.

Schreibe einen Superklassekonstruktor. Rufe diesen in Unterklasse-Methoden auf.
class Manager extends Employee...
  public Manager (String name, String id, int grade) {
    _name = name;
    _id = id;
    _grade = grade;
  }

  public Manager (String name, String id, int grade) {
    super (name, id);
    _grade = grade;
  }

Weitere Informationen auf Seite 325 in Refactoring.

Methode nach unten verlegen (Push Down Method)

Verhalten einer Oberklasse ist nur relevant für einige Unterklassen.

Verschiebe die Methode in diese Unterklassen.

[UML]

Für weiter Informationen siehe Seite 328 von Refactoring.

Attribut nach unten verlegen (Push Down Field)

Ein Attribut wird nur von einigen Unterklassen verwendet.

Verschiebe das Attribut in die Unterklassen.

[UML]

Mehr Informationen auf Seite 329 von Refactoring.

Extrahiere Unterklasse (Extract Subclass)

Eine Klasse hat Eigenschaften, die nur von einigen Exemplaren verwendet wird.

Erzeuge für die Untermenge an Eigenschaften eine Unterklasse.

[UML]

Mehr Informationen auf Seite 330 in Refactoring.

Extrahiere Oberklasse (Extract Superclass)

Es gibt zwei Klassen mit gemeinsamen Eigenschaften.

Erzeuge eine neue Oberklasse und lege die gemeinsamen Eigenschaften in diese neue Klasse.

[UML]

Für mehr Informationen siehe Seite 336 von Refactoring.

Extrahiere Schnittstelle (Extract Interface)

Unterschiedliche Klienten nutzen die gleiche Untermenge einer Schnittstelle der Klasse. Zwei Klassen haben zum Teil gleiche Schnittstellen.

Mache aus der Teilmenge eine eigene Schnittstelle.

[UML]

Für mehr Informationen siehe Seite 341 von Refactoring.

Hierarchien abbauen (Collapse Hierarchy)

Eine Unterklasse und Oberklasse sind sich nicht sehr verschieden.

Bringe sie zusammen.

[UML]

Für mehr Informationen siehe Seite 344 von Refactoring.

Schreibe eine Schablonenmethode (Form Template Method)

Zwei Methoden in Unterklassen führen ähnliche Schritte in gleicher Reihenfolge aus, doch die Schritte sind im Detail anders.

Fasse die jeweiligen Schritte zu Methoden mit gleicher Signatur zusammen.

[UML]

Für weitere Informationen siehe Seite 345 in Refactoring.

Ersetzte Vererbung durch Delegation (Replace Inheritance with Delegation)

Eine Unterklasse nutzt nur Teile der Schnittstelle der Oberklasse oder will keine Eigenschaften erben.

Erzeuge ein Attribut für die Oberklasse und passe die Methoden an, do dass sie auf die Methoden der Oberklasse delegieren. Entferne die Unterklasse.

[UML]

Für mehr Informationen siehe Seite 352 in Refactoring.

Ersetzte Delegation durch Vererbung (Replace Delegation with Inheritance)

Methoden einer Klasse delegieren fast immer an eine andere Klasse.

Der Delegate wird zur Oberklasse.

[UML]

Weiteres auf Seite 355 in Refactoring.