erläuterungen zu oop mit php5

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

  • #31
    Original geschrieben von wahsaga
    M.E. nicht. Der Mitarbeiter wird gefeuert - also ist das auch seine Methode.
    naja, darüber kann man sich streiten, im endeffekt ist aber alles richtig.

    ich gehe aber mit kropffs meinung konform. feuern() ist für mich keine methode eines mitarbeiter-objekts, sondern nur ein chef darf das - wieso sollte sich ein mitarbeiter selbst feuern können - unlogisch !?
    eventuell könnte ich mir vorstellen, dass $chef->feuerMitarbeiter(mitarbeiter $mitarbeiter) die methode $mitarbeiter->setPersonalNumber('HARTZIV') aufruft.

    Kommentar


    • #32
      Original geschrieben von 3DMax
      feuern() ist für mich keine methode eines mitarbeiter-objekts, sondern nur ein chef darf das
      Wer was darf, ist für mich davon unabhängig.
      - wieso sollte sich ein mitarbeiter selbst feuern können - unlogisch !?
      Drücken wir es etwas unkapitalistischer aus, dann hat unser Mitarbeiter eine Methode kündigen(), und das kann er selber aus freien Stücken machen, oder der Chef ihn - also ist das eine Methode, die noch einen Parameter übergeben bekommen will, um welche Art von Kündigung es sich handelt :-)
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #33
        Original geschrieben von wahsaga
        dann hat unser Mitarbeiter eine Methode kündigen(), und das kann er selber aus freien Stücken machen,
        so gesehen, gebe ich dir wiederum recht.
        aber das wollte ich ja ursprünglich ausdrücken, in der oop gibt es sozusagen kein richtig und falsch bzw. es kann immer unterschiedliche konzepte geben.

        Kommentar


        • #34
          PHP-Code:
          class Arbeitsloser extends Mitarbeiter implements iRevolution{
            public function 
          __construct(){
               echo 
          "Proletaria aller Länder vereinigt euch!";
               echo 
          "lässt euch nicht feuern!!!";
            }

            public function 
          __destruct() {
                 echo 
          "Ihr ".$this->zensur($this->meinung). "<br />";
                 echo 
          "köntet mich " $this->name ."</br>";
                 echo 
          $this->zensur($this->zensur($this->schimf));
                @@@@@
          $this=null
             }

          Slava
          bituniverse.com

          Kommentar


          • #35
            Die Diskussion ist ebenso wie das Beispiel völlig sinnlos.

            Bitte versuche erst gar nicht, den Leuten weismachen zu wollen, dass in der Objektorientierten Programmierung Objekte aus der realen Welt abgebildet werden. Das sorgt grade bei Anfängern nur für Verwirrung, weil in die Beispiele mehr hineininterpretiert wird, als tatsächlich da ist.

            Und mit private, protected und public kann man nicht klären, ob nur der Personalchef oder auch die Putzfrau auf eine Methode Zugriff hat. Diese Schlüsselwörter dienen dazu, die API für aufrufende und erbende Klassen sauber zu halten und haben überhaupt nichts mit einer Autorisierung in irgendeiner Form zu tun.
            hopka.net!

            Kommentar


            • #36
              Original geschrieben von Hopka
              Bitte versuche erst gar nicht, den Leuten weismachen zu wollen, dass in der Objektorientierten Programmierung Objekte aus der realen Welt abgebildet werden. Das sorgt grade bei Anfängern nur für Verwirrung, weil in die Beispiele mehr hineininterpretiert wird, als tatsächlich da ist.
              Wie willst du es dann halbwegs anschaulich machen?

              Je abstrakter du es hältst, desto weniger wird sich ein Einsteiger vermutlich darunter vorstellen könne.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #37
                Original geschrieben von Hopka
                [B]Die Diskussion ist ebenso wie das Beispiel völlig sinnlos.

                Bitte versuche erst gar nicht, den Leuten weismachen zu wollen, dass in der Objektorientierten Programmierung Objekte aus der realen Welt abgebildet werden. Das sorgt grade bei Anfängern nur für Verwirrung, weil in die Beispiele mehr hineininterpretiert wird, als tatsächlich da ist.
                wenn die Objecte ein Namen aus dem realem Welt haben, dann müssen sie auch dem realem Welt entsprechen.
                eine API, die ich nach 3 Monaten selber nicht mehr verstehen kann, ist auch ein verstoss gegen OOP, da ich diese classen nicht mehr benutzen kann.
                Es kommt aber oft, dass ein class geschrieben sein muss, dass eigentlich kein passender Begriff in diesem Welt hat. In diesem Fall muss man sich schon die Mühe geben um eine gute Beschreibung zu liefern, damit es jedem klar wird, dass AbraKadabra für Antrieb bei fliegenden Tepichen sorgt. Wenn AbraKadabra nicht verstanden wird, dann gibt es kein Beziehng zum realem Welt und AbraKadabra kann kein Tepich mehr hoh heben.

                dass der beispiel mit "Arbeitsloser" da oben vollig sinnlos ist, kann ich nur bestätigen.
                wie kommt ein mensch nur auf so eine blöde Idee?!
                Zuletzt geändert von Slava; 13.02.2007, 00:43.
                Slava
                bituniverse.com

                Kommentar


                • #38
                  Original geschrieben von Slava dass der beispiel mit "Arbeitsloser" da oben vollig sinnlos ist, kann ich nur bestätigen.
                  wie kommt ein mensch nur auf so eine blöde Idee?!
                  ja, und "AbraKadabra" ist auch nicht gerade ein anschauliches beispiel.

                  ich hätte da mal ein bsp:
                  klasse ErrorLogger, menschlich abstrakt, da im rl nicht existent, aber trotzdem kann sich jeder darunter etwas vorstellen.
                  grundsätzlich wird nur eine methode addErrorMessage($message) benötigt, nicht mal class-members, da $message sofort verarbeitet werden kann.

                  prinzipiell könnte man das ding auch als interface auslegen und diverse error-logger-klassen könnten dann diese schnittstelle implementieren.

                  class FileSystemErrorLogger implements ErrorLogger
                  class DatabaseErrorLogger implements ErrorLogger
                  class E_MailErrorLogger implements ErrorLogger
                  ... usw.

                  Kommentar


                  • #39
                    Original geschrieben von Kropff
                    zu 1.
                    wir definieren eine klasse personalchef mit der methode feuern. das ist meines erachtens nach der saubere und richtige weg
                    Das kling logisch, bringt aber ein problem mit sich.
                    Die personalchef instanz muss den zustand des betreffenden
                    mitarbeiters ändern, was er aber wegen der datenkapselung nicht
                    können sollte. Also bliebe dem mitarbeiter ein methode
                    zu verpassen die das übernimmt und den eigenen zustand ändert.
                    Besser ist die von wahsaga vorgeschlagene methode kuendigen.
                    Sie gehört zum konkreten mitarbeiterobjekt und hat so zugriff auf
                    die zustandsvariablen.

                    greets
                    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                    Kommentar


                    • #40
                      Original geschrieben von 3DMax
                      ja, und "AbraKadabra" ist auch nicht gerade ein anschauliches beispiel.
                      Ich habe von dir nicht erwartet, dass mein Beispiel mit "AbraKadabra" deine Vorstellungskraft überfördert.
                      Wenn ein Begriff abstract ist(Gedanken, Gefühl, ...) oder für diesen Begriff noch kein Namen erfunden wurde (AbraKadabraBetreuer), bedeutet das nicht, dass es nicht existiert.

                      Dein Beispiel mit ErrorLogger ist für einen Apfelverkäufer genau so verständlich wie AbraKadabra, aber nach dem du für ErrorLogger eine Erklärung (wie du schon gemacht hast) lieferst, dann existiert dein ErrorLogger und hat ein Bezug zum realem Welt.
                      Zuletzt geändert von Slava; 13.02.2007, 11:18.
                      Slava
                      bituniverse.com

                      Kommentar


                      • #41
                        Hallo,
                        Ich bin gerade dabei eine klasse für ein Speichersystem in Dateien zu erstellen. Dies soll dem der das Script erhält eine möglichst Datenbank unabhängige Nutzung garantieren. Leider arbeite ich sehr wenig mit Klassen und komme schwer mit einzelnen Teilen voran. Ist schon was sehenswertes deines Tutorials da was ich mir ansehen könnte? Wäre für heute sehr nützlich.

                        Lennie
                        Webdesign und Webentwicklung - Plunix.de

                        Kommentar


                        • #42
                          Ist schon was sehenswertes deines Tutorials da was ich mir ansehen könnte?
                          das ist eine einführung in das grundsätzliche. mehr nicht
                          Wäre für heute sehr nützlich.
                          das wirst du heute nicht alles lernen.

                          btw: wenn du es trotzdem haben willst, schick eine mail an mail[at]peterkropf.de, dann sende ich dir die relevaten teile. da ich aber ausgerechnet heute inhaltlich einiges umstrukturiert habe, ist es im moment ein wenig durcheinander, da ich nicht fertig geworden bin. ein paar dinge fehlen auch noch.

                          gruß
                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #43
                            Hi Lennie!
                            Wo hackt es?
                            hast du alles, teil oder kleine teil von OOP(Object Orientierte Programmierung) nicht verstanden?

                            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 ein artikel die, der oder das hat.
                            und in OOP ein Object heist

                            2)Was hat ein Ding? aus was 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 @Hopka behauptet, 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! get doch"); 
                            hiermit ist die erste stunde OOP zu ende.
                            Slava
                            bituniverse.com

                            Kommentar


                            • #44
                              @slava
                              OffTopic:
                              übe dich in geduld junger padavan

                              ich bin gegen ende nächster woche mit allem fertig. mache nur eine kleine pause, mein alljährlicher flucht-vor-dem-kölner-karneval-urlaub


                              peter
                              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                              Meine Seite

                              Kommentar


                              • #45
                                hallo, wow so ein entgegenkommen wie von slava hatt ich hier nocht nie...

                                dochdoch, habe nen ganz bisschen über classen gewusst, das ist aber nicht nennenswert. arbeite mich jetzt ein, und habe mitn bisschen hilfe eine erste klasse erstellt. auch wenn wer meint ich hätte da viel unnötiges drin.

                                vielen dank für die super erklärung.... vorbildliche sache
                                Webdesign und Webentwicklung - Plunix.de

                                Kommentar

                                Lädt...
                                X