Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Consolidando Conhecimento

Me deparei com o seguinte exercicio, porém constatei que durante as explicações (texto), foi dito para sobreescrever somente o método template, pois a subclasse herda os métodos da classe Pai.

Eu fiz o exercicio sem o método update em MensagemView, logo fiz errado ou certo ?

6) Crie a classe MensagemView com o construtor, métodos template e update. O template será um simples parágrafo

7 respostas

Olá Yuri,

Como você fez sem usar esta Classe? poderia colocar se código aqui?

O ponto é que podemos sim fazer sem a classe, porém nosso código, se feito dessa forma, pode ficar repetitivo. O bom de usar as classes é que o código fica mais organizado e mais simples de dar manutenção.

Pense que você tenha várias outras classes que queiram executar o que o MesagemView faz. Todas as modificações sobre esse processo fica atribuido e encapsulado apenas a esta classe. Melhorando na hora de dar manutenção ao codigo também. (Você teria que fazer as modificações somente na classe MensagemView por exemplo)

Fiz da seguinte maneira

MensagemView.js

class MensagemView extends View {

    constructor(elemento) {
        super(elemento);
    }

    template(model) {
        return `<p class="alert alert-info">${model.texto}</p>`
    }

}

Porém a superclasse já possui o método update e por isso não vi motivo para sobrescrever, pois não muda em nada para a subclasse.

View.js

class View {

    constructor(elemento) {
        this._elemento = elemento;
    }

    update(model) {        
        this._elemento.innerHTML = this.template(model); 
    }

    template(model) {
        throw new Error('Você deve sobrescrever este método em seu template');
    }

}

Talvez eu tenha interpretado o exercicio de maneira errado, por isso estou meio confuso.

Yuri, esta tudo certo. Talvez na hora de fazer a pergunta do exercício eu tenha feito você entender erradamente que deveria implementar os outros métodos. Eles são herdados. Vou alterar o exercício para ficar mais claro. Um minuto.

solução!

Ficou melhor assim ?

6) Crie a classe MensagemView que também herdará de View. Lembre-se que você precisará fazer a reescrita do método template na classe, já que o template é específico de cada filho. O template será um simples parágrafo:

(EDITADO: mudei de update para template, havia me confundido)

Claramente professor ! Antes dava a entender que deveria sobreescrever ambos métodos.

Yuri, eu escrevi errado.. o correto é template. Não update! :)

Eu sei que você entendeu, mas na hora de explicar quem se desentendeu fui eu!

Desculpe mais uma vez. Alura é muita emoção! É que estou tirando dúvidas de vários alunos ao mesmo tempo daí dá curto circuito aqui na minha cabeça.

Lembre-se, chegando até o final do terceiro módulo você terá se tornando um cangaceiro em JavaScript! Continue estudando!