Die „ist-ein“-Beziehung
Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy — Lektion 25 von 56.
Die „is-a“-Beziehung ist ein einfacher Test, um festzustellen, wann Vererbung sinnvoll ist. Wenn man sagen kann „X ist ein Y“ und es sich richtig anhört, dann 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 Student ist ein Klassenzimmer" → Nein, ein Student 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 Roman IST-EIN Buch (korrekte Vererbung)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
// Verwendung der Klassen
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - geerbt von Book
Aufgabe
Dir wird eine ElectronicDevice Klasse und eine Smartphone Klasse gegeben. Ein Smartphone ist ein Typ von ElectronicDevice mit zusätzlichen Funktionen. Deine Aufgabe ist es, ein `myPhone` Objekt mit der Marke "Samsung" und dem Modell “Galaxy S23” zu erstellen.
Spickzettel
Die "ist-ein"-Beziehung ist ein Test, um festzustellen, wann Vererbung sinnvoll ist. Wenn man sagen kann "X ist ein Y" und es richtig klingt, dann sollte X von Y erben.
Korrekte Beispiele (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
Falsche Beispiele (keine Vererbung 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
Beispiel:
// Basisklasse
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 Roman IST-EIN Buch (korrekte Vererbung)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - von Book geerbt
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 ä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: 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