Menu
Coddy logo textTech

«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
challenge icon

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:

  1. Crea una proprietà processor usando la classe Processor
  2. Crea una proprietà memory usando la classe Memory
  3. 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();
quiz iconMettiti alla prova

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

Esercitati da solo: Compilatore JavaScript online