compuboy1010: Bitte, wer hat hier viel Erfahrung mit OOP?

Guten Tag,

ich bin bald am verzweifeln.
Gibt es hier niemandem im Netz, der einem mal mit OOP im Bezug auf php weiterhelfen kann?

Ich habe im php forum gepostet und dort ist anscheinend hiemand in der Lage meine Frage zu verstehen.
[url: http://www.php-resource.de/forum/showthread.php?s=&threadid=29822]

Bekomme nur zu hören was ich nicht machen sollte aber keine Lösung WIE ich es machen sollte.

Ich hoffe einfach mal darauf, obwohl dieses eher ein html  Forum ist, dass sich hier hier ein paar Programmier befindenm, die einem Anfänger weiterhelfen können.

Also ich habe hier Frage die ich habe, so gut wie möglich in dem Forum(siehe Link formuliert) deswegen wäre es Platzverschwendung sie nochmals zu formulieren?

Könnte mir vielleicht jemand eine Antwort geben?

Danke

  1. Hi,

    Ich habe im php forum gepostet und dort ist anscheinend hiemand in der Lage meine Frage zu verstehen.

    oder Du verstehst die Antworten nicht ;-)

    [url: http://www.php-resource.de/forum/showthread.php?s=&threadid=29822]

    </faq/#Q-19>

    Bekomme nur zu hören was ich nicht machen sollte aber keine Lösung WIE ich es machen sollte.

    Die Kommentare dort haben Hand und Fuß. Ich empfehle Dir, Dir ein gutes Buch zur OOP zuzulegen - am besten zunächst eines, das völlig unabhängig von irgendeiner Sprache ist. Später kannst Du das Erlernte dann auf PHP adaptieren und Dich dort um programmtechnische Aspekte kümmern. So wie Du vorgehen möchtest, kannst Du auch gleich bei Funktionen bleiben.

    Ich hoffe einfach mal darauf, obwohl dieses eher ein html  Forum ist, dass sich hier hier ein paar Programmier befindenm, die einem Anfänger weiterhelfen können.

    Den Themenbereich PHP gibt es hier nicht zufällig ;-)

    Also ich habe hier Frage die ich habe, so gut wie möglich in dem Forum(siehe Link formuliert) deswegen wäre es Platzverschwendung sie nochmals zu formulieren?

    Jepp.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      bitte könntest Du nicht versuchen, die dort gestellt Frage in einem 3-Zeiler zu erklären, so dass ich weiterarbeiten kann? Das mit dem Buch ist eine gute. Danke!

      Sollte man also in einem Konstruktor die Klassen erzeugen die diese Klasse benötigt, oder besser im Hauptprogramm und dann die Referenz übergeben.

      Welche Variante ist besser, um wiederverwendbaren Code zu produzieren?
      Muss ich dafür wirklich ein ganzen Buch lesen?

      Danke

      1. Muss ich dafür wirklich ein ganzen Buch lesen?

        ja dir wird wohl nix anderes übrig bleiben und nachdem ich deinen beitrag in dem anderen forum gelesen hab verstärkt sich diese anahme noch.
        ich beschäftige mich auch erst seit kurzem mit oop und viel lesen und probieren hilft. habe zwar kein buch aber im netz steht ne menge

      2. Hallo!

        bitte könntest Du nicht versuchen, die dort gestellt Frage in einem 3-Zeiler zu erklären,

        das geht nicht.

        so dass ich weiterarbeiten kann?

        das wird wohl noch ein bisschen dauern, Du musst Dich erstmal noch mit ein paar Dingen auseinandersetzen.

        ich empfehle hier: http://www.phppatterns.com/index.php/link/category/11/ und den Rest der Seite. Dazu noch http://php-faq.de/ch/ch-objects.html.

        Sollte man also in einem Konstruktor die Klassen erzeugen die diese Klasse benötigt, oder besser im Hauptprogramm und dann die Referenz übergeben.

        das kommt drauf an. Ich würde es von außerhalb machen, Ziel sollte es sein dass die eine Klasse möglichst wenig von anderen Klasen weiß, und die benötigten Parameter über definierte Schnittstellen bekommt, das heißt als Parameter im Konstruktor oder in einer anderen Methode.

        Grüße
        Andreas

        1. Hallo Andreas,

          http://www.phppatterns.com/index.php/link/category/11/

          Ich denke das ist ein Link wozu ich schon monatelang suche. Denke ich jedefalls auf den ersten Blick!

          Vielen Dank!!!!!!!

          Einen schönen Tag noch!

          gruß compu

    2. Hi!

      Die Kommentare dort haben Hand und Fuß.

      Teilweise, aber was soll er da bitte mit speziellen Klassen-Funktionen von PHP? Oder mit Vererbung?

      Grüße
      Andreas

  2. Moin!

    Ich habe im php forum gepostet und dort ist anscheinend hiemand in der Lage meine Frage zu verstehen.
    [url: http://www.php-resource.de/forum/showthread.php?s=&threadid=29822]

    Damit die Lösungen _hier_ auch das Problem kennen, arbeite ich also hinter dir her und zitiere erstmal dein Problem (bedenke: Man soll es den Helfern so einfach wie möglich machen. Niemand geht gerne auf unverlinkte URLs - und wenn sie, so wie bei mir der Fall, den Browser erstmal reproduzierbar zum Absturz bringen, ist das böse.)

    ---Schnipp---
    Es gibt angenommen 4 Klassen

    class UserAdmin
    {
    UserAdmin(){}
    function1(){}
    function2(){// Bestimmt die ausgewählte Sprache des Cookie oder aus URL,etc}
    function3(){}
    }

    class Company
    {
    Company(){}
    function1(){}
    function2(){}
    function3(){}
    }

    class Datenbank // sämtliche DB Funktionen
    {
    Datenbank(){}
    function1(){}
    function2(){}
    function3(){}
    }

    class Mitarbeiter
    {
    Mitarbeiter(){}
    function1(){} // benötigt Sprache aus Objekt userAdmin
    function2(){}
    function3(){}
    }

    Wie kann nun dem Objekt Mitarbeiter, welches die Datenbankfunktionen der Klasse "Datenbank" und die Sprache des Objektes "UserAdmin" benötigt diese mitteilen.

    Bisher habe ich in den Funktionen der Klasse Mitarbeiter immer stehen stehen:
    $global $db;

    $db->select("*", "mitarbeiter" .....);

    Geht das nicht einfacher? Ich möchte, dass die jede Funktion der Klasse Mitarbeiter,weiß welche Sprache ausgewählt wurde. Ausserdem ist es so wie es momentan bei mir ist nicht gerade das Paradebeispiel für wiederverwendbare Software.
    ---schnapp---

    Die Frage ist: Warum hast du die Klassen so gewählt, wie du sie gewählt hast?

    Dass du mit Vererbung eine Menge erreichen kannst, ist klar. Leider kann eine Klasse nur die Eigenschaften einer übergeordneten Klasse erben, nicht aber zwei existierende Klassen zusammenführen zu einer neuen Klasse.

    Daraus folgt: Die Gestaltung der Klassen muß sich gerade bei PHP primär an den Möglichkeiten der Sprache orientieren.

    Wenn ich mir die Klassenbezeichnungen so ansehe: "Mitarbeiter, "UserAdmin", "Company", "Datenbank" - dann sehe ich erstmal keinerlei Zusammenhänge. Was machen diese Objekte? Wie sind sie miteinander verknüpft? Hast du die Möglichkeit in Betracht gezogen, beispielsweise zur Realisierung der Datenbankanbindung die DB-Instanz als Referenz an beispielsweise die Mitarbeiter-Instanz zu übergeben? Oder läßt sich die DB-Klasse an UserAdmin und Mitarbeiter (die offenbar beide DB-Zugang brauchen) vererben? Dann hättest du aber je Instanz einer dieser Klassen einen offenen DB-Kanal, was ja auch Verschwendung ist.

    Mir sind noch zu wenig Informationen bekannt, um das Problem umfangreicher zu beantworten.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
    1. Hi!

      Niemand geht gerne auf unverlinkte URLs - und wenn sie, so wie bei mir der Fall, den Browser erstmal reproduzierbar zum Absturz bringen, ist das böse.

      Dazu kann er ja nun wirklich nichts zu, die Schuld liegt da wohl eher bei den Browser-Entwicklern, denn ein Browser sollte nicht abstürzen, auch nicht wenn er grausamsten Code vorgeworfen bekommt ;-)

      (Mit Firebird wäre das nicht passiert... ;-))

      ---Schnipp---
      [...]
      ---Schnapp---

      Die Frage ist: Warum hast du die Klassen so gewählt, wie du sie gewählt hast?

      eine gute Frage ;-)
      Das she ich auch so, man muss wiessen was die Applikation machen soll um den Ansatz bewerten zu können.

      Dass du mit Vererbung eine Menge erreichen kannst, ist klar.

      mir gerade in diesem Fall nicht.

      Leider kann eine Klasse nur die Eigenschaften einer übergeordneten Klasse erben, nicht aber zwei existierende Klassen zusammenführen zu einer neuen Klasse.

      Zum Glück, denn das ist ja der Sinn von Verwerbung.

      Vererbung sollte man IMHO nur verwenden, wenn das erbende Objekt eine Teilmenge des Elternobjektes ist, und dieses spezialisiert.

      Also z.B.

      Fahrzeug
            A
            |
          ------
         |      |
       Auto  Motorrad

      oder

      User
            A
            |
          ------
         |      |
       Admin   Gast

      Sobald man anfängt nur weil man es gut gebrauhen kann von Objekten zu erben, mit denen man überhaupt nichts zu tun hat, dann ist das sowas wie "prozedurales Programmieren mit Klassen und Objekten", und keine OOP.

      Daher verwende ich vererbung vor allem bei den Objekten der Realität, also der Business-Logik, sowas wie oben bechrieben.

      Wenn Du von einem Objeklt erbst, hast Du da keine Schnittstelle mehr zwischen, und damit hast Du wieder das alte Problem wie bei der prozeduralen Programmierung.

      Daraus folgt: Die Gestaltung der Klassen muß sich gerade bei PHP primär an den Möglichkeiten der Sprache orientieren.

      Hm, meine Auffassung ist, dass sich die Gestaltung der Klassen an den Objekten der Realität orientiert.
      Du kannst auch in anderen Sprachen keine Objekte "zusammenfassen". Du kannst zwar Packages bilden..., aber das hat hiermit wenig zu tun. Ein Grunsatz der OOP ist ja gerade die Kapselung der Funktionalitäten und die Kommunikation über wohl definierte Schnittstellen. So kann man einzelnde Methoden grundlegend verändern, und hat dabei keine Auswirkungen im Rest der Applikation zu befürchten.

      Viele Grüße
      Andreas