Objektorientierung: Unterschied zwischen den Versionen

Aus m-wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft)\ Objektmethoden = Funktionen\ \ - Klassen werden vor der Verwendung erstellt und m…“)
 
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
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, \
Klassen werden vor der Verwendung erstellt und mit include eingebunden.
    müssen auch klasseninterne Variablen mit $this->variable angesprochen werden. \
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
   Vererbung:\
    
   class Quader extends Rechteck {\
  <?php
     var Höhe;\
    class KlassenName {
    \
    // ...
     function Volumen () {\
  } // end KlassenName
       return $this->Höhe*Fläche();\
  ?>
     } // end function Volumen\
 
   } // end class Quader\
   Vererbung:
  \
   class Quader extends Rechteck {
  Alle Funktionen und Werte werden vererbt und stehen zur Verfügung\
     var Höhe;
  \
 
   $testQuader = new Quader;\
     function Volumen () {
   $testQuader->Länge = 7;\
       return $this->Höhe*Fläche();
   $testQuader->Breite = 3;\
     } // end function Volumen
   $testQuader->Höhe = 5;\
   } // end class Quader
   echo $testQuader->Volumen(); // ergibt 105\
</pre>
  \
 
  Konstruktor:\
Alle Funktionen und Werte werden vererbt und stehen zur Verfügung
  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\
<pre>
  auch gleich initialisieren kann.\
   $testQuader = new Quader;
  Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies\
   $testQuader->Länge = 7;
  mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig.\
   $testQuader->Breite = 3;
  \
   $testQuader->Höhe = 5;
   class test {\
   echo $testQuader->Volumen(); // ergibt 105
     var $miau;\
</pre>
    \
 
     function test() {\
Konstruktor =
       $this->miau = true;\
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
     } // end function test\
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.
   } // end class test\
 
  \
<pre>
  Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\
   class test {
     var $x_ok;\
     var $miau;
     var $y_ok;\
 
     \
     function test() {
     function test ($x = "", $y = "") {\
       $this->miau = true;
       $this->testVar($x);\
     } // end function test
       $this->testVar($y);\
   } // end class test
     } // end function test\
</pre>
     \
 
     function testVar($testvariable) {\
Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\
       if ($testvariable == "muh") { $this->x_ok = $testvariable }\
 
     } // end function testVar\
<pre>
     \
     var $x_ok;
    Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen.\
     var $y_ok;
    \
      
     $x_ok = $this->testVar($x);\
     function test ($x = "", $y = "") {
        \
       $this->testVar($x);
     function testVar($testvariable) {\
       $this->testVar($y);
       if ($testvariable == "muh") { \
     } // end function test
         return $testvariable \
      
       }\
     function testVar($testvariable) {
       else {\
       if ($testvariable == "muh") { $this->x_ok = $testvariable }
         return "";\
     } // end function testVar
       }\
</pre>
     } // end function testVar\
      
    \
Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen.
    Mit Werten wird das Objekt folgendermassen erzeugt:\
 
    \
<pre>
     $objekt = new Objekt("muh", "miau");\
     $x_ok = $this->testVar($x);
     $objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt.\
 
    \
     function testVar($testvariable) {
    \
       if ($testvariable == "muh") {  
  Objekte kopieren / referenzieren:\
         return $testvariable  
  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.
       else {
         return "";
       }
     } // end function testVar
</pre>
 
Mit Werten wird das Objekt folgendermassen erzeugt:
 
<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.