Die „ist-ein“-Beziehung
Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy. Lektion 25 von 56.
Die „Ist-ein“-Beziehung ist ein einfacher Test, um festzustellen, wann Vererbung sinnvoll ist. Wenn du sagen kannst: „X ist ein Y“ und es sich richtig anhört, sollte X wahrscheinlich von Y erben.
Richtig (Vererbung verwenden):
- „Ein Hund ist ein Tier“ →
class Dog extends Animal
- „Ein Auto ist ein Fahrzeug“ →
class Car extends Vehicle
- „Ein Lehrbuch ist ein Buch“ →
class Textbook extends Book
Falsch (Vererbung nicht verwenden):
- „Ein Fahrer ist ein Auto“ → Nein, ein Fahrer benutzt ein Auto
- „Ein Rad ist ein Auto“ → Nein, ein Rad ist Teil eines Autos
- „Ein Schüler ist ein Klassenzimmer“ → Nein, ein Schüler ist in einem Klassenzimmer
Betrachten wir zum Beispiel zwei Objekte:
// Basisklasse – was sie alle SIND
class Book {
constructor(title, author, pages) {
this.title = title;
this.author = author;
this.pages = pages;
}
read() {
console.log(`Reading ${this.title} by ${this.author}`);
}
}
// Ein Novel IST EIN Book (korrekte Vererbung)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
// Die Klassen verwenden
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - von Book geerbt
Aufgabe
Dir sind eine Klasse ElectronicDevice und eine Klasse Smartphone gegeben. Ein Smartphone ist eine Art von ElectronicDevice mit zusätzlichen Funktionen. Deine Aufgabe ist es, ein `myPhone`-Objekt mit der Marke "Samsung" und dem Modell “Galaxy S23” zu erstellen.
Probier es selbst
import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';
// TODO: Erstelle ein `myPhone`-Objekt mit der Marke "Samsung" und dem Modell “Galaxy S23”.
// Testcode – nicht verändern
console.log(myPhone.turnOn()); // Sollte "Samsung Galaxy S23 is now ON" ausgebenDiese 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