Aula #05 POO - HERANÇA em Java: Tudo o que Você Precisa Saber!

By Profª. Cláudia Zambon

TechnologyEducationAI
Share:

Herança na Programação Orientada a Objetos

Key Concepts:

  • Herança (Inheritance)
  • Superclasse (Superclass) / Classe Pai (Parent Class)
  • Subclasse (Subclass) / Classe Filha (Child Class)
  • extends (keyword)
  • Método Construtor (Constructor Method)
  • super() (keyword)
  • Getters e Setters
  • Refatoração (Refactoring)
  • Diagrama de Classes UML
  • Sobrescrita de Métodos (Method Overriding)

1. Introdução à Herança:

  • A herança na programação orientada a objetos permite que classes herdem características (atributos) e comportamentos (métodos) de outras classes, promovendo a reutilização de código e a organização hierárquica.
  • O vídeo usa a analogia de herança familiar para explicar o conceito.

2. Problema da Repetição de Código:

  • O exemplo inicial mostra as classes "Gato" (Cat) e "Cachorro" (Dog) com atributos e métodos repetidos (nome, tutor, raça, comer, emitirSom).
  • A repetição de código dificulta a legibilidade e manutenção.
  • "Na programação orientada ao objeto, uma das características dela é a melhoria da legibilidade do código. Ou seja, quando identificamos que estamos repetindo o código, é o momento de pararmos, analisarmos para poder refatorar essa codificação."

3. Solução: Criação da Superclasse "Animal":

  • Para eliminar a repetição, é criada uma superclasse chamada "Animal".
  • A superclasse "Animal" contém os atributos e métodos comuns às classes "Gato" e "Cachorro".
  • As classes "Gato" e "Cachorro" se tornam subclasses da classe "Animal".

4. Diagrama de Classes UML e a Herança:

  • É apresentado um diagrama de classes UML para representar a relação de herança.
  • As setas no diagrama apontam das subclasses ("Gato" e "Cachorro") para a superclasse ("Animal"), indicando a herança.
  • A herança permite que as subclasses recebam atributos e métodos da superclasse.

5. Implementação da Herança com extends:

  • A palavra reservada extends é usada em Java para indicar que uma classe herda de outra.
  • Exemplo: class Gato extends Animal (A classe "Gato" herda da classe "Animal").

6. Atributos e Métodos Específicos das Subclasses:

  • As subclasses podem ter atributos e métodos específicos, além dos herdados da superclasse.
  • Exemplo: A classe "Gato" tem o atributo "gostaDeEscalar" (gosta de escalar) e o método "miar" (meow), enquanto a classe "Cachorro" tem o atributo "éAdestrado" (isTrained) e o método "latir" (bark).
  • "Isso quer dizer que somente "gato" vai ter acesso ao método "miar" e somente "cachorro" tem acesso ao método "latir". E criei também um atributo para "gato" que "gosta de escalar" que recebe um booleano, então ele vai receber um valor verdadeiro ou falso. E para "cachorro" eu criei um atributo "é adestrado"."

7. Implementação Prática no Eclipse:

  • O vídeo demonstra a implementação da herança no ambiente de desenvolvimento Eclipse.
  • A classe "Animal" é criada com os atributos comuns (nome, tutor, raça) e um método construtor.
  • As classes "Gato" e "Cachorro" usam extends Animal para herdar da classe "Animal".
  • Os atributos repetidos são removidos das classes "Gato" e "Cachorro".

8. Método Construtor nas Subclasses e super():

  • As subclasses ("Gato" e "Cachorro") precisam de seus próprios métodos construtores para inicializar os atributos específicos.
  • O método super() é usado dentro do construtor da subclasse para chamar o construtor da superclasse e inicializar os atributos herdados.
  • Exemplo: super(nome, tutor, raça); (Chama o construtor da classe "Animal" com os parâmetros nome, tutor e raça).
  • "Porém, quando for criar um objeto tipo "gato", eu vou ter que dizer que ele vai possuir um nome, vai possuir um tutor, vai possuir uma raça. Porém, essa esses eh os valores desses atributos, desses parâmetros, perdão, os valores desses parâmetros que vão passar aqui dentro da chamada do método, eles vão ter que entrar aqui nesses atributos da classe "animal"."

9. Getters e Setters:

  • Os métodos getters (para obter valores) são gerados para os atributos na classe "Animal".
  • Os setters (para definir valores) não são criados inicialmente, pois a inicialização é feita no construtor.
  • "Por Que que eu não vou usar US né os setters aqui dentro? Porque eu não preciso para setar, para atribuir nomes a esses atributos aqui não é necessário. Através do Set, eu posso manipular ele aqui diretamente do pelo meu método Construtor."

10. Refatoração dos Métodos "comer" e "emitirSom":

  • Os métodos "comer" e "emitirSom" são movidos para a classe "Animal".
  • As implementações originais em "Gato" e "Cachorro" são removidas inicialmente.
  • O método "emitirSom" na classe "Animal" é generalizado para "pet está emitindo um som" (pet is making a sound).
  • O método "comer" na classe "Animal" é generalizado para "pet está comendo" (pet is eating).

11. Sobrescrita de Métodos (Method Overriding):

  • O vídeo demonstra o conceito de sobrescrita de métodos.
  • Se um método com a mesma assinatura (nome e parâmetros) existir tanto na superclasse quanto na subclasse, a implementação da subclasse será executada.
  • No exemplo, as classes "Gato" e "Cachorro" reimplementam os métodos "comer" e "emitirSom" para fornecer um comportamento específico.
  • "Porém Ah nesse caso aqui do "cachorro", eu peguei esse mesmo método e escrevi uma outra mensagem para ele. Então o que que acontece na hora de executar o sistema que o Java ele vai olhar se esse método "comer" está declarado aqui dentro da classe "gato". Se não está, ele vai subir uma classe, então ele vai lá pra superclasse aonde ele encontrou o método e imprimiu o que tava escrito dentro daquela classe."

12. Ajustes Finais e Execução:

  • O atributo "éAdestrado" é adicionado à classe "Cachorro" e o construtor é atualizado.
  • O método "latir" é chamado para o objeto "Cachorro".
  • O código é executado para demonstrar a herança e a sobrescrita de métodos.

13. Conclusão:

  • A herança é um pilar fundamental da programação orientada a objetos, permitindo a reutilização de código e a criação de hierarquias de classes.
  • O vídeo demonstra como implementar a herança em Java usando a palavra reservada extends e o método super().
  • A sobrescrita de métodos permite que as subclasses forneçam implementações específicas para os métodos herdados.
  • O vídeo sugere que ainda há melhorias a serem feitas no código, que serão abordadas em um próximo vídeo.

Chat with this Video

AI-Powered

Hi! I can answer questions about this video "Aula #05 POO - HERANÇA em Java: Tudo o que Você Precisa Saber!". What would you like to know?

Chat is based on the transcript of this video and may not be 100% accurate.

Related Videos

Ready to summarize another video?

Summarize YouTube Video