Herança na Programação Orientada a Objetos

Como a a herança é usada na POO (Programação Orientada a Objetos)? É o que vamos estudar neste artigo.

Avatar


30 de Setembro de 2022

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.

Figura 2: Especialização e generalização na hierarquia de classes Cliente, ClienteFisico e ClienteJuridico.

Figura 1: Superclasse Cliente e subclasses ClienteFisico e ClienteJuridico.

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.

Figura 2: Especialização e generalização na hierarquia de classes Cliente, ClienteFisico e ClienteJuridico.

Figura 2: Especialização e generalização na hierarquia de classes Cliente, ClienteFisico e ClienteJuridico.

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

Avatar


30 de Setembro de 2022