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änglichEin 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); // undefinedAufgabe
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 werdenVerwendung 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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Objekte & das this-Schlüsselwort
Kurze Wiederholung: ObjekteMethoden zu Objekten hinzufügenDas this-Schlüsselwort verstehenKonstruktorfunktionenDas new-SchlüsselwortWiederholungs-Challenge7Vererbung & das extends-Schlüsselwort
VererbungDie „ist-ein“-BeziehungDas extends-SchlüsselwortDie super()-MethodeVererben von Eigenschaften & MethodenWiederholungs-Challenge10Polymorphie
Was ist Polymorphie?Geerbte Methoden überschreibenVerwendung von superWiederholungs-Challenge13Komposition vs. Vererbung
Die "hat-ein"- vs. "ist-ein"-BeziehungDie Grenzen tiefer VererbungObjekte zusammenbauen2Code organisieren
Was sind Module?Exportieren mit exportImportieren mit importDefault- vs. benannte Exports5Kapselung & Zugriff
KapselungÖffentliche & private KlassenfelderPrivate MethodenWiederholungs-Herausforderung8OOP-Code strukturieren
Klassen in Modulen organisieren11Projekt: Ein Shape-Renderer
Setup: Shape-Klasse & ExportCircle-Klasse: Vererbung14Bibliotheksverwaltungssystem
Entwurf der BibliothekBuch-Klasse mit Komposition3Klassen & Objekte
Was ist eine Klasse?Instanzen erstellenEigenschaften und MethodenWiederholungs-Challenge6Projekt: Ein einfaches Bankkonto
Klasse BankAccountEinzahlungen und Auszahlungen9Statische Methoden & Eigenschaften
Klassenebene vs. InstanzebeneStatische EigenschaftenStatische HilfsmethodenWiederholungs-Challenge12Getter & Setter
Die Schlüsselwörter get und setBerechnete EigenschaftenValidierung und SeiteneffekteWiederholungs-Challenge15Abschluss-Herausforderungen
Spielfiguren-BuilderE-Commerce ProduktsystemUniversitäts-VerwaltungssystemSmart-Home-Gerätesystem