AGB  ·  Datenschutz  ·  Impressum  







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

Daten in einer Klassenhierachie ablegen

Ein Thema von steewan · begonnen am 27. Okt 2006 · letzter Beitrag vom 2. Nov 2006
Antwort Antwort
Hansa

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

Re: Daten in einer Klassenhierachie ablegen

  Alt 28. Okt 2006, 14:44
Ist der Titel des Themas eventuell gar nicht mehr gültig ? Ich sehe jedenfalls nur eine Aneinanderreihung verschiedener Typen, die nichts miteinander zu tun haben. Da ist nichts zu sehen in Richtung "Klassenhierarchie". Deshalb ist das verwendete override in den Deklarationen auch überflüssig. Glaube zwar nicht, daß das einen bemerkbaren Fehler verursacht, aber es ist trotzdem einer. Dann noch als Beispiel das FAdresse. Wieso wird das überall neu deklariert ? Warum nicht tatsächlich eine Hierarchie, die damit beginnt alles gemeinsame erst mal in eine Basisklasse zu packen und die dann zu vererben. Dabei wird bei den Nachfolgern nur noch das neu deklariert, was auch tatsächlich hinzu kommt. Das gilt nicht nur für Daten, sondern auch für eventuell notwendige neue Methoden.

Ich gehe jetzt mal von dem Auto weg. Geometrische Figuren eignen sich besser. Fangen wir beim Punkt an. Was braucht der ? Eigentlich nur Koordinaten. Na gut er kriegt noch eine Farbe :

Delphi-Quellcode:
TPunkt = class
  x,y : integer;
  Farbe : TColor;
end;
Dann kommt der Kreis. Der hat auch einen Mittelpunkt und eine Farbe. Es kommt hinzu : ein Radius und ich muß ihn zeichnen, also eine durch dem Mittelpunkt und den Radius bestimmte Fläche ausfüllen. Der Punkt hat aber bereits einiges, was man für den Kreis braucht und der sieht deshalb so aus :

Delphi-Quellcode:
TKreis = class (TPunkt)
  Radius : integer;
  protected
     procedure Zeichnen; virtual;
end;
Mehr braucht man nicht, das was in der Deklaration nicht zu sehen ist, das liefert schon der Punkt. Jetzt gehen mir langsam die Ideen aus. Ellipse ist mir zu schwer. Aber wie wäre es noch mit einem berechneten Kreis ? Der soll genauso angezeigt werden, hat auch einen Mittelpunkt und einen Radius. Zusätzlich will ich aber die Fläche und den Umfang wissen:

Delphi-Quellcode:
TBerechneterKreis = class (TKreis)
  Flaeche,
  Umfang : real;
  protected
    procedure BerechneFlaeche; virtual;
    procedure BerechneUmfang; virtual;
end;
Der Rest steckt bereits im Kreis (procedure Zeichnen) oder sogar schon im Punkt (x,y,Farbe). Es kommt eben noch was hinzu. Dann noch ein Quadrat und es stellt sich die Frage, wo man da ansetzen soll. Es hat keinen Radius, sondern sagen wir eine Kantenlaenge. Anders gezeichnet werden muß es auch. Wegen des erwähnten "override" benutze ich aber den Kreis und ignoriere den Radius :

Delphi-Quellcode:
TQuadrat = class (TKreis)
  KantenLaenge : integer;
  protected
     procedure Zeichnen; override;
end;
Da ich vom Kreis her komme, brauche ich ja eine komplett andere Zeichenmethode. Deshalb wird die hier neu deklariert und per override wird die alte vollkommen ignoriert. Bräuchte ich tatsächlich solche Figuren, würde ich wohl nach dem TPunkt eine Weggabelung in der Hierarchie machen. Kreise, Ellipsen usw. und das andere wäre Quadrat, Rechteck, wie heißt noch das schiefe Quadrat ? Da kämen dann auch Winkel ins Spiel usw. So, hoffe mal, daß das hier nicht nur was für Sakura ist.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


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:51 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 by Thomas Breitkreuz