Die "hat-ein"- vs. "ist-ein"-Beziehung
Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy — Lektion 47 von 56.
In der objektorientierten Programmierung gibt es zwei Hauptarten von Beziehungen zwischen Objekten: „has-a“ (Komposition) und „is-a“ (Vererbung). Während Vererbung Eltern-Kind-Hierarchien erstellt, baut die Komposition Objekte auf, indem sie kleinere, fokussierte Komponenten kombiniert.
Lassen Sie uns zunächst die „is-a“-Beziehung durch Vererbung verstehen:
class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log(`${this.name} is eating.`);
}
}
// Dog „is-a“ Animal – Vererbungsbeziehung
class Dog extends Animal {
bark() {
console.log(`${this.name} says woof!`);
}
}Schauen wir uns nun die „hat-ein“-Beziehung durch Komposition an:
class Engine {
start() {
console.log("Engine started");
}
}
// Auto „hat-einen“ Motor - Kompositionsbeziehung
class Car {
constructor() {
this.engine = new Engine(); // Komposition
}
startCar() {
this.engine.start();
console.log("Car is running");
}
}Der entscheidende Unterschied:
- "is-a" (Vererbung): Ein Hund IST EIN Tier
- "has-a" (Komposition): Ein Auto HAT EINEN Motor
Aufgabe
Dir werden die Komponentenklassen (Processor, Memory) und der Großteil der Computer-Klasse zur Verfügung gestellt. Deine Aufgabe ist es, den Konstruktor in der Datei computer.js zu vervollständigen:
- Erstelle eine
processor-Eigenschaft unter Verwendung derProcessor-Klasse - Erstelle eine
memory-Eigenschaft unter Verwendung derMemory-Klasse - Übergib processorSpeed an den Processor-Konstruktor und memorySize an den Memory-Konstruktor
Spickzettel
In der objektorientierten Programmierung gibt es zwei Hauptarten von Beziehungen zwischen Objekten:
- "is-a"-Beziehung (Vererbung): Erstellt Eltern-Kind-Hierarchien, bei denen eine Unterklasse eine Elternklasse erweitert
- "has-a"-Beziehung (Komposition): Baut Objekte durch die Kombination kleinerer, fokussierter Komponenten auf
Beispiel für Vererbung ("is-a"):
class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log(`${this.name} is eating.`);
}
}
// Dog "ist-ein" Animal
class Dog extends Animal {
bark() {
console.log(`${this.name} says woof!`);
}
}Beispiel für Komposition ("has-a"):
class Engine {
start() {
console.log("Engine started");
}
}
// Car "hat-ein" Engine
class Car {
constructor() {
this.engine = new Engine(); // Komposition
}
startCar() {
this.engine.start();
console.log("Car is running");
}
}Probier es selbst
import { Computer } from './computer.js';
const myComputer = new Computer(3.5, 16);
myComputer.start();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