Wie Projekt richtig designen (welche Klassen, welche Patterns etc...?)



  • Hallo,

    ich muss ein Programm schreiben, welches VDA - Dateien ausließt, und die darin enthaltenen Daten benutzerfreundlich anzeigt!
    Beispiel einer Datei

    51212314500060707100308000200
    

    Aufschlüsselung

    ---------------------
    ersten 3 Bits (512) steht für Satzart
    nächsten 2 (12) für Versionsnummer
    nächsten 3(314) für Branchenschlüssel
    nächsten 3(500) für Lieferabruf
    nächsten 6(060707) für Startdatum
    nächsten 6(100308) für Enddatum
    letzten 6(000200) für Menge
    

    diese Daten sollen in entsprechenden Textboxen(Editfeldern) angezeigt werden!

    es gibt mehrere Satzartzen (512,513,514 etc), für jede Satzart soll ein Tabblatt auf einem Pagecontrol eingesetzt werden
    Ein Block beginnt immer bei 512, es kann in einer Datei mehrer Blöcke geben (dafür würde es dann Pfeiltasten zum vor und zurückspringen geben)

    meine Frage ist nicht, wie ich das schreiben soll, sondern wie ich designmäßig rangehen soll?!
    Welche Klassen sollte es geben?Wie kommunizieren diese?Dabei fehlt mir der einstieg (könnte das programm auch ohne klassen schreiben, aber
    ich möchte es richtig oop-mäßig machen!

    Weiterhin soll das Programm die Datei direkt anzeigen können, und bei auswahl einer bestimmten Satzart und Schlüssel direkt auf die richtige Bitfolge springen (und diese
    markieren)
    Hier könnte man ja vielleicht die möglicherweise in Klassen gespeicherten Daten wieder nutzen?

    Wie würdet ihr vom design des codes rangehen?
    Könnt ihr mir da tipps geben?

    Ich bedanke mich schon mal ganz sehr bei euch!



  • Ich würde dir erstmal ein Document-View-Framework empfehlen. Dein Dokument ist die Datei. Das Dokument kann diese Datei laden und parsen. Dann gibt es mehrere verschiedene View-Klassen, die die Daten des Dokumentes darstellen. Die eine View-Klasse erstellt zB ein Fenster mit lauter Tabpages wo die Sätez drin sind, und ein anderer View zeigt die Datei in Reinform an.

    So könnte es erstmal grob modelliert werden. zum Document-View-Framework gibt es auch viel im internet. Natürlich muss das Dokument nicht alles in einer Klasse lösen, du könntest zB eine Klasse Satz bieten, die genau einen Satz in der Datei repräsentiert usw.



  • Ich hab das so verstanden dass es

    - mehrere aber beschränkt viele Satzarten gibt
    - diese also zur Entwicklungszeit feststehen
    - diese Satzarten sich in ihrer Struktur dann aber wesentlich unterscheiden

    Ist das richtig?

    Wenn ja, sehe ich in meiner Glaskugel mitten im Blauen Dunst ein "Metaklassen"-Topos das mit generischen Mitteln realisiert wird:

    - Ein Template mit der Satzstruktur als generischem Parameter das die Klassensignatur (static) der Satz-Klassen festlegt. Diese Signatur könnte z.B. En/Decoder beinhalten:

    template<typename T>
    class MyTemplate 
    { };
    

    - Ableitungen von Template-Instanzen

    class C512_Adapter : public MyTemplate<S512_Struct> ;
    

    Ferner ein Singleton "DataHolder" das für jede der Adapterklassen Zugriff auf eine Classfactory bereitstellt die ihre jeweiligen Instanzen verwaltet.
    Dies Singleton wird von den Widgets als Zentraler Zugriffspunkt für die Daten genutzt.

    Aber wie gesagt; das alles sehe ich z.Zt. nur im Blauen Dunst meiner Glaskugel.
    🙂 Für einen genaueren Entwurf ist das noch zu früh.

    Btw. Klar ist hingegen wie die Klassen kommunizieren; nämlich mittels Botschaften. Beim GUI-Design ist der Begriff besonders wichtig.

    Jezt schaff mal ein paar "fachliche" Klassen; also Klassen die die Daten und den Prozess modellieren; welche Klassen in die Implementierungen eingehen und wie dies erfolgt können wir uns dann später überlegen.

    Grüsse

    *this



  • Ja, es gibt mehrere, zur entwurfszeit bekannte Satzarten (insgesamt 7)
    Die Satzarten untereinander sind verschieden, allerdings nicht stark (Satzart 512 hat alle 128Bit in 5 Segmente geteilt, Satzart 513 in 8 Segmente)
    Jede Satzart beinhaltet allerdings inhaltlich unterschiedliche dinge!

    Das konzept mit den adaptern ist mir nicht ganz klar, kannst du mir das vielleicht etwas genauer erklären? Nen kleines Beispiel wäre vielleicht hilfreich!



  • Projekt schrieb:

    Jede Satzart beinhaltet allerdings inhaltlich unterschiedliche dinge!

    Das hatte ich irgendwie in meiner Glaskugel gesehen; deshalb wollte ich einen Wald von Klassen dafür schaffen (verschiedene Basisklassen mit einer gemeinsamen Struktur) statt einen Baum mit einer geseinsamen Signatur.

    Projekt schrieb:

    Das konzept mit den adaptern ist mir nicht ganz klar, kannst du mir das vielleicht etwas genauer erklären?

    Das ist erstmal nur ein Name; schreib "FooBar" statt "Adapter". Ob das ein Adapter z.B. im Sinner der GoF http://www.vico.org/pages/PatronsDisseny/Pattern%20Adapter%20Class/index.html wird ist zur Zeit völlig offen.

    Projekt schrieb:

    Nen kleines Beispiel wäre vielleicht hilfreich!

    Nein. Hilfreich wäre es wenn Du erstsmal eine Menge von "fachlichen" Klassen herleitest; diese mittels ArgoUML in ein Klassendiagramm packst und dies verlinkst.

    EDIT Oder, noch besser, das Modell selbst /EDIT

    Man kann nicht Strukturen im Nichts schaffen.

    Grüsse

    *this


Anmelden zum Antworten