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

Pequeno conto sobre orientação a objetos

mas nesse caso quem tem o comportamento não é a garrafa da cerveja? ao meu ver não é o liquido que vai abrir a cerveja, o comportamento está no casco: garrafa.abrir() não seria isso?

7 respostas
solução!

Oi Ricardo, é exatamente isso que Flavio explica :). Ele diz que o liquido é um dado da garrafa e que abrir é um comportamento da própria garrafa. Ele exemplifica isso no final do conto, com a garrafa long neck.

Isso mesmo!

"Flávio: veja que nesse caso o dado (líquido) caminha com o comportamento que operava sobre ele (abridor, que é a própria tampa). Onde quer que você leve a garrafa, a forma de acessar seu líquido será a mesma, seja aqui no Brasil ou no Japão. "

Garrafa = objeto

Líquido = dado

Abridor = comportamento

Quem carrega dado e comportamento é a garrafa. Ela carrega com ela os dois. Não há separação entre dado e comportamento.

ok, agora ficou bem claro

Achei o conto sensacional!!! Até então, o exemplo mais didático que eu conhecia era o do carro. O carro como objeto, contendo seus dados ( quantidade de gasolina no tanque por exemplo) e seus comportamentos como acelerar, diminuir velocidade e assim por diante.

Boa tarde Flávio tudo bom. Trazendo essa sua explicação da garrafa e do líquido para o código dos vídeos, como ficariam as comparações (classe Negociacao)?

Eu posso dizer que o abridor seria o constructor()?

Garrafa = objeto Líquido = dado Abridor = comportamento

Att: Gabriel.

O Gabriel! O líquido são os dados de uma negociação e o abridor toda lógica que opera nesses dados. A garrafa longneck é o objeto, que tem fundido nela dado e comportamento.

Sendo assim, onde você leve o objeto (garrafa) você terá junto o líquido (dado) e o comportamento (abridor). Ninguém vai ficar mais inventando como acessar os dados porque pedimos ao objeto.

Você citou o construtor com muita sabedoria, até porque se queremos trabalhar com objetos do ES6 usamos o operador new e o operador new sempre chama o construtor. Se o construtor é sempre chamado, dentro dele podermos adicionar qualquer código que desejamos executar assim que um objeto é criado, inclusive podemos testar se todos os parâmetros foram passados e se são válidos. Mas não é apenas o construtor que equivale ao abrir, os métodos da classe também.

Abraço Gabriel!

Obrigado.