O que aconteceria se os objetos tivessem filhos?

Herança

Uma continuação da série sobre Orientação a Objetos!

Lia Kassardjian
Zero e Umas

--

Photo by Eye for Ebony on Unsplash

Todos nós somos parecidos com nossos pais de alguma forma, todos herdamos características tanto físicas quanto de personalidade. De um jeito ou de outro, herdamos características de nossos pais.

Em um outro artigo do Zero e Umas, conversamos sobre os objetos, e vimos que eles são formas de representarmos coisas materiais ou abstratas na programação. Na programação, representamos os objetos com características e funções. Você pode ler o artigo no link abaixo:

A Herança

Agora imagine se os objetos pudessem ter filhos. E se os objetos pudessem herdar características e funções de seus pais? Isso é herança! Através da herança, classes podem compartilhar atributos e métodos entre si.

A herança é representada hierarquicamente, ou seja, de pai para filho. Uma classe filha herda da classe pai, mas não o contrário. Vamos dar uma olhada nesse diagrama:

Diagrama de Classes: Cachorro e Gato herdam de Mamífero

Esse tipo de digrama é chamado de Diagrama de Classes e é muito útil para nos ajudar a visualizar as classes que estamos construindo. Nesse exemplo, temos uma classe chamada Mamífero. Nesse programa, mamíferos têm pelo, mamas e idade, numa definição bem rasa.

Temos, também, uma classe de Cachorro e outra de Gato; ambos têm uma característica a mais: o rabo. Gatos e cachorros têm rabo, mas essa não é uma característica de todos os mamíferos, por isso não é um atributo de Mamífero. Porém, ambos gatos e cachorros têm as mesmas características de todos os mamíferos: pelo, mamas e idade. Cachorro e Gato, por serem sub-classes de Mamífero, herdam as características desta classe.

Mamíferos também se comunicam, mas cada um deles faz isso de forma diferente. Por isso, a classe Mamífero tem um método comunicar(), mas Cachorro e Gato constróem o mesmo método de formas diferentes: na classe Cachorro, é implementado como latir(), enquanto, para a classe Gato, como miar().

O Programa

Bom, já entendemos o conceito, vamos trazer isso para a programação. Vamos criar uma implementação básica em C++, começando pela classe Mamífero:

A classe Mamífero tem três atributos categorizados como protected. Isso indica que os atributos são acessíveis à própria classe e às subclasses apenas. A classe tem, também, um método comunicar(), com uma implementação básica.

Vamos ver, então, a classe Cachorro:

A classe herda de Mamífero, tem um atributo privado rabo, um construtor inicializado com cor do pelo, idade atual e se tem rabo ou não, um método para imprimir a idade e uma implementação própria para o método comunicar().

É interessante notar que, no construtor, a classe Cachorro inicializa atributos criados apenas na superclasse. Isso acontece porque, como herdeira, a classe Cachorro tem acesso a esses atributos e ao método comunicar() por padrão.

Temos, então, um exemplo simples de como classes podem herdar características de superclasses, permitindo, assim, maior reaproveitamento de código. Utilizar herança corretamente é uma ótima forma de criar um código reaproveitável e de qualidade ao programar sobre o Paradigma Orientado a Objetos.

Obrigada por ler esse artigo! Deixe um comentário abaixo se tiver alguma dúvida. Não esqueça de nos seguir aqui no Medium e nossa Newsletter, para as dicas, aulas e notícias sobre tecnologia, feito por mulheres para mulheres. Nos siga também no Instagram, para se conectar mais ainda com o Coletivo Zero e Umas!

A Lia Kassardjian é uma das integrantes do Coletivo Zero e Umas! Ela estuda Ciência da Computação e quer ajudar a trazer mais mulheres para o ambiente científico. Música e Programação são duas de suas paixões!

Você consegue se conectar com ela no LinkedIn, Medium, ou nos seguindo através do Instagram.

--

--