Überlegungen zum Klassenhierarchieentwurf für Erweiterungen

Aktualisiert: November 2007

Selbst gut entworfene Klassenhierarchien müssen sich über die Zeit weiterentwickeln. Die richtige Wahl im frühen Entwurfsstadium einer Klassenhierarchie kann die spätere Entwicklung vereinfachen.

Erweitern von Klassenhierarchien

Die folgende Liste enthält Vorschläge für eine leichtere Erweiterung der Klassenhierarchien:

  • Klassenhierarchien werden vom Allgemeinen zum Speziellen entwickelt. Definieren Sie Klassen auf jeder Ebene einer Vererbungshierarchie so allgemein wie möglich. Abgeleitete Klassen erben Methoden von Basisklassen und können diese wiederverwenden und erweitern.

    Angenommen, Sie entwerfen eine Klassenhierarchie, die Computerhardware gestaltet. Wenn Sie mit der Gestaltung von Ausgabegeräten beginnen, könnten Sie Klassen wie Display, Printer und File (Bildschirm, Drucker und Datei) definieren. Definieren Sie dann die Klassen, die die in den Basisklassen definierten Methoden implementieren. So könnte die LCDDisplay-Klasse beispielsweise von der Display-Klasse abgeleitet werden und eine Methode mit dem Namen EnterPowerSaveMode implementieren.

  • Seien Sie beim Definieren von Datentypen und Speicher großzügig, um später komplizierte Änderungen zu vermeiden. Entscheiden Sie sich z. B. für eine Variable vom Typ Long, obwohl die aktuellen Daten nur die Standardvariable vom Typ Integer benötigen.

  • Stellen Sie nur Elemente zur Verfügung, die von abgeleiteten Klassen benötigt werden. Private-Felder und -Methoden reduzieren Namenskonflikte und verhindern, dass andere Benutzer Elemente verwenden, die Sie später möglicherweise ändern müssen.

  • Member, die nur von abgeleiteten Klassen benötigt werden, sollten als Protected gekennzeichnet sein. Damit wird sichergestellt, dass nur die abgeleiteten Klassen von diesen Membern abhängen. Außerdem können diese Member während der Entwicklung leichter aktualisiert werden.

  • Stellen Sie sicher, dass die Basisklassenmethoden nicht von Overridable-Membern abhängen, deren Funktion von erbenden Klassen geändert werden kann.

Siehe auch

Konzepte

Überlegungen für die Auswahl von Zugriffsebenen für Methoden

Basisklassen-Entwurfsänderung nach der Bereitstellung

Referenz

MustInherit

MustOverride