Thema: Delphi OOP Frage bei Spiel

Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#10

Re: OOP Frage bei Spiel

  Alt 18. Okt 2004, 11:04
Zitat von DeerHunter:
Ich versuche gerade mich ein wenig in OOP zu üben
Hallo DeerHunter,

wenn Du Dich wirklich in OOP üben willst, solltest Du vor allem versuchen, ohne Unterscheidungen der Typen Deine Funktionalität abzubilden. Also keine Kunstrukte der Art:
Delphi-Quellcode:
case myObject.ClassType of
  TMyClass1: DoSth;
  TMyClass2: DoSthElse;
  ...
zu verwenden (zumal dies in Delphi ohnehin nicht ohne weiteres mit einem case möglich ist), sondern Delegation und Vererbung ausnutzen.
Möchtest Du bspw. einen unterschiedlichen Text in Abhängigkeit der Klasse ausgeben, könnte eine Lösung so aussehen:
Delphi-Quellcode:
type
  TMyBaseClass = class
  public
    function GetText: string; virtual; abstract;
  end;
  
  TMyClassA = class(TMyBaseClass)
  public
    function GetText: string; override;
  end;
  
  TMyClassB = class(TMyBaseClass)
  public
    function GetText: string; override;
  end;
Deine Liste erwartet dann lediglich Exemplar der Klasse TMyBaseClass und führt die Operation GetText aus.

Verfolgt man diesen Ansatz konsequent (zB für das Zeichnen, Laden, Speichern, Bewegen, etc.), kann der Klient (der Programmteil, der mit heterogenen Klassen arbeitet) zwar von der konkreten Klasse abstrahieren, jedoch überfrachtest Du entweder Deine Klassen mit zu vielen Methoden und schaffst eine Art "ich kann alles"-Klasse, die wohl schwer zu beherrschen sein wird (typisch für Delphi-Programme ) , oder Du machst Dich zu sehr von einer strikten Vererbungslinie abhängig.

Wenn Du an diesem Punkt angekommen sein solltest, lohnt sich ggf ein Blick in die Menge von Entwurfsmustern (hier: Besuchermuster/Visitor Pattern) oder der Einsatz von Interfaces.

Viel Erfolg!
gruß, choose
  Mit Zitat antworten Zitat