O que é a Herança? Uma simples explicação do OOP

Dois princípios de programação orientados para objectos em baixo (leia sobre abstracção aqui e encapsulamento aqui), faltam ainda dois! Hoje vamos dar uma vista de olhos à herança. Em comparação com a abstracção e o encapsulamento, a herança é um pouco mais directa (na minha opinião pessoal).

Como com os outros princípios do OOP, a herança destina-se a optimizar o trabalho dos programadores. O papel que a herança desempenha nesta optimização é permitir aos engenheiros de software criar hierarquias de classes, onde as classes e os objectos herdam propriedades e comportamentos da sua classe mãe (ou super). Uma classe que herda de uma classe pai (ou super) é chamada subclasse ou classe filha, e os objectos que recebem propriedades e comportamentos de um pai através da herança são referidos como objectos filhos.

Como é que isto é útil? Uma grande parte da utilidade da herança é a reusabilidade. Vou usar Noé e a arca como exemplo. Para aqueles que não estão familiarizados com a história, a Terra está ameaçada por uma inundação mundial e Noé constrói uma arca a fim de armazenar dois de cada animal de criação na Terra, para que sobrevivam à tempestade. Digamos que Noé queria usar um programa de software para o ajudar a manter um registo de todos os animais na arca e das suas várias necessidades.

>/div>>>>fcaption>Pictured: uma interpretação historicamente precisa da Arca de Noé por artistas (Foto de Dan Kb em Unsplash)

Criar uma classe única para cada animal seria rapidamente muito repetitivo porque existem algumas propriedades e comportamentos que se aplicam a cada animal, desde um rato a um elefante. As funções partilhadas podem incluir alimentação( ), hidrato( ), cleanEnclosure( ). Em vez de criarmos estes atributos partilhados repetidamente para cada animal, poderíamos, em vez disso, criar uma classe Animal parental! Esta classe parental conteria as propriedades e comportamentos universais a todos os animais e poupar-nos-ia de ter de criar essas funções partilhadas ad infinitum.

talvez uma função dontGetEaten( ) fosse útil (Foto de Andre Klimke em Unsplash)

desta forma, um elefante, um rato, e um chimpanzé teriam todos a sua própria classe infantil que herdaria da classe dos pais Animais. Além disso, Noé poderia continuar a construir sobre os atributos herdados para personalizar ainda mais estas classes, conforme necessário. Por último, a herança permite-nos limitar as hipóteses de erro humano que poderiam surgir se introduzíssemos manualmente estas funções partilhadas.

P>Semana seguinte: polimorfismo!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *