«Ha-un» vs. «è-un»
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 47 di 56.
Nella programmazione orientata agli oggetti, esistono due tipi principali di relazioni tra gli oggetti: "ha un" (composizione) ed "è un" (ereditarietà). Mentre l’ereditarietà crea gerarchie genitore-figlio, la composizione costruisce oggetti combinando componenti più piccoli e specializzati.
Per prima cosa, cerchiamo di capire la relazione "è un" attraverso l'ereditarietà:
class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log(`${this.name} is eating.`);
}
}
// Dog "is-a" Animal - relazione di ereditarietà
class Dog extends Animal {
bark() {
console.log(`${this.name} says woof!`);
}
}Ora esaminiamo la relazione "has-a" tramite la composizione:
class Engine {
start() {
console.log("Engine started");
}
}
// Car "has-a" Engine - relazione di composizione
class Car {
constructor() {
this.engine = new Engine(); // Composizione
}
startCar() {
this.engine.start();
console.log("Car is running");
}
}La differenza fondamentale:
- "è-un" (ereditarietà): un Dog È UN Animal
- "ha-un" (composizione): un Car HA UN Engine
Sfida
Ti vengono date le classi dei componenti (Processor, Memory) e gran parte della classe Computer. Il tuo compito è completare il costruttore nel file computer.js:
- Crea una proprietà
processorusando la classeProcessor - Crea una proprietà
memoryusando la classeMemory - Passa processorSpeed al costruttore di Processor e memorySize al costruttore di Memory
Provalo tu
import { Computer } from './computer.js';
const myComputer = new Computer(3.5, 16);
myComputer.start();Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Oggetti e la keyword this
Ripasso rapido: oggettiAggiungere metodi agli oggettiCapire la keyword thisFunzioni costruttriciLa keyword newSfida di ripasso7Ereditarietà e parola chiave extends
EreditarietàLa relazione «è un»La parola chiave extendsIl metodo super()Ereditare proprietà e metodiSfida di ripasso13Composizione vs. ereditarietà
«Ha-un» vs. «è-un»I limiti dell’ereditarietà profondaCostruire oggetti2Organizzare il codice
Cosa sono i moduli?Esportare con exportImportare con importExport predefiniti vs. export nominati5Incapsulamento e accesso
IncapsulamentoCampi di classe pubblici e privatiMetodi privatiSfida di riepilogo8Organizzare il codice OOP
Organizzare le classi in moduli11Progetto: Un renderizzatore di forme
Configurazione: classe Shape ed esportazioneEreditarietà della classe CircleOverride e metodo areaContatore statico di Shape14Sistema di gestione della biblioteca
Progettare la bibliotecaClasse Book con composizioneValidazione dell'autore del libroEsercitati da solo: Compilatore JavaScript online