Objektorientierung in JavaScript/Datenkapselung, Vererbung, Polymorphie/Polymorphie

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
==Was ist Polymorphie?==
Einer Variablen können in Programmiersprachen, die (dynamische) Polymorphie unterstützen, nicht nur ein Objekt einer Klasse, sondern auch Objekte aller Unterklassen zugewiesen werden. Dieses Merkmal der Objektorientierung ist in einer dynamisch typisierten Programmiersprache wie JavaScript natürlich nicht sehr deutlich erkennbar, denn hier kann eine Variable prinzipiell jedes Typs sein.
Deutlich sichtbar ist aber das ''dynamische Binden'': Wird eine Methode eines Objekts aufgerufen, wird erst zur Laufzeit entschieden, welche konkrete Implementierung ausgeführt wird - die Implementierung in der Basis- oder der Unterklasse.
<code id="5427192703042016">
function Alfred() {
  this.meinName = function() {
    return "Ich bin Alfred.";
  }
}
function Berta() {
  this.meinName = function() {
    return "Ich bin Berta.";
  }
}
function Caroline() {
  this.meinName = function() {
    return "Ich bin Caroline.";
  }
}

function entscheideDich(taste) {
  var polymorphesObjekt;
  switch(taste.toUpperCase()) {
    case "A": 
      polymorphesObjekt = new Alfred();
      break;
    case "B":
      polymorphesObjekt = new Berta();
      break;
    case "C":
      polymorphesObjekt = new Caroline();
      break;
    default:
      return "Dieser Buchstabe kann nicht angegeben werden.";
  };
  return polymorphesObjekt.meinName();
}
</code>
<run id="5427192aa993942016">
var result = "";
result += entscheideDich("A") + "\n";
result += entscheideDich("B") + "\n";
result += entscheideDich("C") + "\n";
</run>