Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Contrução de Classe - Orientação a Objetos

Já estudei um pouco orientação a objetos na faculdade e sempre fui guiado a criar uma classe somente quando essa tem propriedade(s) diferente(s) da classe já criada e observei no curso que foi criado a classe NegociacaoController sendo que não possui propriedade(s) diferente(s) da classe Negociacao, não seria correto levar o método criado na classe NegociacaoController para a classe Negociacao.

Por exemplo se eu tenho uma classe Pessoa que tem as propriedades nomeCompleto, cpf, rg, sexo ... eu não vou criar uma outra classe PessoaController apenas para fazer um método adicionar e sim criar esse método na própria classe Pessoa. Se fosse para criar uma outra classe poderia ser a classe Professor ou a classe Aluno que pode herdar as propriedades da classe Pessoa e adicionar mais algumas propriedades próprias e seus métodos.

1 resposta
solução!

Boa tarde.

Desculpe, mas não consegui entender essa declaração:

já estudei um pouco orientação a objetos na faculdade e sempre fui guiado a criar uma classe somente quando essa tem propriedade(s) diferente(s) da classe já criada

Independente do meu entendimento ou não, vamos revisitar o assunto.

Existe um princípio primordial da orientação a objetos chamado Single Responsability Principle (SRP). Ele diz que cada classe deve fazer uma coisa apenas e muito bem feita. Em suma, isso já seria suficiente para separar Negociacao de NegociacaoController, porém há um agravante. Negociacao é um modelo do negócio que se você olhar não tem ligação nenhuma com DOM. Ela encapsula regras de negócio e você até poderia utilizá-la com Node.js se assim quisesse, por não estar amarrada a nenhuma tecnologia de view.

Já o NegociacaoController ** é outra camada** a ponte entre os dados do negócio (Negociacao) e a View, no caso, a página. Ela faz essa ponte, é a sua responsabilidade. Um olhar atento verificará que NegociacaoController esta impregnada de acesso e manipulação do DOM. Se mais tarde, no lugar de manipular o DOM você quisesse gerar um código em CANVAS, você poderia, bastando trocar a view e o controller e o seu modelo Negociacao estaria intacto.

Em suma, houve uma separação de responsabilidade no código para diminuir o acoplamento entre suas partes favorecendo assim a manutenção e legibilidade.

Sucesso e bom estudo.