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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
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.