Kapselung
Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy. Lektion 17 von 56.
Kapselung ist ein Prozess, bei dem Daten innerhalb einer Klasse zu einer Einheit zusammengefasst werden.
Dies hilft dabei, den direkten Zugriff auf Klassendaten einzuschränken, und trägt letztendlich dazu bei, versehentliche Änderungen an den Daten zu verhindern.
Sehen wir uns die Kapselung anhand eines einfachen Beispiels in Aktion an. Erstelle 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"; // Leicht von außen zu ändern
console.log(user.email); // Leicht von außen 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;
// Gibt ein Objekt mit Methoden zurück, um mit den privaten Daten zu interagieren
return {
getName: function() {
return userName;
},
getEmail: function() {
return userEmail;
},
setName: function(newName) {
userName = newName;
}
};
}
const encapsulatedUser = createUser("John", "john@example.com");Nun, um 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
Dir wurde Code gegeben, der Kapselung verwendet, um Benutzerdaten zu schützen. Deine Aufgabe besteht darin, eine getAge()-Methode hinzuzufügen, um auf das Alter zuzugreifen.
Die Tests überprüfen:
- Die
getAge()-Methode ist vorhanden - Sie gibt das korrekte Alter zurück
- Die Altersinformationen bleiben privat
Erwartete Ausgabe:
john_doe
25
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: VererbungOverriding & Area-MethodeStatischer Shape-Zähler14Bibliotheksverwaltungssystem
Entwurf der BibliothekBuch-Klasse mit KompositionValidierung der Buchautoren3Klassen & Objekte
Was ist eine Klasse?Instanzen erstellenEigenschaften und MethodenWiederholungs-Challenge6Projekt: Ein einfaches Bankkonto
Klasse BankAccountEinzahlungen und AuszahlungenKontostand als privates Feld9Statische 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Übe selbstständig: Online-JavaScript-Compiler