La relation « est un »
Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 25 sur 56.
La relation « est un » est un test simple pour déterminer quand l'héritage est logique. Si vous pouvez dire « X est un Y » et que cela semble correct, alors X devrait probablement hériter de Y.
Correct (Utilisez l'héritage) :
- « Un chien est un Animal » →
class Dog extends Animal
- "Une voiture est un Véhicule" →
class Car extends Vehicle
- "Un manuel scolaire est un livre" →
class Textbook extends Book
Incorrect (N'utilisez pas l'héritage) :
- « Un Conducteur est une Voiture » → Non, un conducteur utilise une voiture
- "Une roue est une voiture" → Non, une roue fait partie d'une voiture
- "Un étudiant est une salle de classe" → Non, un étudiant est dans une salle de classe
Par exemple, considérons deux objets :
// Base class - what they all ARE
class Book {
constructor(title, author, pages) {
this.title = title;
this.author = author;
this.pages = pages;
}
read() {
console.log(`Reading ${this.title} by ${this.author}`);
}
}
// Un Roman EST-UN Livre (héritage correct)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
// Utilisation des classes
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - hérité de Book
Défi
On vous donne une classe ElectronicDevice et une classe Smartphone. Un Smartphone est un type de ElectronicDevice avec des fonctionnalités supplémentaires. Votre tâche consiste à créer un objet `myPhone` avec la marque "Samsung" et le modèle “Galaxy S23”.
Aide-mémoire
La relation "est un" est un test pour déterminer quand l'héritage est logique. Si vous pouvez dire "X est un Y" et que cela semble correct, alors X devrait hériter de Y.
Exemples corrects (utiliser l'héritage) :
- "Un chien est un animal" →
class Dog extends Animal - "Une voiture est un véhicule" →
class Car extends Vehicle - "Un manuel scolaire est un livre" →
class Textbook extends Book
Exemples incorrects (ne pas utiliser l'héritage) :
- "Un conducteur est une voiture" → Non, un conducteur utilise une voiture
- "Une roue est une voiture" → Non, une roue fait partie d'une voiture
- "Un étudiant est une salle de classe" → Non, un étudiant est dans une salle de classe
Exemple :
// Classe de base
class Book {
constructor(title, author, pages) {
this.title = title;
this.author = author;
this.pages = pages;
}
read() {
console.log(`Reading ${this.title} by ${this.author}`);
}
}
// Un roman EST UN livre (héritage correct)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - hérité de Book
Essayez vous-même
import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';
// À FAIRE : Créer un objet `myPhone` avec la marque "Samsung" et le modèle “Galaxy S23”.
// Code de test - ne pas modifier
console.log(myPhone.turnOn()); // Devrait afficher "Samsung Galaxy S23 is now ON"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 Circle14Système de gestion de bibliothèque
Conception de la bibliothèqueClasse Book avec composition3Classes 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