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”.
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 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