Importer:Error:WasEmpty



  • hallo zusammen,
    ich suche nach einer optimalen lösung für ein grundlegendes problem, eine art design pattern. ich programmiere mit c++, da das problem aber allgemeiner natur ist, ist das hier hoffentlich das richtige forum.

    in meinem programm wird ein rechenergebnis auf zwei unterschiedliche arten repräsentiert. ich habe das ergebnisobjekt selber (ERG) intern gespeichert, ein auflistungsobjekt zusammen mit anderen ergebnissen (LIST) und eine grafikobjekt (GRAPH). liste und grafik sind gleichzeitig sichtbar, änderungen an ERG, LIST oder GRAPH sollen sofort an allen drei elementen vollzogen werden. klicke ich z.b. in der liste auf einen button zum löschen des elements LIST, dann sollen ERG und GRAPH ebenfalls gelöscht werden. analog soll dasselbe geschehen, wenn ein rechtsklick auf GRAPH geschieht. alles soll konsistent bleiben.
    wie mache ich das am besten?

    pointer aller drei elemente zueinander möchte ich vermeiden um keinen crash zu provozieren.
    andere idee wäre, jedem der elemente dieselbe id zu verpassen und bei jeder aktion nach den zwei zugehörigen anderen elementen zu suchen. das scheint mir aber auch irgendwie nicht so dolle.
    vielleicht alle drei objektarten zusammen in einem übergeordneten objekt in drei arrays speichern und alle aktionen (z.b. löschen) immer nur auf dem übergeordneten objekt durchführen, das dabei immer alle drei arrays bearbeitet?

    hat jemand eine idee?
    danke!



  • Das liest sich für mich einfach nach dem Observer Pattern, d.h. Änderung der UI-Darstellung, sobald sich interne Modelldaten ändern.

    Wie du intern die Daten organisierst, kommt auf das Design deines Programmes an.
    Wenn die drei Daten (ERG, LIST und GRAPH) immer zusammengehören, dann speichere sie entsprechend. Wenn dagegen LIST und GRAPH nur visuelle Ausprägungen von ERG sind, dann solltest du diese voneinander trennen.



  • danke für die antwort!
    die tatsächliche lösung in meinem fall ist noch komplizierter. observer ist eine gute idee, die ich auch schnell implementieren könnte. allerdings kann es zum kopieren einzelner objekte kommen, was mit observer dann immer komplizierter wird.
    der konkrete fall in meinem programm hat so viele wichtige details, dass ich das hier nicht alles erläutern kann und was auch eine eindeutige optimale lösung unmöglich macht. das habe ich allerdings erst jetzt festgestellt, nachdem ich hier gepostet hatte.

    der thread kann geschlossen werden.
    danke!



  • mael15 schrieb:

    der konkrete fall in meinem programm hat so viele wichtige details, dass ich das hier nicht alles erläutern kann und was auch eine eindeutige optimale lösung unmöglich macht. das habe ich allerdings erst jetzt festgestellt, nachdem ich hier gepostet hatte.

    solche probleme tauchen oft auf, wenn man ein unpassendes design hat. vielleicht liesse sich das was dein programm braucht mit einem grundlegend anderen design besser abbilden, durch das sich die meisten sonderfälle in luft auflösen?

    ich behaupte nicht dass das so sein muss, aber "so viele sonderfälle, optimale lösung unmöglich" klingt sehr verdächtig danach. also vielleicht würde es sich lohnen mal drüber nachzudenken wie man das anders anpacken könnte.



  • MFC?
    Sollte das können.


Anmelden zum Antworten