Herança – orientação a objetos com python
Atenção: se você ainda não sabe nada sobre orientação a objetos, leia o artigo anterior.
Uma característica legal de programação orientada a objetos é a Herança. Uma classe pode herdar características de outra (superclasse) e incluir suas próprias. A superclasse é mais genérica, a subclasse, que herda da superclasse, é mais especializada.
Usando o exemplo clássico dos livros e tutoriais de programação, imaginemos a superclasse “Animal”; “Mamífero” é uma subclasse de “Animal” e herda suas características. Mas “Mamífero” tem suas próprias características. “Felino” é uma subclasse de “Mamífero”; “Gato” é uma subclasse de “Felino”.
Herdando as características de “felino”, “Gato” herda também as de “Mamífero” e “Animal”. Mas gato mia e arranha o sofá, coisa que nem todo animal faz.
Em Python seria mais ou menos assim:
# definindo a classe Animal:
class Animal:
def __init__(self):
# codigo para o init aqui
# metodos de Animal aqui
#definindo a classe Mamifero, herdando de Animal
class Mamifero(Animal):
def __init__(self):
# definindo Felino
class Felino(Mamifero):
# definindo Gato
class Gato(Felino):
No artigo sobre orientação a objetos, nós criamos a classe TiaVelha.
Agora vamos criar uma classe nova. É a Fofoqueira. Uma Fofoqueira é basicamente uma Tia Velha, mas que faz fofocas – nem toda tia velha faz fofocas. A Fofoqueira é especializada no leva-e-traz.
Acho que ficou implícito que, para criar uma Fofoqueira, basta pegar uma Tia Velha e adicionar a ela o leva-e-traz.
Vamos ao código. Se quiser executar o exemplo, primeiro crie uma pasta para nosso exercício. Salve nela o código da TiaVelha, do outro artigo, com o nome tiavelha.py.
Os métodos da Fofoqueira são leva(fofoca) e traz().
O método leva(fofoca) adiciona uma fofoca qualquer ao repertório de fofocas da Fofoqueira. A Fofoqueira não inventa nada; só repassa o que viu ou ouviu.
No método traz(), a fofoqueira solta de uma vez todas as fofocas do seu repertório.
from tiavelha import *
class fofoqueira(TiaVelha):
def __init__(self,nome,idade):
TiaVelha.__init__(self,nome, idade)
self.fofocas=[]
def leva(self,fofoca):
self.fofocas.append(fofoca)
def traz(self):
for fofoca in self.fofocas:
print fofoca
Na linha 1 importamos o conteudo do ‘módulo’ tiavelha. A classe TiaVelha agora está disponível no nosso código.
Na linha 2 a classe fofoqueira é definida; TiaVelha entre parêntesis indica que fofoqueira herda de TiaVelha.
Na linha 3 precisamos chamar o método __init__ da superclasse, pois __init__ sendo redefinido em fofoqueira substitui o método com o mesmo nome da superclasse.
Das linhas 7 a 12 colocamos os métodos típicos da fofoqueira.
Os métodos apresentar_se() e falar(), da TiaVelha estão disponíveis para fofoqueira.
Salve o códico como fofoqueira.py na mesma pasta onde salvou tiavelha.py.
Para concluir, vamos fazer um código que usa a classe fofoqueira:
import fofoqueira
lina=fofoqueira.fofoqueira('Alvelina',32)
lina.apresentar_se()
lina.falar()
lina.traz()
lina.leva( "A Luiza trocou de namorado de novo" )
lina.leva( "O Pedro terminou com a amante" )
lina.traz()
15 / Julho / 2008 às 3:22 pm
Muito bom os artigos relacionados à orientação a objetos.
10 / Novembro / 2008 às 7:57 am
obrigado
gostei deste site
enconteri o que necessitada
obrigado