Designfrage bzgl. Laden/Speichern



  • Hi,

    nehmen wir man an, man hat mehrere Instanzen von Objekten angelegt, die alle die gleiche Basisklasse haben. Nun will man seine Projekte in einem Programm auch in einem Textfile/XML o.ä. speichern und wieder laden. Bisher habe ich es immer so gemacht, dass ich mir einen Marker (int String oder was auch immer), der die Klasse repräsentiert ausgedacht und dann immer erst diesen ausgelesen habe, dann das entsprechende Objekt erstellt und es sich serialisieren lassen. Nun finde ich das sehr umständlich und unsicher und wollte fragen, ob es in der Hinsicht einige designtechnische Raffinessen (oder gar komplette Libs etc.) gibt, die ihr mir verraten wollt. Bin auch mit Links zufrieden (habe zwar gegoogled, aber speziell zu dieser Thematik in C++ nicht viel gefunden) 😉 .

    Mfg



  • So weit ich weis ist es gang und gebe es genau so zu realisieren wie du es eben beschrieben hast. Auch wenn man sich die Implementation der .serialize() Methoden von CSharp / .NET ansieht findet man ähnliche Konstrukte.

    Ich selbst habe es in dem Projekt an dem ich momentan arbeite ebenso realsiert wie du es beschrieben hast.

    Ich bin jedoch offen für jegliche Vorschläge neuer oder anderer Methoden zum serialisieren von Objekten.

    Lg,
    STi



  • Da muss es doch was besseres geben. So viele kluge Köpfe haben für alle möglichen Lebenslagen irgendwas geschaffen (siehe boost, blitz++ etc.). dafür etwa nicht?



  • Überleg mal was du ganz unabhängig von C++ willst. Du willst ein Array von unterschiedlichen Elementen von denen du nicht weißt wie sie aussehen noch wie lang sie sind in eine Datei schreiben. Das geht ohne weiteres. Nun willst du die Datei wieder auslesen. Was weißt über die Stuktur von der Datei die du sie ausliest : Sie enthält Daten. Diese Daten formen Objekte. Es gibt eine unterschiedliche Anzahl von Objekten und wieviel Daten für ein Objekt von nöten sind ist auch noch variabel. Kurz gesagt du weist nichts also ist das rein teschnisch nicht machbar.

    Den besten Weg so etwas zu realisiren hast du bereits gepostet. Du kannst nur noch ein paar Tricks benutzen die dir das leben leichter machen. Google mal nach Factory, damit kannst du weite Teile verallgemeinern und wiederverwerten. Um eine ID vergabe wirst du denoch nicht umher kommen.



  • Darum geht es mir nicht. Mir ist klar, dass ich irgendwo einen Marker und eine Factory brauche. Meine Frage war, ob es das Ganze auch in irgendeiner Lib halbwegs automatisiert gibt.


Anmelden zum Antworten