Ankündigung

Einklappen
Keine Ankündigung bisher.

mehr als eine Klasse einbinden

Einklappen

Neue Werbung 2019

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

  • mehr als eine Klasse einbinden

    Hi,

    Ich habe z.Z. eine rekursive Funktion geschrieben in der 3 Klassen aufgerufen werden.

    In der Funktion befinden sich die Objekte folgender Klassen
    1. von einer MySQL-Klasse
    2. einer Klasse um die Links vom Verzeichnissbaum zu erstellen
    3. einer Klasse für Templates, um das Design anpassen zu können

    Ich kenne die Möglichkeit eine Klasse mit extends zu erweitern, aber muss ich erst mehrere Klassen nacheinander vererben um die Eigentliche Klasse z.B. Navigationsklasse zu erzeugen, oder gibt es noch einen besseren Weg?

    Und wie sieht es aus, wenn man die Letzte Klasse um eine weitere Klasse erweitern will?

  • #2
    ich kann dir jetzt nicht genau sagen wie es in PHP geht aber vom Objektmodell her kann man doch auch Mehrfachvererbung machen.

    ich meine so etwas auch schonmal in PHP gesehen zu haben

    Code:
    neueKlasse extends alteKlasseA, alteKlasseB
    geht sowas hier nicht vielleicht?!

    Wenn du dann von neueKlasse eine weitere ableiten willst ist das doch auch kein Problem.

    Code:
    nochNeuereKlasse extends neueKlasse
    froehliches Eiersuchen
    - Das Leben ist eine Spirale, man kotzt immer in der selben Kurve.
    - Frauen behalten nur für sich, was sie nicht wissen.

    Kommentar


    • #3
      Mehrfachvererbung geht in PHP nicht.

      "Alpha Centauri", was genau ist dein Problem, deine Frage?

      Basti

      Kommentar


      • #4
        Ich will alle Teile im Programm als Klassen schreiben bzw. als Objekte definieren. Es soll erreicht werden das jeder Teil autonom arbeitet und ich nurnoch teile einbinden muss und die Parameter an den Klassen verändern brauche.

        So auch für eine Klasse, die für die Navigation zuständig ist. z.Z. ist die Navigation eine Funktion.

        Jetzt habe ich aber das Problem das die Navigation nur funktioniert wenn in der Funktion mindestens das Objekt für die MySQL-Abfrage vorkommt.

        Damit kann ich die Funktion die jetzt einen Navigationsbaum auf- und zuklappen kann nicht als Klasse schreiben. Vieleicht geh ich da etwas falsch rann aber ich würd es schon gern als Modul programmieren.

        Ich weiss nicht ob der jetzige Weg über eine Funktion der richtige ist. Der Navigationsbaum funktioniert schon aber irgendwie iss mir das alles zu verbaut.

        Kommentar


        • #5
          Hi.

          Es ist völlig "normal", dass Klassen bzw. Objekte untereinander abhängig sind. Neben der Vererbung gibt es Assoziationen und Aggregationen. Im Falle eines Navigationsbaum macht es Sinn, diesem ein Sitemap-Objekt, also den eigentlichen Baum zu übergeben. Ich hab z.B. in einem System pro Menü ein Objekt und alle bekommen das gleiche Sitemap-Objekt, sowie die Information, welcher Knoten gerade "aktiv" ist. Um diese elemente dann der Seite beizufügen bietet sich das Decorator-Pattern an. Dass heißt, die Seite wird mit den einzelnen Menüs "dekoriert", ihre Schnittstelle ändert sich dadurch jedoch nicht.

          Das Sitemap-Objekt braucht natürlich die Daten oder Zugang zu den Daten. Dazu gibt es unzählige Möglichkeiten:

          - MySQL-Objekt übergeben
          - Eigenes DAO übergeben, dass die Zugriffe kapselt
          - Übergabe der Daten als DataTransferObject oder sowas...
          - ...

          Die Autonomie der Objekte kannst du also knicken. Wichtiger ist, dir klar zu machen, wie die Abhängigkeiten aussehen, wie die Zuständigkeiten aussehen, die Schnittstellen etc.

          Basti

          Kommentar

          Lädt...
          X