Die e-learning Lernplattform
ichlerns  online
Home > Coden > Klasse

Klasse

Gleiche Eigenschaften und Methoden unterschiedlicher Individuen, die einen gemeinsamen semantischen Zweck haben, können zu einem Begriff zusammengefasst werden der Klasse.

Das ganze funktioniert wie in einer Firma. Die Berufsgruppe entspricht einer Klasse, die eingesetzten Leute in der Firma den Objekten.

Wie wird sie gebildet?

Beispiele:

Aus dieser Klasse können einzelne Objekte erzeugt werden.

Beispiele:

Die Schwierigkeit bei diesem Modell führt zu Fragen wie:

Nur JavaScript: Klasse mit einer Funktion erzeugen

JavaScript-Beispiel Eigenschaften der Klasse Rechteck:

Schritte für das Beispiel Rechteck:

Klassennamen werden immer als Hauptwort geschrieben.

a) Ein Rechteck kann durch die Länge zweier Seiten beschrieben werden.
Die Klasse Rechteck wird wie eine Funktion deklariert:

function Rechteck ()

Die Eigenschaften werden innerhalb der Function mit this. deklariert

Damit weiß jedes neue erzeugte Rechteck, wie breit und hoch es ist.

{
    this.breite;
    this.hoehe;
}

Damit lautet die vollständige Formulierung für das Objekt Rechteck:

function Rechteck (b,h){
    this.breite = b;
    this.hoehe = h;
}

Alles mit this ist öffentlich.

Objekt erzeugen

var trennwand = new Rechteck();

erzeugt ein Objekt der Klasse Rechteck mit den Namen trennwand.

var trennwand = new Rechteck(3,4);

erzeugt das Objekt trennwand von der Klasse Rechteck mit einer Breite von 3 und einer Höhe von 4.

trennwnand.breite = 5

ändert die breite der trennwand auf 5

alert(trennwnad.breite)

meldet die Breite von der trennwand

Beispiel 1

 // Die Klasse
 function Rechteck(b, h) {
     "use strict";
     this.breite = b;
     this.hoehe = h;
 }

 // Das Objekt der Begierde
 var trennwand = new Rechteck(3, 2);

 // breite neu setzen
 trennwand.breite = 12;

 // breite lesen und ausgeben
 alert(trennwand.breite);

Anwendung 1

Beispiel Klasse Person mit einer Methode

Es wird zuerst die Klasse gebildet und dann von dieser Klasse ein Objekt verwendet.

Alles ist öffentlich.

 // Klasse Person
 function Person(name, zahl) {
     this.my_name = name;
     this.my_zahl = zahl;

     this.quadriere = function() {
         this.my_zahl = this.my_zahl * this.my_zahl;
     }
 }

 // Objekte der Klasse Person anlegen
 anton = new Person("Anton", 7);

 // alle öffentlichen Eigenschaften und Methoden ausgeben
 document.write("<hr><b>// new Person(Anton,7) angelegt.</b><br>");
 for (i in anton) {
     document.write("<hr>" + i + " = " + anton[i] + "");
 }

 document.write("<hr>// anton.quadriere()</b>");
 // Die Methode quadriere aufrufen 
 anton.quadriere();

 // alle öffentlichen Eigenschaften und Methoden ausgeben
 for (i in anton) {
     document.write("<hr>" + i + " = " + anton[i] + "");
 }

Anwendung 2

Achtung Objekte können JEDERZEIT zur Laufzeit des Programmes neue Methoden und Eigenschaften erhalten!!! Auch eine nachträgliches hinzufügen von Vererbungsketten ist möglich!

Klasse mit class erzeugen

Alles mit this ist öffentlich.

Die Variable in der Funktion mittels var ist NUR in der Funktion sichtbar und wirkt daher privat!

 // Klasse Person
 class Person {
     constructor(vorname, nachname) {
         this.my_vorname = vorname;
         this.my_nachname = nachname;
         var zahl = 0;
         this.quadriere = function(parameter) {
             zahl = parameter;
             return (zahl * zahl);
         }
 }

 // Objekte der Klasse Person anlegen
 var roland = new Person("Roland", "Geyer");

 // Wert einer Eigenschaft erfahren 
 document.write(roland.my_vorname + "<br>");

 // Die Methode mixen() aufrufen 
 document.write(roland.quadriere(4));

 // alle öffentlichen Eigenschaften ausgeben
 for (i in roland) {
     document.write("<hr>" + i + " = " + roland[i]);
 }
 
 // Will die zahl sehen
 document.write("<br>only privat: " + roland.zahl);

Anwendung 3

Achtung Objekte können auch jetzt JEDERZEIT zur Laufzeit des Programmes neue Methoden und Eigenschaften erhalten!!! Auch eine nachträgliches hinzufügen von Vererbungsketten ist möglich!

Datenkapselung mit set und get und weitere Regelungen

Klasse mit class erzeugen, die private Variablen und private Methoden besitzt, auf die nur mit einer öffentlichen/privilegierten Methode zugegriffen werden kann.

Alles mit this ist öffentlich.

Die Variable in der Funktion mittels var ist NUR in der Funktion sichtbar und wirkt daher privat!

Die private Methode ist nur mit der privilegierten Funktion ansprechbar.

Die entscheidenden privaten Variablen sind von aussen nicht einmal sichtbar!

Wir schreiben eine Klasse, die ihr Alter nicht verraten will und wenn falsch ausgibt:

 // Klasse Person
 class Person {
     constructor(name) {
         // ### Variable ###
         // Variable öffentlich
         this.my_name = name;

         // Variable privat
         var my_alter = "ungeboren";

         // ### Methoden ###
         // Methoden öffentlich / privilegiert
         this.setAlter = function(p) {
             verstecke(p);
         }

         this.getAlter = function() {
            return schummeln();
         }
         
         // Methoden privat
         function verstecke(parameter) {                  
             my_alter =  parameter;                   
         }

         function schummeln() {      
            return my_alter - 10;                    
         }
     }
 }

 // Objekte der Klasse Person anlegen
 anton = new Person("Anton");

 // alle öffentlichen Eigenschaften und Methoden ausgeben
 document.write("<hr><b>// new Person(Anton)</b><br>");
 for (i in anton) {
     document.write("<hr>" + i + " = " + anton[i] + "<br>");
 }

 document.write("<hr><b>// anton.setAlter(45)</b><br>");
 anton.setAlter(45);

 // alle öffentlichen Eigenschaften und Methoden ausgeben
 for (i in anton) {
     document.write("<hr>" + i + " = " + anton[i] + "<br>");
 }

 document.write("<hr><b>// anton.getAlter()</b><br>");
 document.write("<hr>" + anton.getAlter());

Anwendung 4

Idee und Anleitung von Douglas Crockford Webseite zum Thema: Private Members in JavaScript

Achtung Blödsinn ist möglich und wird nicht Fehler-gemeldet - da dynamisches Verhalten!!

Nur eine Instanz der Klasse als Objekt erlauben

durch namenlose (anonyme) Klassen,

werden in JavaScript mit new Object() nachgebildet

< zurück   |   vor >
Nutzungsbedingungen | Datenschutz | Impressum
veröffentlicht unter CC BY 4.0 Autor: Roland Geyer