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

Duck typing e Interface

Em duck typing estamos nos importando com o método sem nos preocuparmos de qual classe ele venha. Muitas vezes quando na classe o que nos importa é seu método, pois é um método presente em diversas classes, isolamos esse método em uma Interface para que as classe implementem esse método. Qual seria diferença entre o conceito de duck typing e interfaceamento entre classes ?

2 respostas
solução!

Oi Felipe, excelente questão.

Aqui é importante distinguir o conceito de Interfaces do recurso da linguagem interface que temos em Java/C# e outras.

Em OO, uma Interface é a forma como nos comunicamos com o objeto. Seus metodos publicos e suas assinaturas. No Ruby e duck typing em geral, nossa classe tem uma Interface de uso, que são os métodos dela. Várias classes têm a mesma interface apenas por ter os mesmos métodos. Não existe um contrato explícito, nenhuma sintaxe da linguagem, que obrigue classes diferentes a terem a mesma interface de uso.

O que as linguagens estaticas como Java/C# oferecem é o recurso de declarar essas interfaces de uso em uma sintaxe da linguagem através da palavra chave interface. É uma forma da linguagem garantir explicitamente o contrato, a interface de uso da classe, direto pelo compilador.

Então resumindo: duck typing é usar interfaces, só que de forma dinamica. E as interface das linguagens estaticas sao apenas uma forma do compilador verificar as interfaces pra vc de forma estatica.

Muito esclarecedor

Obrigado :D