Objektorientierung in JavaScript/Objekte und Klassen/Das Objekt
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</language>
==Erstellen von Objekten in JavaScript==
Ein Objekt besitzt Attribute (Eigenschaften) und Methoden, welche gemeinsam in einem Objekt vorhanden sind. Attribute beschreiben die Bedeutung und die Ausprägung eines Merkmals des Objekts, beispielsweise Seitenanzahl = 764. Die Gesamtheit aller Werte der Attribute nennt man Zustand des Objekts. Methoden definieren das Verhalten bzw. die Funktionalität eines Objekts. Es können zum Beispiel die Methoden einschalten(), drucken() oder warnungAusgeben() eines Druckers beschrieben (spezifiziert) und umgesetzt (implementiert) werden. Des Weiteren wird jedes Objekt durch eine eindeutige Identität beschrieben, welches es von anderen Objekten unterscheidet, auch wenn beide den gleichen Zustand haben.<br/><br/>
Objekte können durch Object Literals erstellt werden. Alle Attribute und Methoden werden zwischen geschweiften Klammern definiert. Sie werden in Schlüssel-Wert-Paaren gespeichert. Schlüssel und Werte werden durch einen Doppelpunkt getrennt.
<code id="56f902f08bf65">
var maria = {
augenfarbe : "blau",
haarfarbe : "braun",
groesse : 1.71,
sprechen : function(aussage) {
return "Maria: \"" + aussage+ "\"";
}
};
</code>
<run id="56f902f08bfd6">
var aussage= "Ich bin " + maria.groesse + "m groß.";
maria.sprechen(aussage);
</run>
Als Schlüssel können Strings oder Numbers verwendet werden.
Eine zweite Möglichkeit bietet der Aufruf des Konstruktors von Object. Danach werden weitere Attribute und Methoden hinzugefügt.
<code id="a12bctu2015bg1">
var maria = new Object();
maria.augenfarbe = "blau";
maria.haarfarbe = "braun";
</code>
<run id="a12bctu2015bg2">
maria.haarfarbe;
</run>
Der Zugriff auf Werte des Objekts erfolgt durch Punkt- oder Klammer-Notation.
<run id="4hcfnep1ke1">
maria.augenfarbe == maria["augenfarbe"];
</run>
==Darstellung von Objekten in UML==
[[Bild:Flogerlinghoff_UML_Objekt.JPG|center|180px]]
In der Modellierungssprache UML (Unified Modeling Language) werden Objekte als Rechtecke dargestellt. Der Name des Objekts wird unterstrichen. Die Attribute und die Methoden werden durch horizontale Striche voneinander getrennt. Werte werden den Attributen durch ein "=" zugeordnet. Beim einem Methodenaufruf werden die Parameter in die Klammern hinter ein "in" geschrieben.
==Botschaften zwischen Objekten==
Objekte können untereinander interagieren, das heißt Nachrichten austauschen.
<code id="54hdfghjk4">
var person1 = {
vorname : "Alex",
nachname : "Alexos",
heiraten : function(gefragtePerson) {
return "Willst du mich heiraten, " + gefragtePerson.vorname+ "? " + gefragtePerson.antwort(this);
}
};
var person2 = {
vorname: "Alexandra",
nachname : "Alexis",
antwort: function(fragendePerson) {
if (fragendePerson.vorname == "Alex" && fragendePerson.nachname == "Alexos") {
return "Ja!";
} else {
return "Nein.";
}
}
};
</code>
<run id="54hdfghjk5">
person1.heiraten(person2);
</run>
Alex sendet Alexandra die Aufforderung, die Funktion ''antworten'' auszuführen und übergibt mit ''this'' sich selbst als Parameter. Alexandra überprüft, ob er es wirklich ist, und sendet dann eine Nachricht mit ihrer Antwort zurück an Alex.