Ankündigung

Einklappen
Keine Ankündigung bisher.

[SUCHE:] PHP - OOP Aufgabe

Einklappen

Neue Werbung 2019

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

  • [SUCHE:] PHP - OOP Aufgabe

    Hallo Leute ich habe eine etwas seltsame Frage, kann mir jemand bitte eine Aufgabe geben, welche sich mittels Klassen lösen lässt.
    Ich hab mich jetzt OOP von PHP beschäftigt und viele Anleitungen gelesen und die Codes durchgespiel, nun möchte ich gern wissen ob ich wirklich alles verstanden habe.
    Dazu bräuchte ich einmal eine Aufgabe, wo leicht zu erkennen ist, dass sich diese mit Klassen besser umsetzen lässt.
    Ich hoffe Ihr könnte einem OOP-Einsteiger helfen, schon mal vielen Dank im Voraus.


  • #2
    schreib ne mail mit dem phpmailer

    Kommentar


    • #3
      Stimmt brauch ich eh, das Problem ich kann es nicht testen. Der Port 25 ist nach außen nicht offen, oder kann ich auch eine Mail an den localhost schreiben, wenn ich ein spezielles Program habe?

      Kommentar


      • #4
        Ansonsten bau dir nen schönes PDF mit FPDF oder parse ein XML Dokument mit SimpleXML, das brauchste nichtmal runterladen, is schon dabei

        Kommentar


        • #5
          Erschein mir nicht gerade einfach, da ich in der Beziehung keinerlei Erfahrung hab, besser wäre etwas bekanntes

          Ich hab mir jetzt überlegt, ein Script zu schreiben, in welches man ein Auto aufnehmen kann.

          erster Ansatz:

          PHP-Code:
          <?php

          error_reporting
          (E_ALL E_STRICT);


          // Beispielaufgabe: Autohändler, welcher hauptsächlich VW und Audi im Angebot hat.


              // Folgende Dinge müssen erfüllt sein, damit die Klasse Auto erstellt werden kann.
              
          interface Voraussetzung
              
          {
                 
          // public function setArt($Art);  Immer erfüllt da es im Konstruktor steht
                 
          public function setKraftstoff($wert); 
              }


          class 
          Auto {        // implements Voraussetzung wird Ignoriert???
              // Deklaration
              
          public $Farbe;
              public 
          $Türen;
              public 
          $Art;        //Jeep, Coupé, etc.
              
          public $PS;
              public 
          $Kraftstoff;
              
              
          // Konstruktor, welche Standardeigenschaften definiert.
              
          public function __construct($Farbe "Silber"$Türen5$Art "VW") {
                  
          $this -> Farbe $Farbe;
                  
          $this -> Türen $Türen;
                  
          $this -> Art $Art;
              }
              
              
          //Farbe setzen:
              
          public function setFarbe($wert) {  // steht string vor $wert --> Fehler
                    
          $this-> Farbe $wert;  
              }    
              
          // Farbe abfragen:    
              
          public function getFarbe() {
                    return 
          "Wagenfarbe: ".$this->Farbe;
              }
              
          // Türenanzahl setzen
              
          public function setTüren($wert) { // steht int vor $wert --> Fehler
                    
          $this-> Türen $wert;  
              }    
              
          // Türenanzahl abfragen:    
              
          public function getTüren() {
                    return 
          "Anzahl der Türen: ".$this->Türen;
              }
              
          // Art setzen
              
          public function setArt($wert) {
                    
          $this-> Art $wert;  
              }    
              
          // Art abfragen:    
              
          public function getArt() {
                    return 
          "Es ist ein: ".$this->Art;
              }
              
          // PS setzen
              
          public function setPS($wert) {
                    
          $this-> PS $wert;  
              }    
              
          // PS abfragen:    
              
          public function getPS() {
                    return 
          "Leisung: ".$this->PS." PS";
              }
              
          // Kraftstoff setzen
              
          public function setKraftstoff($wert) {
                    
          $this-> Kraftstoff $wert;  // Klappt implements muss/kann das weg
              
          }    
              
          // Kraftstoff abfragen:    
              
          public function getKraftstoff() {
                    return 
          "Kraftstoff: ".$this->Kraftstoff;
              }
              public function 
          returnInfo() {
                  
          $info = array();
                  
          // Array enthält alle Informationen vom jetzigen ($this) Objekt
                  
          $info['Farbe'] = $this -> Farbe;
                  
          $info['Türen'] = $this -> Türen;
                  
          $info['Art'] = $this -> Art;
                  
          $info['PS'] = $this -> PS;
                  
          $info['Kraftstoff'] = $this -> Kraftstoff;
                  
                  return 
          $info;
              }

          }

          class 
          VW extends Auto {
          }

          $Auto1 = new Auto;
          $Auto1 -> setFarbe("Blau");
          $Auto1 -> setTüren(3);
          // $Auto1 -> setArt("VW");  Da VW ein Standardwert ist muss es nicht angegeben werden
          $Auto1 -> setPS(120);
          $Auto1 -> setKraftstoff("Diesel"); 


          if (isset(
          $Auto1) and ($Auto1 instanceof Auto)) {
              echo (
          "Das Objekt Auto1 existiert<p>");
          }

              
          // Alle Informationen des Objekts Auto1 ausgeben:
          $Auto1_info $Auto1 -> returnInfo();

          foreach(
          $Auto1_info as $key => $unit) {
              echo (
          $key.": ".$unit."<br>");
          }
              

          ?>
          Ist das Vernünfig? Man kann eigentlich das ganze bis hier hin auch mit einer MySQL DB realisieren. Ich verstehe es mit den Klassen eigentlich, nur hat es bei mir noch nicht ganz KLICK gemacht, wo der entscheidende Vorteil liegt.

          Mal eine Frage könnte ich meine 2. Klasse:
          PHP-Code:
          class VW extends Auto {

          eigentlich auch anders nennen, indem ich den Namen von der ersten Klasse ziehe, ich meine es in etwa so:
          PHP-Code:
          class Auto::Art extends Auto {

          Oder kann man nur innerhalb der Klassen über Vererbung und
          PHP-Code:
          parent:: 
          drauf zugreifen?
          Aber da nicht
          PHP-Code:
          protected 
          sondern
          PHP-Code:
          public 
          steht müsste es doch gehen, oder?

          Kommentar


          • #6
            Das Problem kenn ich gut: http://www.php.de/php-einsteiger/449...er-praxis.html schon etwas älter der Thread, aber vielleicht hilft er dir ja

            Kommentar


            • #7
              Habe mir den Beitrag mal durchgelesen, schade das er schon so schnell zuende war.
              Wie hast du dich damals entschieden? Für DB ist OOP wohl nicht notwendig, aber ein schönes Beispiel, wo ich den Nutzen deutlich sehe, fehlt mir immer noch.
              Mir geht es wie dir damals, welche der zahlreichen Bücherhinweise haben dir geholfen?

              Von wem ist die Seite adventure-php-framework.org eigenlich? Klar sehe ich im Impressum Christian Achatz und Alexander Schmidt. Ist einer etwa dr.e. oder phpdummi??

              Kommentar


              • #8
                Unser doktor hat da seine Hände im Spiel

                Hmm nen schönes Beispiel... ma schaun ob da noch jemand was hat... der Nutzen steht wohl mehr im kompletten Projekt, da ist es schwer nen kurzes Beispiel zu finden was einem das richtig vermittelt...

                Was mich sehr beeindruckt hat sind die Möglichkeiten die man durch die Zend:B Klasse bekommt... du brauchst keine Querys mehr selber schreiben, du bringst Zend Framework (ist ja auch OOP) nur einmal deine Datenstruktur bei und der joint alles von allein wie du es gerade brauchst

                Kommentar


                • #9
                  Slava war lange nicht hier?

                  Auf jeden Fall, projektbezogen lernt man OOP schnell zu schätzen. Habe aktuell mit Redaxo CMS zu tun, die vieles noch prozedural machen und dessen gesamte Struktur auch dazu verführt. Trotzdem schreibe ich mir jetzt Klassen, weil ich nicht mag, dass meine in irgendeinem Template definierten Variablen im globalen Scope herumspuken und wer weiß was beeinflussen. Zudem mag ich die Form, wie man Methoden über Ihr Objekt anspricht - da hat man sofort einen Bezug zur Aktion, die man vornimmt, wie man Objekte weitergeben und in anderen Objekten bündeln kann. Spezialisierung, Verwaltung von Ressourcen inkl. ihrer Zugriffsmethoden...
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    getTüren()
                    Wichtig ist auch, dass eine gewisse Form von Namenskonvention eingehalten wird. getDoors() klingt doch auch schön, oder?
                    Viele Grüße,
                    Dr.E.

                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    1. Think about software design before you start to write code!
                    2. Discuss and review it together with experts!
                    3. Choose good tools (-> Adventure PHP Framework (APF))!
                    4. Write clean and reusable software only!
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                    Kommentar


                    • #11
                      Zitat von dr.e. Beitrag anzeigen
                      Wichtig ist auch, dass eine gewisse Form von Namenskonvention eingehalten wird. getDoors() klingt doch auch schön, oder?
                      Stimmt man sollte es wohl lieber alles englisch halten, da man es komplett in Deutsch eh nie schafft, zumindest ich nicht.

                      Danke euch, aber es gibt es schönes Beispiel für alle Anfänger:
                      Einfach Ordner und Datein auflisten, dazu kommen noch einige Prüfungen, damit auch alle Bedingungen erfüllt sind. Schon hat man mehrere Methoden.
                      Und rekursive Funktionen werden auch nocheinmal vertieft, da in jedem Ordner wieder Ordner und Datein sind
                      PHP kann ja sehr schön Dateien verarbeiten und Informationen liefern

                      Hier zum nachlesen:
                      Peter Kropff - Tutorials - Objektorientierte Programmierung mit PHP5 - Anfängertutorial 1 - Überlegungen

                      Kommentar


                      • #12
                        Zitat von dr.e. Beitrag anzeigen
                        Wichtig ist auch, dass eine gewisse Form von Namenskonvention eingehalten wird. getDoors() klingt doch auch schön, oder?
                        Und dann noch darauf achten, dass Name und Aufgabe zusammenpasen. Bei getDoors() würde ich zum Beispiel erwarten, eine Collection aller verfügbaren Door-Objekte zu erhalten; nicht die Anzahl.

                        Kommentar


                        • #13
                          eine ganze collection? Das heißt ein Array mit allen Möglichkeiten?
                          Wenn man eine Funktion ohne Parameter aufruft, kann man Call by reference nicht nutzen oder???

                          Kommentar


                          • #14
                            Ich denke er wollte damit sagen das man die Methode vielleicht eher getNumberOfDoors oder so nennen müsste...

                            Kommentar


                            • #15
                              Ein Array ist nur eine Möglichkeit für eine Collection
                              Außerdem habe ich nicht gesagt, dass Du so etwas zurückgeben musst. Nur dem Namen nach würde ich das erwarten.

                              Kommentar

                              Lädt...
                              X