Totale Verworrenheit in Klassenkonstrukt



  • Hallo, hallo 🙂

    Ich beschreibe erst mal wie mein Interface meiner Process-Klasse aussieht:

    Folgende Klassen existieren:

    class Process (bietet ein Interface zu einem Windowsprozess)

    class Thread (bietet ein Interface zu einem Windowsthread)
    class ThreadManager (Verwaltet die Threads eines Prozesses und speichert sie in Form von "Thread" zwischen)

    class Module (bietet ein Interface zu einem Windowsmodul)
    class ModuleManager (Verwaltet die Module eines Prozesses und speichert sie in Form von "Module" zwischen)

    class Heap (bietet ein Interface zu einem Windowsheapblock)
    class HeapManager (Verwaltet die Heapblöcke eines Prozesses und speichert sie in Form von "Heap" zwischen)

    Heißt auf deutsch, Process besitzt die Manager als Membervariablen welche std::vector<> nutzen um die einzelnen Module, Threads und Heaps zu speichern.

    -Process
    --ThreadManager
    ---Thread
    --ModuleManager
    ---Module
    --HeapManager
    ---Heap

    Das Ganze ist ein gewaltiger Haufen an Abhängigkeiten, da die Klassen ThreadManager, Module, ModuleManager, HeapManager alle Referenzen auf die Mutterklasse "Process" brauchen. So greift zb ein Module gerne über die Mutterklasse auf den ThreadManager zu und startet einen Thread.

    Ich bekomme das Ganze einfach nicht kompiliert und möchte nicht zu viel hacken.
    Wie würdet ihr die Abhängigkeiten organisieren?

    Achja, das Ganze wird unter der LGPL veröffentlicht, mit einer Hilfe tut ihr etwas gutes und ich kann euch gerne in die Credits packen 🙂
    Falls jemand den Source sehen möchte, gerne, kann ich hochladen ... sind halt einige Dateien...

    Mfg,
    Flo 🙂



  • Übergäbest du "den Methoden" einfach nur Informationen was gefordert ist, bzw. die Daten die angefordert wurden, bräuchtest nicht unbedingt die Manager rumreichen.

    Definiere dir eine Schnittstelle über die du alles verwaltest, ob das nun deine Processklasse machst oder ob du noch was extra machst ist erstmal egal.

    Auf diese Weise brauchen deine einzelnen Klassen gar nichts von den anderen zu wissen und hast eben eine zentrale Verwaltung und wenn sich einzelne Klassen ändern oder die Art wie Informationen angefordert werden geändert werden, brauchst du nciht direkt alle Klassen abändern.


Anmelden zum Antworten