Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: OOP Problem: änderungen werden nicht übernommen

  Alt 25. Dez 2005, 14:43
Zitat von mimi:
1: Eigenschafen:
Ich möchte gerne das bei jede änderung eine eigenschft die procedure Draw danach ausgeführt wird. Muss ich das denn so "aufwendig" schreiben wie ich das mit namen und Caption gemacht habe, oder kann ich das auch etwas kürtzer schreiben.
Ja, du solltest es genau so machen, wie du es für Caption und Namen gemacht hast. Es ist durchaus sinnvoll das so zu tun, da du unter gewissen Umständen (Die Komponente wird noch viel größer) vielleicht spezielle Parameter übergeben möchtest, nur partiell zeichnet, gar nicht zeichnest (nicht sichtbare Eigenschaften...).

Zitat von mimi:
2: Strucktur:
Ist die strucktur bis jetzt sinvoller als die "alte" ?
Das definitiv. Aber es gibt immer noch ein paar Dinge die ich bemängeln würde. Als erstes mal die Properties, du benutzt jetzt schon richtig Properties und hast auch setter für diese geschrieben, vielleicht solltest du diese auch verwenden!

In den Aufruf des Konstruktors sollte unbedingt immer als erstes ein Aufruf des Vorgänger Konstruktors (analog beim Destruktor).
Und dein Destruktor sollte Destroy heißen (und ein override bekommen). Free solltest du nicht überschreiben, da Free nicht mehr macht als zu schauen ob die Instanz noch existiert (Referenz <> nil) und dann Destroy aufruft.

Wenn dies die Basisklasse ist, von denen andere Objekte abgeleitet werden sollen, dann solltest du zudem darüber nachdenken, die setter lieber protected zu deklarieren (selbes würde ich mit draw machen). Für Draw wäre dann noch interessant wohin du zeichnen lassen möchtest. Ach ja, einige Methoden (hier natürlich nur draw) solltest du in der Basisklasse einfach mal abstract lassen. Ich weiß nicht ob du in deinem Tut auch schon was über Interfaces und abstrakte Klassen gelesen hast, aber die sind in der OOP von hoher Bedeutung, da du mit ihnen sehr viel sehr elegant lösen kannst.

Wie gesagt, dein Ansatz ist schon deutlich besser als der erste, aber ich denke du wirst noch viel lernen (während der Entwicklung). Wichtig ist es halt, möglichst gut vorbereitet zu starten, Fehler vermeiden kostet immer viel viel weniger als welche Nachträglich zu beseitigen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat