Menu
Coddy logo textTech

Les relations « has-a » vs « is-a »

Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy. Leçon 47 sur 56.

En programmation orientée objet, il existe deux types principaux de relations entre les objets : « a un » (composition) et « est un » (héritage). Alors que l'héritage crée des hiérarchies parent-enfant, la composition construit des objets en combinant des composants plus petits et ciblés.

Commençons par comprendre la relation « est un » (is-a) à travers l'héritage :

class Animal {
  constructor(name) {
    this.name = name;
  }
  
  eat() {
    console.log(`${this.name} is eating.`);
  }
}

// Dog « est un » Animal - relation d'héritage
class Dog extends Animal {
  bark() {
    console.log(`${this.name} says woof!`);
  }
}

Examinons maintenant la relation « a un » (has-a) à travers la composition :

class Engine {
  start() {
    console.log("Engine started");
  }
}

// La voiture « a un » moteur - relation de composition
class Car {
  constructor() {
    this.engine = new Engine(); // Composition
  }
  
  startCar() {
    this.engine.start();
    console.log("Car is running");
  }
}

La différence clé :

  • « est un » (héritage) : Un Chien EST UN Animal
  • « a un » (composition) : Une Voiture A UN Moteur
challenge icon

Défi

Les classes des composants (Processor, Memory) et la majeure partie de la classe Computer vous sont fournies. Votre tâche consiste à terminer le constructeur dans le fichier computer.js :

  1. Créez une propriété processor à l’aide de la classe Processor
  2. Créez une propriété memory à l’aide de la classe Memory
  3. Passez processorSpeed au constructeur de Processor et memorySize au constructeur de Memory

Essayez vous-même

import { Computer } from './computer.js';

const myComputer = new Computer(3.5, 16);
myComputer.start();
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur JavaScript en ligne