Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständliche Tutorials für OOP gesucht!

Einklappen

Neue Werbung 2019

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

  • Verständliche Tutorials für OOP gesucht!

    Hallo,

    wer kennt verständliche und OOP-Tutorials mit sinnvollen Anwendungsbeispielen?

    Ich habe z.B. eine Community vor und include bisher auf jeder Seite die Datei "basic.php" mit allen Datenbankangaben und (normalen) Funktionen.

    Es hilft mir schon wenn mir jemand sagen kann, was für Einsatzgebiete in einer Community mit OOP besser realisierbar sind als mit klassischen Funktionen ala function sendmessage($from,$to,$content)...

  • #2
    wie gefehlt dir besser einen user in deiner community darstellen?
    als ein array mit namen, alter ....
    und 20 functionen die ungeordnet in quellcode liegen und nur für die darstellung und verarbeitung von den user dienen

    ODER
    als einen Object, den du mit namen ($user->getName()) ansprechen kannst und
    eine nachricht an den anderen user etwa so:
    $user1->mesage($user2,$mesage_string);
    sendet?

    ist dieser Beispiel sinnvoll ?
    Es wäre unmöglich in einem Beitrag alle vorteile und nachteile von OOP zu beschreiben, aber in jedem fall würde ich empfehlen in die Thema einarbeiten.
    ein bekanter von mir schreibt jetzt ein tutorial
    http://www.peterkropff.de/site/oop/oop.htm
    und versucht die Grundkonzepte von OOP in einer verständlicher form beizubringen. Ich hoffe, dass es was für dich ist.
    Slava
    http://bituniverse.com

    Kommentar


    • #3
      Danke für den Link - das könnte echt was Gutes werden!

      Die Funktionen liegen ja schon alle zentral in der "basic.php" und nicht wild irgendwo in den Quellcodes...

      Mit Funktionen lassen sich meine Sachen soweit alle ganz gut lösen, nur will ich den Code bestmöglich optimieren und dachte da eben an OOP.

      Der Aufruf von "profil.php?user=123" wird intern so abgearbeitet:

      1. include("basic.php");
      2. Überprüfung von "user" auf Richtigkeit mit RegEx
      3. datenbank(); (Funktion aus basic.php die zur DB connected)
      4. Abfrage ob User existiert und Daten in $row laden
      5. Ausgabe wie z.B.

      echo "<div class=profil>
      <div class=username>".$row['username']."</div>
      <div class=alter>".$row['alter']."</div>
      </div>";

      Welchen Vorteil hätte ich da mit OOP???

      Kommentar


      • #4
        Zitat von Exakt
        Für mich stellt sich halt die Frage nach dem Nutzen... ich will es nicht unnötig kompliziert machen und OOP sieht für mich nunmal kompliziert aus.
        Alles neues ist kompliziert.
        OOP hat auch Nachteile bei PHP, die mit Performance verbunden sind.
        Aber wenn deine Anwendung nicht besonders belastet wird, dann ist natürlich OOP für die Projecte am bestens geeignet.
        Lese ein paar Tutorials durch und dann können wir schon über ein oder anderen Aspekt von OOP viel besser mit ein ander diskutieren. Es ist eben leichter zu erklähren, wie man ein Zahnrad einbaut, als wie man ein Auto konstruiert .
        Slava
        http://bituniverse.com

        Kommentar


        • #5
          OOP hat überall den Nachteil, dass es mit Performance verbunden ist OOP hat den Vorteil, dass es (wenn man es einmal durchschaut hat) weniger fehleranfällig ist, weil man durch bessere Struktur und Allem besser wartbar ist.
          Nicht jeder Fehler ist ein Bug.

          Kommentar


          • #6
            Zitat von KingCrunch
            OOP hat überall den Nachteil, dass es mit Performance verbunden ist
            bei den sprachen, die quellcode in binere programmen compilieren gibt es fast kein performance unterschied.
            Ich will damit sagen, das OOP-Sprache wie C++ nach dem kompilieren kaum von einer nicht OOP-sprache C unterscheidet.
            PHP ist eine Interpreter-sprache, die erst zur laufzeit quellcode zum laufen bringt und sogar grosse kommentare in php-scripten können auf die performance schlagen.
            Also OOP! bitte schön, aber nicht da wo es zu eng sein könnte.
            Slava
            http://bituniverse.com

            Kommentar


            • #7
              Hallo,

              @Slava Richte deinem Kollegen doch bitte aus, dass seine Beispiele einem beim Lesen des Textes zum Schmunzeln bringen.

              Habe ihn eben mehr überflogen als im Detail aufgesogen, aber die Erklärungen sind mir nen Bookmark wert.


              Bis dääähne

              squig

              Kommentar


              • #8
                Zitat von squig
                Hallo,

                @Slava Richte deinem Kollegen doch bitte aus, dass seine Beispiele einem beim Lesen des Textes zum Schmunzeln bringen.

                squig
                Ok!
                jeder empfindet eine Information anderes.
                Ich kann zbs bei dem tutorial, dass er geschriben hat die Farbenkombination nicht leiden.

                Also kann ich dir gerne auch im forum helfen eine oder andere Technik von OOP verstehen. schwieriger wird es wenn jemand garr nichts verstanden hat.

                ein Versuchsorry für mein Deutsch)

                Alles beginnt mit Konzept.
                Um zu verstehen was ein Object ist, muss man ein paar Fragen beantworten.

                1)Was ist ein Ding ?
                an erster stelle ist ein Ding allse was sprachlich gesehen ein artikel die, der oder das hat.
                so ein Ding heist in OOP ein Object

                2)Was hat ein Ding? aus welchen Teilen ein Ding besteht?
                aus anderen Dingen wie farbe, material, alter und und und...
                diese Teile, die ein Ding hat nennt man Eigenschaften( auch in OOP).
                diese Dings-Teile können einfach zu beschreiben sein,
                z.b.s für Alter passt ein "int" gut, aber die Dings-Teile können auch komplex werden und sind auch Objecte, da die einfache datentypen wie string, float oder int für diese Beschreibung nicht ausreichen.
                Also die Eigenschaften sind sprachlich gesehen auch alle Teile, die ein artikel die, der oder das haben.

                3) was macht ein Ding?
                hier gehört alles, das sprachlich gesehen ein verb ist.
                schwimmen, springen, laufen, denken, über die berge kletern, und und und.
                Alles was ein Ding macht, wird mit funktionen beschrieben.
                diese funktionen heisen bei OOP Methoden.
                3.1) Wenn wir aber ein neuer Ding erzeugen, wollen wir ein paar Intialisierungen machen und unser Ding konstruieren. Wir können z.b.s
                alter und farbe von unserem Ding setzen.
                diese funktion(Methode) heist Konstruktor.
                bei meisten Programmiersprachen hat diese Methode die gleiche Name wie unser Object( also in unserem Fall "Ding"). In php4 ist es auch wie in anderen sprachen, aber seit version 5 heist diese function komische weise __construct


                trennlinie
                -------------------------------
                Wie können Wir ein Ding beschreiben? und zwar so, das die Andere das verstehen!!!
                Wir machen ein Plan, und beschreiben die Eigenschaften(Dings-Teile) und die Methoden(was unser Ding macht) und vergeben unserem Ding ein eindeutige Name.

                In OOP heist dies Plan eine Classe.
                und ich werde erst syntax von php4 verwenden.
                PHP-Code:
                class Ding//Name vergeben
                //hier ist der Platz für eigenschaften
                  
                var $dingfarbe;// Eigenschaft die farbe beschreibt.
                  
                var $alter;//Eigenschaft alter; 
                //ende von Eigenschaften;

                //jetzt komm konstruktor,
                //hier bauen wir unser Ding zusammen
                /*wir übergeben die farbe und alter von aussen und setzen diese werte
                **in unsere Eigenschaften var $dingfarbe und var $alter
                **um unsere Methoden und Eigenschaften von den variablen die von **aussen kommen
                **aus einander zu halten, benutzen wir $this->, und bezeichnen dadurch **die variable als unsere interne Objectvariable oder methoden
                */
                function Ding/*wie unsere classe*/($dingfarbe$alter){
                $this->$dingfarbe/*unsere dingfarbe*/=/*die farbe die von aussen kommt*/$dingfarbe;
                //und  das gleiche mit dem alter
                $this->alter=$alter;
                }
                //ende von Konstuktor

                //hier ist ein platz für die Methoden(was ein Ding macht!)
                //Methode springen
                  
                function springen(){
                  
                /*hier beschreiben wir springen*/
                  
                echo "ich springe";
                 }
                 
                //Methode sprechen
                  
                function sprechen($was){
                   echo 
                $was;
                 }

                }
                //ende von  Ding-Beschreibung 
                ein Bauplan für ein Ding ist damit fertig.
                obwoh manche Leute behaupten, dass die Objecte nicht der realität entsprechen müssen, behaupte ich gegenteil.
                ein Ding ist sehr abstract, aber wenn wir es Begriffen haben, dann ist er real wie ein Brötchen auf dem Tisch.
                PHP-Code:
                //ein neuer ding wird mit [b]new[/b] erstellt
                $variable_die_wir_als_ding_benutzen= new Ding("rot",20);
                //und jetzt spielen wir ein wenig
                echo $variable_die_wir_als_ding_benutzen->dingfarbe."</br>";
                echo 
                $variable_die_wir_als_ding_benutzen->alter."</br>";
                $variable_die_wir_als_ding_benutzen->springen();
                $variable_die_wir_als_ding_benutzen->sprechen("na! geht doch"); 
                ich hoffe, dass mein beitrag nicht für noch mehr verwierung gesorgt hat.
                Slava
                http://bituniverse.com

                Kommentar


                • #9
                  Oh, ich hoffe Du hast mich nicht falsch verstanden, ich mag die Art der Beispiele und eben diese bringen mich zum Schmunzeln.

                  Durchweg positiv gemeint

                  Kommentar


                  • #10
                    ich habe dich richtig verstanden.
                    Und finde gut, dass es dir gefehlt.
                    Ich habe einfach bei Verständnis von einem oder anderem Tutorial mich zu abstrakt ausgedrückt. (sprachschwäche )
                    Ich wollte nur sagen, dass es von vielen Faktoren abhängig ist ein passender Tutorial zu finden.
                    Jeder von uns sieht der Welt ein wenig anderes.
                    Slava
                    http://bituniverse.com

                    Kommentar


                    • #11
                      Hallo zusammen,

                      grundsätzlich sind die Bücher

                      - UML konzentriert
                      - Patterns of enterprise application architecture

                      von Martin Fowler zu empfehlen. Ersteres führt in UML und damit in den objektorientierten Entwurfsansatz ein, letzteres zeigt Anwendungsbeispiele, wie Software designed werden kann und beschreibt im zweiten Teil des Buches Pattern (Entwurfsmuster), die quasi Lösungsrezepte für Alltagsprobleme sind.

                      Die Beispiele oben sind zwar erstmal nicht falsch und zeigen auch, was OO grundsätzlich ist, streifen dabei aber nicht den Kern, sprich das OOD (=objektorientierte Design). Wie bereits öfter im Forum diskutiert ist OOP (objektorientierte Programmierung, also eine Klasse schreiben) nicht wirklich OO, wenn man sich vorher kein Konzept (=OOD) überlegt hat.

                      Ein paar Worte zu OOD:
                      Objektorientierung geht von einem Ansatz aus, Dinge, wie in der Natur zu beschreiben. Ein Mensch hat nicht nur Eigenschaften (Attribute), sondern hat auch Funktionen (Methoden), die Eigenschaften zeigen oder gewisse Dinge tun. Da ein Mensch in natura auch ein Ganzes ist, würde ein Mensch in der objektorientierten Welt auch ein Objekt (z.B. Kunde) sein. Ebenso gibt es Unterschiede zwischen Objekttypen. Einerseits existieren Daten-Objekte, wie der Kunde, die lediglich Daten halten und wenige Methoden haben, andererseits gibt es Logik-Objekte (z.B. Business-Schicht), die die Ablauf-Logik einer Applikation beinhalten. Von letzteren gibt es eine Vielzahl von "Unter-Typen", auf die ich nicht genauer eingehen möchte.

                      Essenz aus meinem Beitrag sollte sein, dass der Weg zu OOP nur über OOD und der dazugehörigen Literatur führen kann.
                      Viele Grüße,
                      Dr.E.

                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      1. Think about software design [B]before[/B] you start to write code!
                      2. Discuss and review it together with [B]experts[/B]!
                      3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                      4. Write [I][B]clean and reusable[/B][/I] software only!
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                      Kommentar


                      • #12
                        Zitat von dr.e.
                        Essenz aus meinem Beitrag sollte sein, dass der Weg zu OOP nur über OOD und der dazugehörigen Literatur führen kann.
                        ich bin mit dir 100% einverstanden. Ich wollte nur ein wenig einregung machen, damit es einige massen versändlich ist was OOP ist. Ich meine, dass es nicht immer das besste weg ist, sich viel zu viel mit Theorie auseinander setzen, wenn Ziel und Endergebnis von der Theory nicht besonders klar ist.
                        für die Jenige, die sich mit UML mehr beschäftigen wollen empfehle ich argouml( JavaRuntime ist ein Muss )
                        http://argouml.tigris.org/
                        damit kann man sehr gut interface und abstracte classen modelieren und direkt php4 oder php5 code generieren. die grundlagen von OOD müssen aber meine Meinung nach schon ein wenig vorhanden sein.

                        über die allgemeine Desingpattern mir dem Einsatz bei PHP5 empfehle ich diese seite:
                        http://www.professionelle-softwareen...erste_auflage/
                        Slava
                        http://bituniverse.com

                        Kommentar


                        • #13
                          Hallo Slava,

                          ich bin mit dir 100% einverstanden. Ich wollte nur ein wenig einregung machen, damit es einige massen versändlich ist was OOP ist. Ich meine, dass es nicht immer das besste weg ist, sich viel zu viel mit Theorie auseinander setzen, wenn Ziel und Endergebnis von der Theory nicht besonders klar ist.
                          Deine Anregungen und Beispiele sind ja auch nicht mein Angriffspunkt gewesen. Diese waren gut. Was ich sagen möchte ist, dass man sich im Klaren darüber sein muss, was man innerhalb einer Software machen möchte. Ist dies fixiert, sollte man zuerst ein Objektmodell erstellen, die Beziehungen und groben Funktionen klären, ehe man anfängt zu implementieren. Frei nach dem Satz think before you code. Und um ein gutes Design erstellen zu können, braucht man Theorie. Daran führt kein Weg vorbei und da lasse ich auch nicht mit mir diskutieren. Es nützt dir nichts, wenn du von Vererbung keine Ahnung hast und möchtest Funktionen so generisch wie möglich designen.

                          Wo ich dir Recht gebe ist, dass Theorie hinsichtlich der Beispiele sinnvoll und einfach zu verstehen sein muss. Die von mir genannten Bücher sind das meiner Meinung nach, da insbesondere das UML konzentriert immer wieder Beispiele aus dem Alltag erläutert und zeigt, wie es designed werden sollte. Das letztere Buch zeigt dann wie man das umsetzt. Die Codierung in PHP ist dabei nur eine möglich Form der Umsetzung, befindet man sich auf diesem Niveau der Abstraktion.

                          Dein Buchtipp "Professionelle Softwareentwicklung mit PHP 5" finde ich gut, da er die Speifika von PHP 5 behandelt, die für die Umsetzung eines Designs notwendig und wichtig sind.

                          Wie man nun genau an die Sache "OO" herangeht kann ich nicht genau beantworten. Was ich aber immer wieder sehe - und das ist auch der Grund, warum ich mich hier einmische - ist

                          a) Leute basteln sich einfach eine Klasse aus vorher mal implementierten Funktionen und nennen das objektorientierung,

                          oder

                          b) Leute implementieren und verwednen irgendwelche Klassen ohne sich vorher darüber Gedanken gemacht zu haben, was das nach sich zieht, oder welches Design dahinter steckt,

                          und das ärgert mich, weil es weder sinnvoll noch zielführend ist.
                          Viele Grüße,
                          Dr.E.

                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          1. Think about software design [B]before[/B] you start to write code!
                          2. Discuss and review it together with [B]experts[/B]!
                          3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                          4. Write [I][B]clean and reusable[/B][/I] software only!
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                          Kommentar


                          • #14
                            Zitat von squig
                            Hallo,
                            @Slava Richte deinem Kollegen doch bitte aus, dass seine Beispiele einem beim Lesen des Textes zum Schmunzeln bringen.
                            OT
                            Wahrlich amüsant dieses tutorial. "Müffi, das Geruchsgespenst" LOL. Schöne Feierabendlektüre...
                            [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


                            • #15
                              http://de.php.net/manual/de/language.oop.php
                              Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
                              Mark Twain

                              Kommentar

                              Lädt...
                              X