Objektorientierung: Unterschied zwischen den Versionen

Aus m-wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft)\
= Definitionen =
Objektmethoden = Funktionen\
Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft)
Objektmethoden = Funktionen


- Klassen werden vor der Verwendung erstellt und mit include eingebunden.\
= Klassen =
- Da in den Funktionen der Klasse nur lokale oder per Parameter übergebene Variablen bekannt sind, müssen auch klasseninterne Variablen mit $this->variable angesprochen werden.
Klassen werden vor der Verwendung erstellt und mit include eingebunden.
Da in den Funktionen der Klasse nur lokale oder per Parameter übergebene Variablen bekannt sind, müssen auch klasseninterne Variablen mit $this->variable angesprochen werden.


   Klasse -> Objekt:\
<pre>
   class Rechteck {\
   Klasse -> Objekt:
     var Länge;\
   class Rechteck {
     var Breite;\
     var Länge;
     \
     var Breite;
     function Fläche () {\
      
       return $this->Länge * $this->Breite;\
     function Fläche () {
     } // end function Fläche\
       return $this->Länge * $this->Breite;
   } // end class Rechteck\
     } // end function Fläche
   \
   } // end class Rechteck
   $testRechteck = new Rechteck;\
    
   $testRechteck->Länge = 5;\
   $testRechteck = new Rechteck;
   $testRechteck->Breite = 4;\
   $testRechteck->Länge = 5;
   echo $testRechteck->Fläche(); // ergibt 20\
   $testRechteck->Breite = 4;
   \
   echo $testRechteck->Fläche(); // ergibt 20
    
   <?php
   <?php
     class KlassenName {
     class KlassenName {
Zeile 26: Zeile 29:
   ?>
   ?>


   Vererbung:\
   Vererbung:
   class Quader extends Rechteck {\
   class Quader extends Rechteck {
     var Höhe;\
     var Höhe;
    \
 
     function Volumen () {\
     function Volumen () {
       return $this->Höhe*Fläche();\
       return $this->Höhe*Fläche();
     } // end function Volumen\
     } // end function Volumen
   } // end class Quader\
   } // end class Quader
  \
</pre>
  Alle Funktionen und Werte werden vererbt und stehen zur Verfügung\
 
  \
Alle Funktionen und Werte werden vererbt und stehen zur Verfügung
   $testQuader = new Quader;\
 
   $testQuader->Länge = 7;\
<pre>
   $testQuader->Breite = 3;\
   $testQuader = new Quader;
   $testQuader->Höhe = 5;\
   $testQuader->Länge = 7;
   echo $testQuader->Volumen(); // ergibt 105\
   $testQuader->Breite = 3;
  \
   $testQuader->Höhe = 5;
  Konstruktor:\
   echo $testQuader->Volumen(); // ergibt 105
  Funktion, welche beim Erstellen aufgerufen wird. Kann aber auch ganz normal aufgerufen werden.\
</pre>
  Name entspricht Klasse. Wird nach der Variablendefinition definiert, damit man diese Variablen\
 
  auch gleich initialisieren kann.\
Konstruktor =
  Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies\
Funktion, welche beim Erstellen aufgerufen wird. Kann aber auch ganz normal aufgerufen werden. Name entspricht Klasse. Wird nach der Variablendefinition definiert, damit man diese Variablen
  mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig.\
auch gleich initialisieren kann. Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig.
  \
 
   class test {\
<pre>
     var $miau;\
   class test {
    \
     var $miau;
     function test() {\
 
       $this->miau = true;\
     function test() {
     } // end function test\
       $this->miau = true;
   } // end class test\
     } // end function test
  \
   } // end class test
  Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\
</pre>
     var $x_ok;\
 
     var $y_ok;\
Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\
     \
 
     function test ($x = "", $y = "") {\
<pre>
       $this->testVar($x);\
     var $x_ok;
       $this->testVar($y);\
     var $y_ok;
     } // end function test\
      
     \
     function test ($x = "", $y = "") {
     function testVar($testvariable) {\
       $this->testVar($x);
       if ($testvariable == "muh") { $this->x_ok = $testvariable }\
       $this->testVar($y);
     } // end function testVar\
     } // end function test
     \
      
    Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen.\
     function testVar($testvariable) {
    \
       if ($testvariable == "muh") { $this->x_ok = $testvariable }
     $x_ok = $this->testVar($x);\
     } // end function testVar
        \
</pre>
     function testVar($testvariable) {\
      
       if ($testvariable == "muh") { \
Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen.
         return $testvariable \
 
       }\
<pre>
       else {\
     $x_ok = $this->testVar($x);
         return "";\
 
       }\
     function testVar($testvariable) {
     } // end function testVar\
       if ($testvariable == "muh") {  
    \
         return $testvariable  
    Mit Werten wird das Objekt folgendermassen erzeugt:\
       }
    \
       else {
     $objekt = new Objekt("muh", "miau");\
         return "";
     $objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt.\
       }
    \
     } // end function testVar
    \
</pre>
  Objekte kopieren / referenzieren:\
 
  Beim zuweisen an ein neues Objekt $new = $old werden sämtliche Werte kopiert.\
Mit Werten wird das Objekt folgendermassen erzeugt:
  Will man eine Referenz, so wird mit & zugewiesen: $new = &$old -> beide verweisen auf das gleiche Objekt.
 
<pre>
     $objekt = new Objekt("muh", "miau");
     $objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt.
</pre>
 
= Objekte kopieren / referenzieren =
 
Beim Zuweisen an ein neues Objekt $new = $old werden sämtliche Werte kopiert. Will man eine Referenz, so wird mit & zugewiesen: $new = &$old -> beide verweisen auf das gleiche Objekt.

Aktuelle Version vom 29. Februar 2020, 01:16 Uhr

Definitionen

Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft) Objektmethoden = Funktionen

Klassen

Klassen werden vor der Verwendung erstellt und mit include eingebunden. Da in den Funktionen der Klasse nur lokale oder per Parameter übergebene Variablen bekannt sind, müssen auch klasseninterne Variablen mit $this->variable angesprochen werden.

  Klasse -> Objekt:
  class Rechteck {
    var Länge;
    var Breite;
    
    function Fläche () {
      return $this->Länge * $this->Breite;
    } // end function Fläche
  } // end class Rechteck
  
  $testRechteck = new Rechteck;
  $testRechteck->Länge = 5;
  $testRechteck->Breite = 4;
  echo $testRechteck->Fläche(); // ergibt 20
  
  <?php
    class KlassenName {
     // ...
  } // end KlassenName 
  ?>

  Vererbung:
  class Quader extends Rechteck {
    var Höhe;

    function Volumen () {
      return $this->Höhe*Fläche();
    } // end function Volumen
  } // end class Quader

Alle Funktionen und Werte werden vererbt und stehen zur Verfügung

  $testQuader = new Quader;
  $testQuader->Länge = 7;
  $testQuader->Breite = 3;
  $testQuader->Höhe = 5;
  echo $testQuader->Volumen(); // ergibt 105

Konstruktor

Funktion, welche beim Erstellen aufgerufen wird. Kann aber auch ganz normal aufgerufen werden. Name entspricht Klasse. Wird nach der Variablendefinition definiert, damit man diese Variablen auch gleich initialisieren kann. Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig.

  class test {
    var $miau;

    function test() {
      $this->miau = true;
    } // end function test
  } // end class test

Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\

    var $x_ok;
    var $y_ok;
    
    function test ($x = "", $y = "") {
      $this->testVar($x);
      $this->testVar($y);
    } // end function test
    
    function testVar($testvariable) {
      if ($testvariable == "muh") { $this->x_ok = $testvariable }
    } // end function testVar

Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen.

    $x_ok = $this->testVar($x);

    function testVar($testvariable) {
      if ($testvariable == "muh") { 
        return $testvariable 
      }
      else {
        return "";
      }
    } // end function testVar

Mit Werten wird das Objekt folgendermassen erzeugt:

    $objekt = new Objekt("muh", "miau");
    $objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt.

Objekte kopieren / referenzieren

Beim Zuweisen an ein neues Objekt $new = $old werden sämtliche Werte kopiert. Will man eine Referenz, so wird mit & zugewiesen: $new = &$old -> beide verweisen auf das gleiche Objekt.