Compre o e-book deste material aqui!
Na programação orientada-a-objetos, herança consiste na definição de uma classe derivada a partir de uma dada classe base. A sintaxe de definição de uma classe derivada é
A classe derivada herda todos os atributos da classe base. Por exemplo, consideramos o seguinte código
Nas linhas 1-6, a classe base é definida contendo dois métodos: __init__() chamado na criação de um objeto da classe (uma instância) e, self.digaOi() que imprime uma saudação. A classe derivada é definida nas linhas 8-10, ela herda os atributos da classe base e contém um novo método self.digaTchau(), que imprime uma mensagem de despedida.
A criação de uma instância (objeto) de uma classe derivada é feita da mesma forma que de uma classe base. A referência a um atributo do objeto é, primeiramente, buscada na classe derivada e, se não encontrada, é buscada na classe base. Este regra aplica-se recursivamente se a classe base também é derivada de outra classe. Isso permite que uma classe derivada sobreponha atributos de sua classe base.
(super().) O método super retorna um objeto proxy da classe base, que acessa os atributos desta.
Vamos criar uma classe para manipular triângulo isósceles. Para tanto, vamos derivá-la a partir da classe Triangulo definida no Exemplo 7.1.1. Vamos assumir que os triângulos isósceles têm vértices com lados e de mesmo tamanho.
(Herança Múltipla.) Python suporta a herança múltipla de classes. A sintaxe é
Quando um objeto da classe derivada faz uma referência a um atributo, este é procurado de forma sequencial (e recursiva, caso uma das classe bases seja também uma classe derivada) começando por essa e, caso não encontrado, buscando-se nas classes Base1, Base2, …, BaseN.
No Código 12, adicione à classe Triangulo o método Triangulo.perimetro() que computa, aloca e retorna o valor do perímetro do triângulo. Então, sobreponha o método à classe TrianguloIsosceles. Teste seu código para diferentes triângulos.
Implemente uma classe Retangulo(largura, altura) para a manipulação de retângulos de largura e altura dadas. Equipe sua classe com métodos para o cálculo do perímetro, da diagonal e da área de retângulo. Então, implemente a classe derivada Quadrado(lado) para a manipulação de quadrados de lado dado. Teste sua implementação para diferentes retângulos e quadrados.
Refaça o Exercício 7.2.2 sobrepondo os métodos do cálculo do perímetro, da diagonal e da área para quadrados.
Dica: para um quadrado de lado , o perímetro é , por exemplo.
Considere a classe TrianguloIsosceles definida no Código 12. Implemente uma classe derivada TrianguloEquilatero com métodos para o cálculo do perímetro e da altura de triângulo equiláteros. Teste seu código para diferentes triângulos.
Dica:
Implemente:
Uma classe Quadrilatero para a manipulação de quadriláteros de lados . Equipe sua classe com um método self.perimetro() para o cálculo do perímetro.
Uma classe Retangulo, derivada da classe Quadrilatero, para a manipulação de retângulos de lado dado e altura dada. Na classe derivada, sobreponha o método self.perimetro() para o cálculo do perímetro e implemente novos métodos para o cálculo da diagonal e da área de retângulos.
Uma classe Quadrado, derivada da classe Retangulo, para a manipulação de quadrados de lado dado. Na classe derivada, sobreponha os métodos para os cálculos do perímetro, da diagonal e da área.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!