Adobe Air (wiwobooks.com Release)
Antwort von OOP auf diese Frage sind Klassen, die man sich als Schablone oder Vorlage für konkrete Objekte vorstellen kann, die aus diesen hervorgehen. Denken Sie beispielsweise an eine Klasse Hund , aus der konkrete Objekte namens Waldi , Bello oder Castor hervorgehen.
Die einzelnen konkreten Hunde, im Zusammenhang mit der Hund-Klasse würden wir in der objektorientierten Programmierung von Hund-Instanzen sprechen, verfügen über Methoden und Eigenschaften, die sie von der Klasse bekommen, z. B. anzahlBeine und fellFarbe als Eigenschaft oder belle() bzw . wedleMitSchwanz() als Methoden. Dabei können Eigenschaften oder Methoden für alle Objekte immer gleich sein (Hunde sollten in der Regel z. B. immer vier Beine haben) und daher als Charakteristikum der Klasse gelten, andere Eigenschaften und Methoden sind zwar bei allen Hunden vorhanden, aber unterschiedlich realisiert, z. B. fellFarbe oder belle(). So bellt der braune Castor vielleicht besonders tief, während das weiße Waldi-Hündchen eher hell und aufgeregt bellt.
Vererbung
Wenn man diesen Gedanken noch weiterverfolgt, kommt man zum nächsten Schritt, nämlich dass es Eigenschaften und Methoden gibt, die alle Instanzen einer Untergruppe gemeinsam haben, die Mitglieder einer anderen Untergruppe aber nicht – z. B. ist die Eigenschaft bodenfreiheit bei der Hund-Kategorie Dackel charakteristisch anders als bei der Hund-Kategorie Dogge.
Schon sind wir bei einem weiteren wesentlichen Merkmal der objektorientierten Programmierung angelangt: dem Prinzip der Vererbung. Dackel , Pinscher und Dogge sind demnach Unterklassen der Klasse Hund und erben die für Hunde charakteristischen Eigenschaften (z. B. vier Beine). Gleichzeitig können sie zwar die Methoden der übergeordneten Klasse Hund (z. B. belle() , wedleMitSchwanz() ) verschieden implementieren, aber als Unterklassen von Hund ist sicher, dass sie über solche Methoden verfügen.
Wenn Sie also Daisy als Instanz der Hund-Unterklasse YorkshireTerrier und Rex als Instanz der Hund-Unterklasse Schaeferhund haben, müssen Sie nicht wissen, welche Rasseeigenschaft das konkrete Tier besitzt – es reicht aus, es jeweils als Hund bellen zu lassen. Dies ist ein weiteres mit dem Prinzip der Vererbung einhergehendes Kennzeichen der objektorientierten Programmierung: der Polymorphismus.
package hundeZwinger {
class Hund {
static const ANZAHL_BEINE = 4;
private var fellFarbe;
private var bodenfreiheit;
public function Hund() {
fellFarbe = 'Strassenkoeterblond'; bodenfreiheit = 20;
}
public function belle() { trace('Wuff, wuff!');
}
public function wedleMitSchwanz() {
trace('der Schwanz dieses Hundes wedelt freundlich');
}
}
}
Listing 1.1 Die Klasse »Hund«
package hundeZwinger {
class Dackel extends Hund { public function Dackel() { fellFarbe = 'dackelbraun'; bodenfreiheit = 5;
}
override public function belle() { trace('Waff! Waff!');
}
override public function wedleMitSchwanz() {
trace('Dieser Dackel wedelt aufgeregt mit dem Schwanz.');
}
}
}
Listing 1.2 Die Unterklasse »Dackel«
package hundeZwinger {
class Dogge extends Hund {
public function DaenischeDogge() { bodenfreiheit = 60;
}
override public function belle() { trace('Wouf, wouf, wouf!');
}
}
}
Listing 1.3 Die Unterklasse »Dogge«
package hundeZwinger {
public class Pinscher {
public function Pinscher() { fellfarbe = 'schwarz'; }
override public function belle() { trace('Kläff, kläff!);
}
}
}
Listing 1.4 Die Unterklasse »Pinscher«
Polymorphismus
Polymorphismus bedeutet, dass Sie eine Unterklasse im Kontext ihrer Überklasse verwenden können und demnach größere Flexibilität erlangen, indem Sie Programmteile (die z. B. einen Hund bellen lassen) mehrfach verwenden können, ohne dass diesem Programmteil die genaue Identität des konkreten Objekts bekannt sein muss. (Ist der Hund jetzt ein Schäferhund, ein Basset oder ein Pudel? Egal, Hauptsache, er bellt!) Beachten Sie in diesem Zusammenhang den signifikanten Unterschied zwischen der Compile-Zeit und der Laufzeit: Zur CompileZeit ist dem Programmteil in unserem Hundebeispiel lediglich bekannt, dass es irgendeinen Hund bellen lassen wird, welche konkrete Art von Hund das sein wird, ist jeweils erst zur Laufzeit bekannt.
Delegation
Durch die Verkapselung von Informationen werden Verantwortlichkeiten für Funktionalität und Verhalten klar aufgeteilt. Einer aufrufenden Komponente kann es egal sein, wie eine aufgerufene Komponente eine Aufgabe umsetzt – Hauptsache ist, dass sie sie
Weitere Kostenlose Bücher