Kommunikation mit Methoden
Folien
Falls keine PDF-Präsentation zu sehen ist: Direktdownload der PDF-Präsentation
Werte an eine Methode übergeben und verarbeiten
Methoden können Parameter anbieten, über die Werte an die Methode übergeben werden können (vgl. Kap. Funktionen in PHP).
function nameAendern($neuerName)
{
$name = $neuerName;
}
oder mit zwei Werten:
function multiplizieren($a, $b)
{
$ergebnis = $a * $b;
}
Wenn wir in einer Klasse eine Methode definieren, unterscheidet sich das Berechnungsergebnis u.U. für die einzelne Objekte. Deshalb verwenden wir $this:
function kontoStandErhoehen($alterKontostand, $einzahlungsbetrag)
{
$this->neuerKontostand = $alterKontostand + $einzahlungsbetrag;
}
Damit werden zur Laufzeit die Werte für $alterKontostand und $einzahlungsbetrag durch Aufrufen der Methode übergeben und für das aktuelle Objekt berechnet. Es gibt keinen “neuen Kontostand” ohne ein zugehöriges Objekt “kontoX”, deshalb muss ein “neuer Kontostand” immer zu einem neuen Objekt gehören (z.B. $objekt1->neuerKontostand oder $objekt2->neuerKontostand). Außerdem bleibt so der Wert für $objekt->neuerKontostand gespeichert, auch wenn die Methode erneut aufgerufen wird.
Werte ausgeben
Methoden führen Anweisungen aus, die i.d.R. als Ergebnis einen Wert/Werte haben (z.B. Berechnungsergebnis: $ergebnis = $a + $b). Die Ausgabe dieser Werte kann auf drei Arten erfolgen:
1) Direkte Ausgabe der Werte
Über einen Befehle wie echo oder print wird der Wert direkt ausgegeben (kann dann aber nicht zu weiteren Verarbeitungen benutzt werden).
2) Speichern der Werte in Attributen
Der Wert wird in einem Attribut des Objekts gespeichert (wie im Beispiel oben $this->neuerKontostand) und kann dann von anderen Klassen, Objekten … entsprechend weiterverarbeitet werden (z.B. als $kunde1->neuerKontostand).
Um einem Objektattribut einen Wert zuzuweisen schreiben wir:
$objekt->einAttribut = 'EinWert';
Um den Wert abzufragen:
$aktuellerWert = $variable->eineEigenschaft;
3) Rückgabewert der Methode definieren
Die Rückgabe erfolgt mit dem Schlüsselwort return. Damit wird die Methode zu einer Funktion, deren Wert das Ergebnis der Berechnung ist.
function addieren($a, $b)
{
$this->ergebnis = $a + $b;
return $this->ergebnis;
}
Den Rückgabewert einer Methode weisen wir also durch folgende Anweisung einer Variablen zu:
$rueckgabeWert = $variable->eineMethodeDieEtwasZurueckgibt();
Lokale und globale Variablen
Variablen, die innerhalb einer Methode definiert werden und nur dort (z.B. zur Zwischenspeicherung der Ergebnisse einzelner Berechnungsschritte) verwendet werden, bezeichnet man als lokale Variablen bzw. Attribute.
Variablen, die von einer Klasse definiert werden und sowohl außerhalb als auch innerhalb einer Klassenmethode gültig sind, heißen globale Variablen/Attribute.
Diese Unterscheidung ist wichtig, weil auf lokale Variablen einer Klassenmethode u.U. nicht von außen zugegriffen werden kann.
class Kunde
{
// Globale Attribute
public $kontostand = 100;
public $zinssatz = 0.035;
function zinsenAddieren()
{
// $zinsbetrag ist eine lokale Variable, die nur temporär zur Speicherung eines Zwischenergebnisses innerhalb der Methode benutzt wird
$zinsbetrag = $this->kontostand * $this->zinssatz;
return $this->kontostand + $zinsbetrag;
}
}
Übungen
Zusätzliche Dateien (Bilder, Klassendiagramme, HTML-Vorlagen) finden Sie in der Materialsammlung. Diese Übungen können Sie als txt-Datei herunterladen.
Übungen: PHP/OOP - Kommunikation mit Methoden
PHP/OOP_5-1: Werte an eine Methode übergeben
Schreiben Sie eine Klasse “Auto”, die folgende Methoden enthält:
• geschwindigkeitSetzen()
• farbeAendern()
Beim Aufruf der Methoden soll der jeweils neue Wert für Geschwindigkeit bzw. für Farbe an die Methode übergeben werden und die entsprechende Änderung vorgenommen werden. Die Ausgabe der Werte erfolgt nach Ihrem Belieben.
PHP/OOP_5-2: Werte übergeben und ausgeben
Gegeben sei folgendes Skript:
class Kunde
{
private $kundenNummer;
public function setKundenNummer($kNummer)
{
$this->kundenNummer = $kNummer;
}
public function getKundenNummer()
{
// METHODE HIER DEFINIEREN (Ausgabe der Kundennummer)
}
}
$kunde = new Kunde;
// HIER ANWEISUNG FORMULIEREN (Kundennummer auf 32 setzen)
echo "Kundennummer ist " . $kunde->getKundenNummer();
Schreiben Sie eine Methode getKundenNummer(), mit der der Wert der (private!) Variablen $kundenNUmmer abgerufen werden kann. Setzen Sie außerdem die Kundennummer auf den Wert 32.