Aus dem Kurs: Grundlagen der Programmierung: Objektorientierte Programmierung (OOP)
Codebeispiel zu »Konstruktor«
Aus dem Kurs: Grundlagen der Programmierung: Objektorientierte Programmierung (OOP)
Codebeispiel zu »Konstruktor«
Ich habe hier eine Klasse namens Piece, also Spielfigur, und die hat vier Eigenschaften, einen Typ, also ob es König oder Dame ist usw., eine Farbe, schwarz oder weiß, und dann den x- bzw. y-Wert für die Position auf dem Spielfeld. Ich habe das hier mit $rank und $file bezeichnet, weil es die offiziellen englischen Bezeichnungen sind für die Position auf einem Schachfeld. Und in dem Moment, indem ich jetzt von dieser Klasse ein Objekt hier unten erzeuge mit dem Schlüsselwort "new Piece", übergebe ich vier Parameter, vier Informationen, und zwar: Um welchen Typ handelt es sich? Welche Farbe, schwarz oder weiß? Und wo soll sich denn diese Figur befinden? Das speichere ich dann hier in einer Variable. Und in dem Moment, in dem ich dieses Objekt instanziiere von dieser Klasse, wird eine Funktion aufgerufen, die hat einen festgelegten Namen, nämlich __construct(). Das ist von Programmiersprache zur Programmiersprache anders. Oftmals ist es recht ähnlich. In PHP hat diese Funktion eben genau diesen Namen, der ist festgelegt. D.h., ich kann bei dieser Funktion den Namen nicht frei vergeben, sondern anhand des Namens erkennt hier die Programmiersprache: "Hey, das ist der Konstruktor. Diese Funktion soll ausgeführt werden in dem Moment, in dem ein Objekt von der Klasse instanziiert wird." Und dieser Konstruktor bekommt vier Parameter: $type, $color, $rank und $file, und übergibt diese Informationen hier an die Werte innerhalb der Klasse. Warum muss ich das machen? Nun, wenn ich eine neue Spielfigur auf das Spielfeld setze, muss ich natürlich wissen: Ja, was ist das für eine Spielfigur? Ist es der König? Ist es der Läufer? Ist es ein Bauer? Wie auch immer. Welche Farbe hat diese Spielfigur und wohin soll denn diese Spielfigur gesetzt werden? Und diese Werte hier, die kommen hier oben im Konstruktor in diesen Variablen an. Das Grundprinzip ist hier in allen Programmiersprachen gleich. Ich übergebe die Werte, die kommen hier oben an Und jetzt müssen diese Werte ja noch zu Eigenschaften dieses Objektes werden. D.h., in diesem $type ist ja bisher der König gespeichert. Und dieses $type muss ich jetzt dauerhaft in dieses Objekt rein speichern. Und dafür gibt es hier das Schlüsselwort $this, gefolgt von einem Pfeil. Das ist PHP-spezifisch, aber in vielen Programmiersprachen sehr vergleichbar. D.h., mit $this kann ich eben nicht auf diese Klasse referenzieren, sondern auf dieses Objekt hier unten. Das bedeutet, immer, wenn ich hier $this schreibe, dann meine ich ganz konkret den Inhalt der Variablen $type in diesem Objekt. Und wenn ich jetzt ein zweites Objekt davon z.B. ableite, also sage es gibt hier $piece1, muss ich natürlich auch den Variablennamen ändern und jetzt möchte ich z.B. den weißen König hier draufsetzen, der wird dann wahrscheinlich auf 7 stehen und hier auf 3. Dann habe ich natürlich einmal $this->color ist "black" und einmal ist $this->color "white". D.h., achten Sie darauf, das hier wurde übergeben im Konstruktor und dieses $this, das referenziert aber schon auf den gespeicherten Wert im Objekt.
Inhalt
-
-
-
-
(Gesperrt)
Vererbung1 Min. 9 Sek.
-
(Gesperrt)
Codebeispiel zu »Vererbung«2 Min. 52 Sek.
-
(Gesperrt)
Vererbung im UML-Diagramm1 Min. 29 Sek.
-
(Gesperrt)
Konstruktoren1 Min. 23 Sek.
-
Codebeispiel zu »Konstruktor«3 Min. 21 Sek.
-
(Gesperrt)
Sichtbarkeit und Zugriffskontrolle4 Min. 17 Sek.
-
(Gesperrt)
Challenge: Konstruktor in Pseudocode schreiben1 Min. 24 Sek.
-
(Gesperrt)
Solution: Konstruktor in Pseudocode schreiben1 Min. 24 Sek.
-
(Gesperrt)
-
-