Fala, meus consagrados! Tudo beleza com vocês?
Como a a herança é usada na POO (Programação Orientada a Objetos)? É o que vamos estudar neste artigo.
Teoria
A herança é um tipo de relacionamento entre classes que significa que uma classe é outra. É uma propriedade dos objetos que permite a criação de uma hierarquia entre eles, onde os descendentes herdem dos seus ancestrais:
- Suas estruturas de dados; e
- Seu código.
A POO permite que classes herdem o estado e o comportamento comumente utilizados de outras classes.
Como exemplo de herança, iremos estudar uma hierarquia de classes (figura .1):
- Superclasse Cliente; e
- Duas subclasses:
- ClienteFisico; e
- ClienteJuridico.
A superclasse Cliente tem os atributos Codigo e Endereco e possui o método LocalizarEndereco().
As classes ClienteFisico e ClienteJuridico são subclasses da classe Cliente e por isso elas herdam os atributos e método da sua superclasse.
A subclasse ClienteFisico possui os seguintes membros:
- Atributos herdados da superclasse Cliente:
- Codigo; e
- Endereco;
- Atributos definidos na classe:
- Nome; e
- CPF;
- Método herdado da superclasse Cliente: LocalizarEndereco();
- Método definido na classe: VerificarCPF().
A subclasse ClienteJuridico possui os seguintes membros:
- Atributos herdados da superclasse Cliente:
- Codigo; e
- Endereco;
- Atributos definidos na classe:
- RazaoSocial; e
- CNPJ;
- Método herdado da superclasse Cliente: LocadlizarEndereco();
- Método definido na classe: VerificarCNPJ().
Podemos concluir que a superclasse Cliente possui dois atributos de instância e um método de instância. Já as suas subclasses, para cada uma delas, possuem quatro atributos de instância (sendo dois herdados) e dois métodos de instância (sendo um herdado).
Em uma hierarquia de classes, podemos ter a especialização e generalização (figura 2). A especialização acontece quando estamos descendo na hierarquia de classes, ou seja, indo de uma classe mais genérica (por exemplo, superclasse Cliente) para as classes mais específicas (por exemplo, subclasses ClienteFisico e ClienteJuridico). Já a generalização é o inverso: partimos das classes mais específicas e vamos subindo na hierarquia de classes, indo para uma classe mais genérica.
Questões de concursos
[Quadrix 2018 CRM/PR – Analista de Tecnologia da Informação] Acerca da análise orientada a objetos, julgue o item subsequente.
Com a herança, é admitido estabelecer relações entre classes, permitindo o compartilhamento de atributos e operações idênticas.
Comentários:
A herança é um tipo de relacionamento entre classes que significa que uma classe é outra. É uma propriedade dos objetos que permite a criação de uma hierarquia entre eles, onde os descendentes herdem dos seus ancestrais suas estruturas de dados e seu código.
Gabarito: CERTO.
[FCC 2013 MPE/MA – Analista Ministerial – Análise e Desenvolvimento de Sistemas/ADAPTADA] Assinale a alternativa INCORRETA em relação às vantagens do uso de herança. (Marque o texto da letra como CERTO ou ERRADO)
[B] O uso de herança pode evitar a duplicação de código, pois deixa de ser necessário escrever duas cópias idênticas ou muito semelhantes de um código em comum.
Comentários:
Com o uso da herança, podemos evitar a duplicação de código. Por exemplo, a classe Cliente, da figura 3.1, possui o atributo Codigo. Como ClienteFisico e ClienteJuridico são subclasses de Cliente, não foi preciso criar para cada subclasse o atributo Codigo. Esse atributo é herdado. O que se evitou a duplicação de código.
Gabarito: CERTO.
[FCC 2013 MPE/MA – Analista Ministerial – Análise e Desenvolvimento de Sistemas/ADAPTADA] Utilize a figura abaixo para responder à questão. (Marque o texto da letra como CERTO ou ERRADO)
[A] quando uma classe usa a relação de herança, essa classe possui um relacionamento “é um” com a classe da qual ela herda. Assim, Automóvel “é um” (transporte tipo) Terrestre, assim como Terrestre “é um” (tipo de) Transporte.
Comentários:
A herança é um tipo de relacionamento entre classes que significa que uma classe é outra. É uma propriedade dos objetos que permite a criação de uma hierarquia entre eles, onde os descendentes herdem dos seus ancestrais suas estruturas de dados e seu código.
Assim, de acordo com a imagem da questão, um Automóvel é uma especialização de Terrestre, que, por sua vez, é uma especialização de Transporte.
Gabarito: CERTO.
Então é isso!
[]s e até a próxima!
_________________________
Professor Rogerão Araújo