Ficha 02 · Orientação a objetos, design patterns, frameworks e testes
Exercício 1 · Classe base e herança
Cria uma classe ConteudoDigital com um construtor que recebe titulo e um método render() que devolve "Conteúdo genérico: " + titulo. Depois cria uma classe Imagem que herda de ConteudoDigital, recebe também url e sobrepõe render() para devolver "Imagem: " + titulo.
Exercício 2 · Identificar polimorfismo
Neste código, explica onde está o polimorfismo e o que aconteceria se, amanhã, se criasse uma nova classe Audio com o seu próprio render().
const conteudos = [new Video("Aula 1"), new Quiz("Teste"), new Imagem("Capa")];
for (const item of conteudos) {
console.log(item.render());
}
Exercício 3 · Reconhecer design patterns
Indica o design pattern usado em cada excerto e a categoria a que pertence (criação, estrutura ou comportamento):
(a)
function criarConteudo(tipo, titulo) {
if (tipo === "video") return new Video(titulo);
if (tipo === "quiz") return new Quiz(titulo);
}
(b)
document.addEventListener("conteudoTerminado", () => atualizarEstatisticas());
Exercício 4 · Framework vs biblioteca
Um colega diz "React e uma função de formatar datas são a mesma coisa, os dois são só código que outra pessoa escreveu". Corrige-o, usando o critério de "quem controla o fluxo".
Exercício 5 · Adaptar código genérico a um novo contexto
A classe ConteudoDigital do exercício 1 foi pensada para um curso. Sem alterar essa classe, adapta-a a um novo contexto, um catálogo de produtos de uma loja online, criando uma subclasse Produto com preco e um render() próprio.
Exercício 6 · Testar um método herdado
Escreve um método testar() na classe ConteudoDigital que devolva true se titulo for uma string não vazia, e false caso contrário. Escreve dois console.assert que verifiquem um caso válido e um caso-limite (título vazio).
Exercício 7 · Tratar erros de forma genérica
A função renderSeguro(item) deve chamar item.render() e, se ocorrer um erro, registá-lo e devolver "Conteúdo indisponível" em vez de deixar o programa parar. Escreve-a e explica porque é preferível a não tratar o erro.