Sie sind hier 199
Objekte verstehen
Die drive-Methode verbessern
var fiat = {
make: "Fiat",
model: "500",
year: 1957,
color: "graublau",
passengers: 2,
convertible: false,
mileage: 88000,
started: false,
start: function() {
started = true;
},
stop: function() {
started = false;
},
drive: function() {
if (started) {
alert("wrumm wrumm!");
} else {
alert("Sie müssen erst den Motor starten.");
}
}
};
Jetzt wollen wir dafür sorgen, dass sich der Fiat etwas mehr wie ein Auto
verhält. Die meisten Autos können nicht fahren, ohne dass der Motor läuft,
richtig? Wie können wir dieses Verhalten abbilden? Sie brauchen Folgendes:
❏ Eine Eigenschaft mit einem Booleschen Wert, der den Zustand des
Motors speichert (an oder aus).
Ein paar Methoden, um den Motor zu starten und wieder auszumachen.
Einen Bedingungstest in der drive-Methode, der vor dem Losfahren
überprüft, ob der Motor schon läuft.
Wir beginnen, indem wir dem Objekt die Boolesche Eigenschaft
started und die Methoden zum Anlassen und Stoppen
des Motors hinzufügen. Danach erweitern wir die drive-Methode um die Benutzung der Eigenschaft started.
Diese Eigenschaft enthält den aktuellen
Zustand des Motors (true, wenn der Motor
läuft, und false, wenn er aus ist).
Dies ist die Methode, mit der der Motor
des Autos gestartet wird. Sie setzt (im
Moment noch) einfach die Eigenschaft
started auf true.
Und hier ist die Methode, mit der
wir den Motor wieder ausmachen
können. Im Moment setzt sie einfach
die Eigenschaft started auf false.
Hier passiert das interessante Verhalten: Wenn Sie versuchen, mit dem
Auto loszufahren, und der Motor läuft, bekommen wir ein »wrumm
wrumm!«. Ist der Motor noch aus, erhalten wir eine Warnung, die uns
zu verstehen gibt, dass wir das Auto erst anlassen müssen.
200 Kapitel 5
Verhalten kapseln
Ich finde es interessant, dass wir zum
Ändern der Eigenschaft started extra
eine Methode geschrieben haben, anstatt
sie direkt zu ändern. Warum? Bei einer
direkten Änderung bräuchten wir doch
weniger Code, oder?
Gut mitgedacht. Sie haben recht, um den Motor zu
starten, hätten wir den Code
auch durch
ersetzen können. Die Methode zum Starten und Anhalten
des Motors wäre dann nicht mehr nötig.
Warum haben wir also extra die Methoden start und
stop geschrieben, anstatt die Eigenschaft einfach direkt zu
ändern? Die Verwendung einer Methode zum Ändern von
Eigenschaften ist ein weiteres Beispiel für die Kapselung.
Indem wir es dem Objekt überlassen, die Dinge auf seine
Weise zu erledigen, wird der Code wartbarer und ist leichter
zu erweitern. Es ist besser, eine start-Methode zu benutzen,
die weiß, wie man ein Auto startet. Sonst müssten Sie sich
jedes Mal überlegen: »Um das Auto zu starten, müssen wir
die Eigenschaft started auf true setzen.«
Vielleicht denken Sie aber immer noch: »Warum das Ganze?
Um das Auto zu starten, muss doch bloß eine Eigenschaft
auf true gesetzt werden …«. Jetzt stellen Sie sich aber mal
eine komplexere start-Methode vor, die überprüft, ob die
Sicherheitsgurte angelegt wurden, genug Benzin im Tank ist,
die Batterie noch stark genug ist und die Motortemperatur
nicht zu hoch. Das wollen Sie nicht alles im Kopf behal-
ten, nur um ein Auto zu starten. Sie möchten einfach eine
praktische Methode aufrufen können, die die Dinge für Sie
erledigt. Durch die Kapselung der Details in einer Metho-
de haben Sie eine einfache Möglichkeit, ein Objekt für Sie
arbeiten zu lassen, ohne sich um die Einzelheiten kümmern
zu müssen.
fiat.start();
fiat.started = true;

Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.