AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zum Thema OOP

Ein Thema von Net7 · begonnen am 1. Nov 2005 · letzter Beitrag vom 3. Nov 2005
 
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, 12: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz