Lektion 3:
Einführung in die objektorierntierte Programmierung
Seite 37
1. Frage
Was ist in der Objektorientierung ein Objekt?
Ein Objekt in der Programmierung (auch Instanz genannt) ist vergleichbar mit den
greifbaren Obfekten bzw. Gegenständen der realen Welt. Jedes Objekt gehört zu einer bestimmten
Objektgruooe und verfügt über eine bestimmte Anzahl von Eigenschaften, die bei allen Objekten einer
Gruppe vorhanden sind. Im Gegedn satz zur rwalen Welt liegt jedoch keine Betonung auf greifbar, d.h.
auch die Gruppen Flüssigkeiten, Gas und Lebewesen sind nicht ausgeschlossen.
2. Frage
Was ist eine Klasse?
Bei dem Begriff Klasse handelt es sich um den aus dem englischen abgeleiteten
Fachbegriff für eine Objektgruppe. Sie stellt eine Art Bauplan bei der Instanziierung von Objekten dar.
3. Frage
Was sind Attribute?
Attribute sind die Eigenschaften, die ein Objekt hat bzw. haben kann. Sie weden im
Normalfall in der Klasse definiert und mit einem Standardwert befüllt.
4. Frage
Wie können Sie in PHP aus einer Klasse ein Objekt instanzieren?
Dies geht beispielweise, in dem man das Schlüsselwort
new
und den Namen
der Klasse verweendet und das Ergebnis einer Variablen zuweist: $sparbuch = new Konto(),
5. Frage
Auf was bezieht sich sie die Variable $this
?
$this
?Auf das aktuelle Objekt, in dem man sich gerade befindet. Wann immer man in einer
Klasse auf Attribut oder Methode einer Instanz dieser Klasse zugreifgen will, muss man die spezielle
Variable
$this
verwenden.
6. Frage
Was unterscheidet Methoden von Funktionen?
Methoden werden in Klassen definiert und sind an deren Instanzen gebunden. Methoden
können über das Schlüsselwaort
$this
auf die Attribute und ansdere Methoden einer Instanz
zugreifen. Ansonsten verhalten sie sich wie Funktionen.
7. Frage
Wie können Sie eine Methode eines Objektes aufrufen?
Dies geht mit der Schreibweise
$objekt->nameDerMethode()
, wobei $objekt
eine Variable sein muss, in der einen Instanz der gewünschten Klasse abgelegt ist.
Lektion 4:
Getter- und Setter-Methoden
Seite 46
1. Frage
Was unterscheidet Getter- und Setter-Methoden von normalen Methoden?
Technisch gesehen sind es ganz normale Methoden, also nichts.
2. Frage
Warum ist ihr Code besser wartbar, wenn Sie Attribute über Methoden verändern
statt direkt?
Weil man auf diese Weise in das Ändern des Attributs eingreifen kann, um den Wert zu
prüfen oder zu ändern, ohne dass man davon außen etwas bemerkt.
3. Frage
Wie können Sie auf ein Attribut nur lesenden Zugriff erlauben?
Man makiert das Attribut als
protected
und schreibt nur einen Getter.
Lektion 5:
Arbeiten mit Objekten
Seite 54
1. Frage
Wie können Sie eine Methode desselben Objektes von einer anderen Methode aus
aufrufen?
$this->methodenName()
2. Frage
Können Sie Objekte in der Session speichern?
Ja
3. Frage
Was testet der Operator instanceof
?
instanceof
?Er testet, ob eine Variable ein Objekt enthält, das aus einer bestimmten Klasse
erzeugt wurde. Der Code
$test instanceof TestKlasse
überprüft beispielweise, ob in $test
eine Instanze von TestKlasse
abgelegt ist.
Lektion 6:
Virtuelle Attribute
Seite 57
1. Frage
Was unterscheidet virtuelle Attributte von echten Attribute?
Virtuelle Attribute sind nicht ausdrücklich in der Klasse definiert. Sie verfügen
aber über Getter und Setter, die deren Existenz vorgaukeln.
2. Frage
Unter welchen Umständen sind virtuelle Attribute nützlich?
Wenn man mehrere Attribute zur Verfügung stellen will, die sich aber aus einer
einzigen Datenquelle ableiten lassen.
3. Frage
Was ist bei Settern von virtuellen Attributen zu beachten?
Diese Setter verändern nicht die virtuellen, sondern echte Attribute, die selbst
ebenfalls Setter haben. Man muss dafür sorgen, dass sich diese Setter nicht in die Quere kommen.
Lektion 7:
Magische Methoden
Seite 68
1. Frage
Was versteht man unter magic method?
Magische Methoden sind Methoden, die von PHP automatisch aufgerufen werden, wenn ein
vordefiniertes Ereignis eintritt. Sie haben genau festgelegte Namen.
2. Frage
Wann wird die Methode __toString()
eines Objektes aufgerufen?
__toString()
eines Objektes aufgerufen?
Sobald man ein Objekt als String behandelt, also z.B. versucht, es mit
echo
auszugeben.
3. Frage
Wann wird die Methode __construct()
eines Objektes aufgerufen?
__construct()
eines Objektes aufgerufen?
Jedes Mal, wenn ein Objekt erzeugt wird.
4. Frage
Benötigt jede Klasse eine Koknstruktor-Methode?
Es ist keine zwingende Vorraussetzung. Wenn es nichts für einen Kondtruktor zu tun
gibt, kann man ihn selbstverständlich weglassen.
5. Frage
Sie haben ein Person
-Objekt in der Variable $person
und möchten dessen Inhalt als Test verwenden. Was müssen Sie aufrufen?
Person
-Objekt in der Variable $person
und möchten dessen Inhalt als Test verwenden. Was müssen Sie aufrufen?
echo $person
oder $person->__toString()
Lektion 8:
Beziehungen zwischen Objekten
Seite 72
1. Frage
Wie können Sie ein Objekt in einem anderen Objekt ablegen?
Indem das innere Objekt als Attribut des anderen Objekts abgelegt wird.
2. Frage
Wie können Sie auf die Attribute des innen abgelegten Objekts zugreifen?
Über virtuelle Attribute, die auf die Attribute des inneren Objektes zugreifen.
3. Frage
Warum sollten Sie Bevorzugt ganze Objekte als Parameter an Methoden übergeben?
Es macht den code robuster gegen Änderungen, da man weniger Informationen über die eigenen Klassen nach außen dringen lässt.
Lektion 9:
MVC Model-View-Controller
Seite 87
Zusammenfassung
MVC führt eine Aufteilung des PHP-Codes in drei Layer ein. Es gibt je ein Layer für die Modelle (z.B. Datenklassen und Validator-Klassen), für den oder die Controller (koordinieren die Reaktionen auf einen Request) und für die Views (bei uns erfolgt die Präsentation der angeforderten Daten mittels HTML-Templates). Durch diese Teilung werden Sie gerade in größeren Projekten weit besser den Überblick behalten und Ihren Code besser erweitern und warten können.- Model
- View
- Controller
MVC und PHP – Kurz und knackig erklärt
[PHP] MVC Tutorial auf Basis eines Gästebuchs (OOP)
A Beginner's Guide To MVC For The Web
1. Frage
Auf welche Sprachelemente sollte sich der PHP-Code in Template beschränken?
Nach Möglichkeit auf
echo
, Schleifen und if-else
-Anweisungen.
2. Frage
Warum sollten Sie so wenig PHP wie möglich in Templates verwenden?
Um soweit wie möglich HTML- von PHP-Code zu trennen. Auf diese Weise ist der
PHP-Teil übersichtlicher und der HTML-Teil kann leichter von Web-Designern ohne PHP-Kenntnisse angepasst
werden.
3. Frage
Welche Aufgabe hat der Controller?
Ein Controller entscheidet auf Basis des aktuellen Request, welche Aktion ausgeführt
(z.B. welche Modelle hierfür benötigt oder verändert werden müssen) und welches Template zur Anzeige
verwendet werden soll.
4. Frage
Wie kann der Controller entscheiden, welche Aktion er ausführen soll?
Über die Parameter, der beispielweise beim Aufruf einer Seite in der URL übergeben
und in PHP ausgelesen bzw. ausgewertet wird (bei uns
$_GET['action']
).
5. Frage
Warum sollte es eine Standard-Aktion geben?
Falls kein Parameter übergeben wurde, sollte trotzdem eine Aktion ausgeführt
weden.