Menu
Coddy logo textTech

Kapselung

Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy — Lektion 17 von 56.

Kapselung ist ein Prozess des Kombinierens von Daten innerhalb einer Klasse in einer Einheit.

Dies hilft dabei, den direkten Zugriff auf Klassendaten einzuschränken, was uns letztendlich dabei hilft, eine versehentliche Änderung von Daten zu verhindern. 

Sehen wir uns die Kapselung anhand eines einfachen Beispiels in Aktion an. Erstellen Sie ein einfaches Objekt mit öffentlichen Eigenschaften:

const user = {
  name: "John",
  email: "john@example.com"
};

Jeder kann direkt auf diese Eigenschaften zugreifen und sie ändern:

user.name = "Jane"; // Von außen leicht zu ändern
console.log(user.email); // Von außen leicht zugänglich

Ein stärker gekapselter Ansatz verwendet Closures, um Daten zu verbergen:

function createUser(name, email) {
  // Diese Variablen sind privat (gekapselt)
  let userName = name;
  let userEmail = email;
  
  // Rückgabe eines Objekts mit Methoden zur Interaktion mit den privaten Daten
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

Um nun mit den Daten zu interagieren:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// Kann nicht direkt auf die Daten zugreifen
console.log(encapsulatedUser.userName); // undefined
challenge icon

Aufgabe

Ihnen wird Code zur Verfügung gestellt, der Kapselung verwendet, um Benutzerdaten zu schützen. Ihre Aufgabe ist es, eine getAge()-Methode hinzuzufügen, um auf das Alter zuzugreifen.

Tests werden Folgendes prüfen:

  • Die getAge()-Methode existiert
  • Sie gibt das korrekte Alter zurück
  • Die Altersinformation bleibt privat

Erwartete Ausgabe:

john_doe

25

Spickzettel

Kapselung ist ein Prozess, bei dem Daten innerhalb einer Klasse in einer Einheit kombiniert werden und der direkte Zugriff auf diese Daten eingeschränkt wird, um versehentliche Änderungen zu verhindern.

Ohne Kapselung sind Objekteigenschaften öffentlich zugänglich:

const user = {
  name: "John",
  email: "john@example.com"
};

user.name = "Jane"; // Kann direkt geändert werden
console.log(user.email); // Kann direkt aufgerufen werden

Verwendung von Closures zur Kapselung von Daten:

function createUser(name, email) {
  // Private Variablen (gekapselt)
  let userName = name;
  let userEmail = email;
  
  // Öffentliche Methoden zur Interaktion mit privaten Daten
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}

const encapsulatedUser = createUser("John", "john@example.com");
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
console.log(encapsulatedUser.userName); // undefined (private Daten nicht zugänglich)

Probier es selbst

import { createUser } from './createUser.js';

// Testcode - nicht ändern
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Sollte "john_doe" ausgeben
console.log(user.getAge());      // Sollte 25 ausgeben

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung