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
Défi
On vous donne les classes de composants (Processor, Memory) et la majeure partie de la classe Computer. Votre tâche consiste à compléter le constructeur dans le fichier computer.js :
- Créez une propriété
processoren utilisant la classeProcessor - Créez une propriété
memoryen utilisant la classeMemory - 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();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
1Objets et le mot-clé this
Révision rapide : Les objetsAjouter des méthodes aux objetsComprendre le mot-clé thisFonctions constructeursLe mot-clé newDéfi récapitulatif7L'héritage et le mot-clé extends
L'héritageLa relation « est un »Le mot-clé extendsLa méthode super()Hériter des propriétés et méthodesDéfi récapitulatif10Polymorphisme
Qu'est-ce que le polymorphisme ?Redéfinition de méthodes héritéesUtiliser superDéfi récapitulatif13Composition vs Héritage
Les relations « has-a » vs « is-a »Les limites de l'héritage profondConstruction d'objets2Organisation du code
Qu'est-ce qu'un module ?Exporter avec exportImporter avec importExports par défaut vs nommés5Encapsulation & Accès
EncapsulationChamps de classe publics et privésMéthodes privéesDéfi récapitulatif8Organisation du code POO
Organiser les classes en modules11Projet : Un moteur de rendu de formes
Configuration : Classe Shape et ExportationHéritage de la classe CircleRedéfinition et méthode AreaCompteur de formes statique14Système de gestion de bibliothèque
Conception de la bibliothèqueClasse Book avec compositionValidation de l'auteur du livre3Classes et Objets
Qu'est-ce qu'une classe ?Créer des instancesPropriétés et méthodesDéfi récapitulatif9Méthodes et propriétés statiques
Niveau classe vs Niveau instancePropriétés statiquesMéthodes utilitaires statiquesDéfi récapitulatif