001
14.10.2004, 21:11 Uhr
ao
(Operator)
|
1. Member-Variablen public machen ist meistens der falsche Weg, weil du dann nicht mehr kontrollieren kannst, wer wann welche Daten abholt oder verändert. Mach sie private (oder protected, falls du noch weiter ableiten willst) und definiere öffentliche Zugriffsmethoden, damit hast du die Kontrolle wieder.
2. Deine Beschreibung ist ein bisschen abstrakt, aber normalerweise speichert man Daten in dem Objekt, zu dem sie sinngemäß gehören. Also die Daten der Steuertafel im Steuertafel-Objekt und nirgends sonst. Der "zentralistische" Ansatz (Document weiß alles, alle anderen fragen Document) ist wahrscheinlich falsch; Document muss wahrscheinlich nichts wissen über die Einstellungen von CommandPane. Sollte es dann auch nicht.
3. Document::Serialize ist eigentlich *nur* dafür da, ein Dokument zu laden und nicht, irgendwelche Steuerelemente zu initialisieren. Was ist, wenn die Dokument-Klasse im nächsten Projekt wieder verwendet werden soll? Da gibts dann diese Steuertafel womöglich gar nicht, aber Document verlangt eine, damit Serialize durchläuft - das kann nicht sein. Designfehler. Wer ruft denn Document.Serialize auf? Kann der nicht danach Reset auf dem CommandPane machen?
Außerdem: CCommandPane ist eine Klasse; um Reset aufzurufen brauchst du aber eine Instanz der Klasse:
C++: |
CCommandPane cpPane; cpPane.Reset ();
|
Das ist ein Primitivbeispiel, möglicherweise hantierst du auch mit Referenzen oder Pointern auf CCommandPane.
Allgemein: Ich fürchte, du baust gerade ein wildes Durcheinander aus gegenseitigen Abhängigkeiten. Kann leicht passieren, dass so ein Programm sich nicht wieder runterfahren lässt, weil du es nicht mehr schaffst, die Verflechtungen in der richtigen Reihenfolge zu lösen.
Du hast angefangen zu programmieren ohne klare Vorstellungen von deinem Modell, und jetzt wirds immer komplizierter, stimmts?
Mach als allererstes ein klares Design und lege fest, wer welche Infos hat und wer wie mit wem zusammenarbeitet. Ordne dabei jede Information dem Objekt zu, dem sie natürlicherweise gehört und halte die Anzahl der Kreuz-und-Quer-Verbindungen möglichst klein. |