Esta semana vou falar sobre mais um tópico relativo a orientação a objetos: herança.
Herança consiste em fazer com que uma classe "herde" os atributos e métodos de uma outra classe, podendo reescrevê-los ou adicionar funcionalidade à estes.
Vamos a um exemplo prático, a partir da classe que especificamos anteriormente:
# coding: utf-8 # mamifero.py class Mamifero: def som(self): print 'emitir um som' class Homem(Mamifero): def som(self): print 'Oi!' class Cachorro(Mamifero): def som(self): print 'Wufff! Wufff!' class Gato(Mamifero): def som(self): print 'Meawwwww!' mamifero = Mamifero() mamifero.som() animais = [Homem(), Cachorro(), Gato()] for animal in animais: animal.som()
No código acima, criamos 3 classes onde estas herdam os atributos da classe "Mamifero". Neste caso estou demonstrando como podemos reescrever os métodos de uma classe para alterar o funcionamento deste numa classe mais específica.
Ao executar o código acima, no "for" mais abaixo no código, percorreremos uma lista de animais, chamando o método "som()" para cada um deles. Como cada animal foi criado a partir de uma classe específica, o método desta classe mais específica é chamado, e não o da classe mais genérica, "Mamifero". Sendo assim, o som emitido será o que nós esperamos.
Estou indo devagar nesta introdução à classes por este ser um tópico que causa muita confusão nos programadores iniciantes, mas que após um certo tempo de prática se mostra um paradigma interessante e fácil de lidar no dia a dia, tornando a abstração de problemas reais em algoritmos mais simples.
4 comentários:
Olá,
Fiquei sabendo do seu blog recentemente e após estudar todas as aulas anteriores cheguei a última e gostaria de saber se existirão outras?
Parabéns pelo blog!!! Abraço!
Olá!
Minha ideia é criar mais posts, mas estou vendo a possibilidade de criar podcasts, que acho mais interessante.
O que você acha? Um podcast com um vídeo mostrando a edição de código e uma explicação seria mais interessante que posts com apenas o texto?
--
JP
Com certeza seria interessante, mas eu mesmo prefiro o post com o código, não tenho o costume de assistir podcast's. Poderia fazer os dois, lógico, se desejar! :-)
Exatamente o que eu buscava. Expôs o conteúdo de maneira clara e objetiva! Obrigado!
Postar um comentário