Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Frage zum Thema OOP

  Alt 1. Nov 2005, 13:48
Zitat von Net7:
...Man kann doch nicht alles berücksichtigen.
Ich glaube, das Prinzip ist doch nicht so klar, wie Du denkst. 8) Es gibt ja so schöne Beispiele wie Fahrrad und LKW. Ich verwende mal lieber ein Delphi-Beispiel : TEdit. Ich will jetzt eines, das nur Zahlen aufnimmt. Das TEdit an sich braucht darüber aber überhaupt nichts zu wissen. Ich leite es aber davon ab, indem ich ihm eine neue OnKeyPress Eigenschaft verpasse :

Delphi-Quellcode:
  TIntEdit = class(TEdit)
  protected
    procedure KeyPress(var Key: Char); override;
  end;
Das override sagt, daß die ursprüngliche Methode durch die neu definierte ersetzt wird. Das ganze ist im protected Teil, weil ich es eventuell später weiter ableiten will. Die konkrete Prozedur sieht nun so aus :

Delphi-Quellcode:
procedure TIntEdit.KeyPress(var Key: Char);
begin
  inherited KeyPress(Key);
  if not (Key in ['0'..'9']) then
    key := #0;
end;
Durch das inherited wird sichergestellt, daß alle dem TEdit bekannten Methoden auch dem neuen TIntEdit bekannt sind. Die Planung spielt hierbei nur eine untergeordnete Rolle. Was ist, wenn einem später bewußt wird, daß es auch Gleitkommazahlen gibt ?

Buchstaben sollen so oder so nicht zugelassen werden, wohl aber ein DecimalSeparator. Also geht man vom TIntEdit aus und ändert das ab :

Delphi-Quellcode:
TRealEdit = class(TIntEdit)

procedure TRealEdit.KeyPress(var Key: Char);
begin
  inherited KeyPress(Key); // nur 0..9 werden zugelassen, sonst :
  if (Key <> DecimalSeparator]) then // hier auch noch , oder . zulassen
    key := #0;
end;
Sehr beliebt ist es allerdings auch, solche Konstrukte direkt von TControl abzuleiten, was bedeutet, das Rad komplett neu zu erfinden. Wer so was macht, der hat OOP einfach nicht verstanden. Denn das Geheimnis liegt lediglich darin, den am besten geeigneten Basistyp als Grundlage zu nehmen.
Gruß
Hansa
  Mit Zitat antworten Zitat