Validação do Autor do Livro
Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy — lição 52 de 56.
Desafio
Melhore o construtor da classe Book adicionando validação. Atualmente, o Book aceita qualquer valor para o parâmetro author, mas ele deve aceitar apenas uma instância de Author.
Sua tarefa:
- No construtor de Book, adicione uma verificação if-else
- Se o autor for válido (uma instância da classe Author) usando
author instanceof Author, definathis.#author = author - Caso contrário (autor inválido): Registre exatamente
“Invalid author: must be Author instance”. Definathis.#author = null
Dessa forma, o livro ainda deve ser criado mesmo com um autor inválido.
Experimente você mesmo
import { Author } from './Author.js';
import { Book } from './Book.js';
// Testes
const rowling = new Author('J.K. Rowling');
// Caso válido (deve funcionar silenciosamente)
const validBook = new Book('Harry Potter', rowling);
console.log('Author:', validBook.authorInfo); // Deve exibir: "Author: J.K. Rowling"
// Casos inválidos (deve registrar a mensagem, mas ainda criar o livro)
const invalid1 = new Book('Fake Book', 'String Author');Todas as lições de Programação Orientada a Objetos
1Objetos e a Palavra-chave this
Revisão Rápida: ObjetosAdicionando Métodos a ObjetosEntendendo a Palavra-chave thisFunções ConstrutorasA Palavra-chave newDesafio de Recapitulação7Herança e a palavra-chave extends
HerançaA relação "é um"A palavra-chave extendsO método super()Herdando propriedades e métodosDesafio de recapitulação10Polimorfismo
O que é Polimorfismo?Sobrescrevendo Métodos HerdadosUsando superDesafio de Recapitulação13Composição vs. Herança
A relação "tem um" vs. "é um"Os limites da herança profundaConstruindo objetos2Organizando o Código
O que são Módulos?Exportando com exportImportando com importExportações Default vs. Nomeadas5Encapsulamento e Acesso
EncapsulamentoCampos de Classe Públicos e PrivadosMétodos PrivadosDesafio de Recapitulação8Organizando Código POO
Organizar Classes em Módulos11Projeto: Um Renderizador de Formas
Configuração: Classe Shape e ExportaçãoHerança da Classe Circle14Sistema de Gerenciamento de Biblioteca
Projetando a BibliotecaClasse Livro com Composição