Ankündigung

Einklappen
Keine Ankündigung bisher.

Netz von Objekten mit Abhängigkeiten darstellen/zeichnen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Netz von Objekten mit Abhängigkeiten darstellen/zeichnen

    Hallo,

    ich möchte in einer Webanwendung folgende Struktur anzeigen können:



    Die Daten hierfür werden in folgender festgelegten Datenbank abgelegt:



    Der Prozess zum Anlegen der Abhängigkeiten besteht schon und verhindert eine Referenz auf sich selbst. Gehen wir mal davon aus, dass keine Zirkel entstehen können.

    MEIN PROBLEM: Ich weis momentan nicht, wie ich einsteigen soll. Wenn ich anfange und lese die Kinder und Eltern des Objekts aus. Soweit komme ich noch. OK, jetzt weiss ich nicht wie ich die Strukturdaten gescheit ablegen soll und wie ich weiter durch die Netzstruktur vorgehe, sodass ich dann alle Daten/Abhängigkeiten der Objekte habe, die die obere Abbildung beschreiben können.

    Hat jemand dafür eine Lösung?

    Gruß

  • #2
    Naja, zumindest die Visualisierungsart müsstest Du schon selbst festlegen.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Was genau fehlt denn jetzt?

      PHP: GD - Manual
      Google: gdlib
      Google: ImageMagick
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        endlicher, zyklischer, gerichteter Graph
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Wie ein gezeichneter Binärbaum aussieht ist klar, nur besitzen die Knoten nun auch mehrere Eltern so kann dies schnell unübersichtlich werden. In erster Linie geht es mir auch darum, zuerst einen geeigneten Algorithmus zum traversieren dieser Struktur zu finden. Das ist mein erstes Problem. Danach kommt erst die Visualisierung. Als rudimentären Schritt reicht auch eine Ausgabe als Text.

          Kommentar


          • #6
            Wie ein gezeichneter Binärbaum aussieht ist klar
            Davon redet hier aber niemand. Es ist nämlich kein Binärbaum.

            In erster Linie geht es mir auch darum, zuerst einen geeigneten Algorithmus zum traversieren dieser Struktur zu finden. Das ist mein erstes Problem. Danach kommt erst die Visualisierung.
            Tja, das ist IMHO aber genau falsch. Du musst erst definieren, was Du erreichen willst und kannst dann an die Implementierung gehen.

            Ich kann ein Pentagramm als Stern ausgeben, ich kann aber auch für jeden Punkt seine Kinder aufzählen oder mir vielleicht irgendwas anderes stranges ausdenken.

            Als rudimentären Schritt reicht auch eine Ausgabe als Text.
            Auch hier gilt es ein Format zu definieren.
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Also,

              die Datenbankstruktur sieht folgendermaßen aus:

              die Struktur, die es möglich sein soll zu visualisieren und die sich mit dem Datenbankmodell realisieren lässt kann folgendermaßen aussehen:

              Ich hoffe das ist jetzt etwas genauer.

              Ich hoffe ihr könnt mir da weiterhelfen oder einen Tipp geben...
              Gruß

              Kommentar


              • #8
                Wie gesagt - im Prinzip erlaubt die DB-Struktur aber auch Zirkel, Referenzen auf sich selbst etc.

                Wie auch immer, ich würde das objektorientiert angehen.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Diese Funktion soll in ein bestehendes System integriert werden, der Prozess zum Anlegen der Abhängigkeiten besteht schon und verhindert eine Referenz auf sich selbst. Gehen wir mal davon aus, dass keine Zirkel entstehen können. Wie löse ich das Problem der Traversierung dieser Struktur? Was meinst du mit objektorientiert? Das System wurde mit OOP implementiert.

                  Hat jemand eine Lösung oder kennt einen Algorithmus mit dem sich das Problem annähernd lösen lässt?

                  Kommentar


                  • #10
                    Hat jemand eine Lösung oder kennt einen Algorithmus mit dem sich das Problem annähernd lösen lässt?
                    Was soll das? Du hast noch nicht einmal ein Problem geschildert! Wo ist denn das Problem? Lies die Elemente aus und fang am ersten an.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Sorry, kann sein, dass meine Erläuterung etwas schwammig ist. Ich weis momentan nicht, wie ich einsteigen soll. Wenn ich anfange und lese die Kinder und Eltern des Objekts aus. Soweit komme ich noch. OK, jetzt weiss ich nicht wie ich die Strukturdaten gescheit ablegen soll und wie ich weiter durch die Netzstruktur vorgehe, sodass ich dann alle Daten/Abhängigkeiten der Objekte habe, die die obere Abbildung beschreiben können.

                      Kommentar


                      • #12
                        Jedes Objekt bekommt eine Liste mit Kind- und Elternknoten. Dann eine Methode die die Listen entsprechend füllst. Diese rufst du zuerst in deinem "Ankerobjekts / Wurzel" auf. Am Ende der Methode nach dem Laden der Kinder und Eltern rufst du auch dort jeweils nochmal die Methode auf. Solange keine Zyklen im Graphen sind hast du irgendwann alles geladen.

                        Visualisierung ist komplizierter. Ich würde zunächst einen "Trockendurchlauf" machen, in dem jeder Knoten meldet wieviel Platz er braucht um alles darstellen zu können. Aber da müsste man nochmal genauer drüber nachdenken und vor allem nicht um halb sechs abends

                        Kommentar


                        • #13
                          Machs vielleicht erstmal ohne Datenbank mit einem Array als Datengrundlage, dann kannst du dich voll aufs Zeichnen konzentrieren.

                          Vielleicht kannst du das ganze über ein Containermodell angehen. Zeichne bzw. berechne (!) doch erst einmal die Endknoten (Parent 1, Child von Child 2, Child von Child 1, Anderes Objekt) und ihre Ausmaße und füge jedem danach seine Verwandten hinzu.

                          Container 1: Parent 1
                          Container 2: Child von Child 2
                          Container 3: Child von Child 1
                          Container 4: Anderes Objekt

                          Container 5: Parent 2 + Container 4

                          Container 6: Child 1 + Container 2 + Container 3

                          Container 7: Mein Objekt + Container 1 + Container 5
                          Container 8: Container 6 + Container 7

                          Ein Container ist eine Klasseninstanz, die sich intern selbst sortieren könnte. Sprich aus maximal 2 Objekten oder Containern besteht und diese untereinander oder nebeneinander darstellen kann.
                          "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                          Kommentar

                          Lädt...
                          X