Enviar um café pro programador

Herança - Orientação a Objetos em Python

Neste tutorial, vamos introduzir um dos conceitos mais importantes da programação orientada a objetos, o de herança.

Leia esse conteúdo offline: Apostila Python Progressivo

O que é Herança em Python

No sentido comum, o que é herança?
"Fulano morreu e deixou uma herança"
Ou seja, é quando alguém deixa algo para outro, algum patrimônio geralmente.

Em linguagem de programação Python, herança é uma espécie reusabilidade de código, onde uma classe é criada herdando atributos e comportamentos (métodos) de outra(s) classe(s).

Quando vamos criar uma classe (no dia-a-dia dos programadores Python), raramente criamos código 100% novo e original, o mais comum é usarmos herança para pegar algum código, ideia ou algoritmo já existente.

Assim não tentamos reinventar a roda, ela já existe, é melhor usar o que já tem de pronto.

Por exemplo, se quiser criar seu próprio conceito de Lista ou Dicionário, pode criar, nada te impede. Mas já existem classes criadas há anos, testadas por milhões de pessoas e softwares. Ora, é melhor usar o que já existe e já foi testado! Isso é Herança.

Exemplo de Herança em Python

Vamos supor que criamos a classe Veiculo, ela representa todo e qualquer tipo de veículo motorizado, como carro, moto, caminhão, quadriciclo etc.

O que todo veículo tem em comum? Vamos criar alguns atributos:
Rodas, assentos, motor, potência, amortecedor etc.


Depois, criamos a classe Carro e vamos fazer com que ela herde os atributos da classe Veiculo.
Assim, automaticamente os atributos: rodas, assentos, motor, potencia etc.

Agora vamos criar a classe Moto, ela também vai herdar a classe Veiculo, logo ela também vai ter atributos: roda, assento, motor, amortecedor etc.

Ah, mas vai vao ser duas classes iguais!
Não, caro leitor.

Vamos herdar apenas as características comuns, que todo veículo tem.
A classe Carro vai ter atributos e comportamentos especiais, como ar-condicionado.
Já a classe Moto não tem ar-condicionado.


Ou seja, herdamos o que tem de comum. O que tem de específico, aí sim programamos nessas classes derivadas.

Podemos ir mais além e criar  classe CarroPopular que vai herdar os atributos e comportamentos da classe Carro, e por consequência, herda o comportamento e informações da classe Veiculo.
Já a classe SUV também herda dados da Carro, porém tem suas diferenças da classe CarroPopular.

Estão captando a ideia?
Toda SUV é também um carro, logo também é um veículo. Mas tem coisas diferentes de um carro popular, embora os populares e SUV's sejam carros do mesmo jeito.

Ou seja, podemos dizer que no mundo real, existem classes mais especializadas, específicas de algum contexto geral. Uma moto é um veículo mais específico que simplesmente  "Um veículo". Um Celta é algo mais específico que "Um carro". Mas a moto continua sendo um veículo e um celta continua sendo um carro.

A moto é um veículo.
Um Celta é um carro. Um carro é um veículo, logo, um Celta é um veículo.

No próximo tutorial vamos aplicar, no código, a Herança de classes, e vamos entender melhor esse importante conceito em programação orientada a objetos.

Nenhum comentário:

Postar um comentário