Partilhar: WhatsApp
aulify
UC UC04371 · T. Produção de Conteúdos I

Ficha 02 · Orientação a objetos, design patterns, frameworks e testes

Herança, polimorfismo, Factory, Strategy, Observer, adaptação e testes de funcionalidades
Versão · Aluno
Tempo · 3 horas
Aluno(a)
Turma
Data

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.