Olá desenvolvedores, tudo bem com vocês? Hoje começaremos a falar sobre herança. Trata-se de um conceito em Java onde é possível relacionar classes de modo que uma herde tudo da outra.

Entre os benefícios deste relacionamento, posso citar como principal, o reaproveitamento de código. E isto nos leva a um importante e considerável diminuição do tempo gasto com o desenvolvimento.  Mas não apenas isso, o conceito de herança acaba por ajudar também, na proliferação de código já testado.

Assim sendo, no tutorial de hoje aprenderemos sobre esta que é considerada uma importante abstração da orientação a objetos – a herança. Aprenderemos ainda como aplicá-la, bem como compreenderemos o uso das palavras reservadas que fazem parte deste escopo.

DEFININDO HERANÇA

Em programação orientada a objetos, herança é o que permite a criação de novas classes a partir de outras já existentes. Em outras palavras, se tivermos por exemplo uma “Class Pessoa()”, podemos a partir dela criarmos outras duas subclasses. A “Class Diretor()” e a “Class Secretaria()”, que herdarão elementos comuns a ambos e que estendem a Class Pessoa().

Dessa forma, essas novas classes são chamadas de subclasses, ou classes derivadas. As classes já existentes, no caso a “Class Pessoa()”, que originou as outras duas, é chamada de superclasse ou classes base. O que permite a criação de hierarquia entre essas classes.

E por que fazemos isso? Para que não seja necessário escrever o mesmo código duas, três ou mais vezes. Visto que, é muito provável que aluno, diretor e secretário, tenham características comuns que possam ser reaproveitadas.

Entretanto, embora uma subclasse herde tudo (métodos e atributos) de uma superclasse, ela pode, apesar disso reescrevê-los. Desse modo, tornando o comportamento herdado mais adequado e específico a classe em questão, isto é, a classe filha.

DIAGRAMA DE CLASSES

Um diagrama de classe é a representação da estrutura e da relação entre as classes, servindo então de modelo para a construção de objetos. Ou ainda, podemos em outras palavras dizer que um diagrama de classes constitui um conjunto de objetos com as mesmas características.

A construção de um modelo de diagrama de classes apresenta algumas vantagens para o desenvolvedor. Assim, a principal vantagem é a possibilidade de identificação e agrupamento de objetos com semelhantes características. Por definição uma classe é representada por um retângulo com três divisões, a saber: o nome da classe, atributos e métodos (se necessário).

É importante que você dê atenção ao diagrama de classes, visto que a estrutura deste diagrama repercutirá também no banco de dados. Além disso, a modelagem de um diagrama de classes atende aos requisitos das regras de negócio.

O diagrama abaixo mostra uma superclasse Pessoa com alguns atributos, como nome, dataNascimento, registroGeral e outros, que são comuns as suas subclasses. Assim, no lugar de reescrever estes mesmos atributos outras quatro vezes, nada mais lógico que herdar estas características de uma classe já existente. É o que vemos sendo feito com as classes Aluno, Diretor e Secretaria, que herdam estes atributos.

A repetição destes dados pode acarretar uma inconsistência no sistema, sem mencionar a redundância. Isto significa que informações podem estar duplicadas em diversos lugares. E a inconsistência vem do fato de que estes dados podem apresentar valores distintos em cada lugar que ele aparece. E tudo isso refletirá em seu banco de dados.

Imagine um sistema de banco, que apresenta dados duplicados na classe representativa da contaCorrente e contaPoupança respectivamente. Porém, o endereço do cliente não está atualizado em uma dessas contas. Já imaginou o transtorno que poderia ocorrer, para dizer o mínimo?

EM POUCAS PALAVRAS

Há alguns tutorias, eu disse que um objeto só deve realizar ações inerentes ao próprio objeto. Do mesmo, jeito ele só deve carregar atributos próprio dele e somente dele. Atributos e métodos comuns a outras classes podem e devem ser herdados de uma subclasse.

Dessa forma quando instanciarmos, por exemplo, um o objeto secretário, além dos dados próprios ao secretário, teremos acesso também aos dados da “Class Pessoa”. O mesmo acontecerá com a “Class Aluno” e “Class Diretor”. Assim, o que estaremos fazendo é estendendo os dados da superclasse.

Então é isso desenvolvedores, nesta rápida introdução aprendemos sobre reutilização de código, em um contexto de orientação a objetos. São conceitos importantes que nos proporcionará escrever códigos mais organizados.