Validation de l'auteur du livre
Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 52 sur 56.
Défi
Améliorez le constructeur de la classe Book en ajoutant une validation. Actuellement, Book accepte n'importe quelle valeur pour le paramètre author, mais il ne devrait accepter qu'une instance de Author.
Votre tâche :
- Dans le constructeur de Book, ajoutez une vérification if-else
- Si l'auteur est valide (une instance de la classe Author) en utilisant
author instanceof Author, définissezthis.#author = author - Sinon (l'auteur est invalide) : Journalisez exactement
“Invalid author: must be Author instance”. Définissezthis.#author = null
De cette manière, le livre devrait toujours être créé même avec un auteur invalide.
Essayez vous-même
import { Author } from './Author.js';
import { Book } from './Book.js';
// Tests
const rowling = new Author('J.K. Rowling');
// Cas valide (devrait fonctionner silencieusement)
const validBook = new Book('Harry Potter', rowling);
console.log('Author:', validBook.authorInfo); // Devrait afficher : "Author: J.K. Rowling"
// Cas invalides (devrait enregistrer un message mais toujours créer le livre)
const invalid1 = new Book('Fake Book', 'String Author');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