Um momento
Aula 62
Cursos / Aprenda Go / Golang (Curso de Programação)
Detalhe Sobre o Acesso de Propriedades do Tipo Subjacente a Interface - Aula de Go

Summary

Resumo da Transcrição

Nesta aula, foi discutido o uso de interfaces em programação, especialmente a interface geométrica e sua implementação em tipos concretos, como o quadrado. A seguir estão os principais pontos abordados:

  • Interface Geométrica: A interface geométrica não declara a propriedade lado, que é específica do quadrado. Portanto, não se pode acessar G.lado quando G é uma variável do tipo geométrica, pois nem todas as formas geométricas possuem a propriedade lado (por exemplo, o círculo).

  • Remoção da Propriedade lado: Para resolver o problema, foi necessário remover a referência a G.lado. O acesso à área do quadrado foi feito através do método área contido na interface geométrica.

  • Cálculo da Área: A área do quadrado foi calculada com base no lado 3, resultando em uma área de 9. Para exibir o resultado corretamente, foi modificado o método de formatação da impressão.

  • Implementação de Métodos: A interface geométrica define a assinatura do método área, que deve ser implementado por qualquer tipo que deseje ser considerado geométrico, como o quadrado.

  • Atribuição de Tipos: O quadrado, por implementar a interface geométrica, pode ser armazenado em uma variável do tipo geométrica. Entretanto, mesmo armazenando um quadrado em uma variável geométrica, não se pode acessar diretamente suas propriedades específicas.

  • Chamada de Métodos: Ao chamar o método área da variável G, a implementação correspondente ao quadrado é invocada, que utiliza Q.lado para calcular a área.

Conclusão

A aula enfatizou a distinção entre interfaces e tipos concretos, a importância de declarar propriedades nas interfaces, e a forma correta de chamar métodos quando se trabalha com variáveis de tipos da interface.

Até a próxima aula!

Video Transcript

Então, batemos num detalhe que tentamos referenciar a propriedade lado usando a variável G, que por si própria é do tipo geométrica. Mas, geométrica é uma interface, mas não há a declaração da propriedade lado na geométrica. Usando nossa intuição, a gente achava que talvez devido a quadrado implementar a interface geométrica, teríamos acesso ao lado do próprio quadrado, mas esse não é o caso. Então, felizmente, não posso usar isso aqui. A não ser que eu tenha definido o lado na interface geométrica, para poder acessar diretamente através da variável de interface, mas como o lado não é comum a todas as formas geométricas, por exemplo, o círculo não tem lado, então não posso fazer isso. Então, eu vou ter que remover o G.lado daqui. A única maneira de poder acessar isso é se a variável fosse do tipo quadrado. Então, vamos revolver aqui. A área do quadrado é, essa vai ser a mensagem, e vou chamar a área através da variável de interface geométrica. E por si própria, vai chamar a área o método do que foi definido pelo quadrado. Vamos salvar e tentar novamente no terminal. Ah, o que é que aconteceu aqui? Eu acho que a área do quadrado é o centro de G.area. Será que eu fiz? Nesse caso, o quadrado tem lado 3, então a área vai ser 9. Talvez esse percentual seja por cento F. Tá certo. E vamos usar uma nova linha. Então, a área do quadrado é 9. Eu trouquei o percento D por por cento F. Acho que também V serve. V tira os pontos. Tá? Usando printf. Se você quiser aprender mais para o printf ver na referência, às vezes a gente se esquece de qual percentual usar. Então, só referenciar a documentação. Certo? Então, vamos ver o que aconteceu. Temos a interface geométrica que tem assinatura do método área. Então, a interface geométrica, se você quiser implementar o seu tipo, tem que implementar a função método área. Nesse caso, temos o tipo quadrado que tem o método área. Como tem o método área aqui no quadrado, o quadrado implicitamente implementa a interface geométrica. Nesse caso, se tiver um variável do tipo de interface geométrica, podemos atribuir essa variável. Um outro tipo que é o tipo quadrado, porque o quadrado implementa a interface geométrica. Portanto, pode ser armazenado em variável do tipo geométrica. Aprendemos que, embora que podemos armazenar o quadrado na variável do tipo geométrica, não podemos referenciar diretamente a propriedade do quadrado, que é o lado, porque não está presente na interface geométrica. Então, usamos a variável G de tipo geométrica, interface geométrica, para chamar o método área. Note que área é presente na lista de assinaturas geométrica, mas ele vai chamar o área do quadrado que está armazenado no G. Portanto, a função área que será chamada será essa, que é da linha 15 do quadrado, que vai por si chamar o Q ponto lado vezes Q ponto lado, que é a área do quadrado, o lado do quadrado. Está certo? Então, por essa aula é só. E até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: