Classes

Abstratas
Linguagem de Programação III

Faculdade de Teconologia da UNICAMP
Tecnologia em Análise e Desenvolvimento de Sistemas
Linguagem de Programação III - Classes Abstratas

Agenda
•
•
•
•
•
•
•
•
•
•

2

Definição
Quando usar?
Um exemplo no mundo real
O mesmo exemplo utilizando classes
Em Java
Métodos abstratos
As classes concretas
Aumentando o exemplo
Por que não utilizar herança comum?
Conclusão

Lucas
Linguagem de Programação III - Classes Abstratas

Definição
“Classes abstratas organizam elementos comum
a várias classes.”
James Rumbaugh
Classes abstratas são superclasses que servem
apenas de modelo para classes concretas,
portanto não podem ser instanciadas
diretamente.

3

Lucas
Linguagem de Programação III - Classes Abstratas

Quando usar?
Usamos classes abstratas para representar
grupos que tem características em comum, mas
que diferem em detalhes específicos.
A classe abstrata implementa somente as
características gerais e seus métodos abstratos
são implementados nas subclasses com suas
peculiaridades.

4

Levy
Linguagem de Programação III - Classes Abstratas

Um exemplo no

mundo real

5

Levy
Imagine um animal...
Mas qual animal?
Linguagem de Programação III - Classes Abstratas

O mesmo exemplo utilizando
classes
Animal é a nossa classe
abstrata, pois serve de
base para as classes
concretas, Gato e
Cachorro, por exemplo.

7

Levy
Em Java
Linguagem de Programação III - Classes Abstratas

Em Java
Utilizamos a palavra-chave abstract para declarar
uma classe abstrata:
public abstract class Animal {
public void Andar() {
System.out.println("Estou andando!");
}
}

9

Jéssica
Linguagem de Programação III - Classes Abstratas

Em Java
Então já posso instanciar a minha classe abstrata
assim?
Animal animal = new Animal();

Não!
Você não pode instanciar uma classe abstrata!

10

Jéssica
Linguagem de Programação III - Classes Abstratas

Métodos abstratos
Podemos definir um método como abstrato, isso quer
dizer que ele deverá ser implementado nas classes
concretas.
Em Java, para declarar um método como abstrato
também utilizamos a palavra-chave abstract:
public abstract class Animal {
public abstract void FazerSom();

public void Andar() {
System.out.println("Estou andando!");
}
}
11

Jéssica
Linguagem de Programação III - Classes Abstratas

As classes concretas
public class Gato extends Animal {
public void FazerSom() {
System.out.println("Miau! miau!");
}
}
public class Cachorro extends Animal {
public void FazerSom() {
System.out.println("Au! Au!");
}
}

12

Jéssica
Linguagem de Programação III - Classes Abstratas

As classes concretas
Agora sim podemos instanciar um animal
específico:
Gato gato = new Gato();
gato.Andar(); // “Estou andando!”
gato.FazerSom(); // “Miau! Miau!”

Ou até mesmo:
Animal cachorro = new Cachorro();
cachorro.Andar(); // “Estou andando!”
cachorro.FazerSom(); // “Au! Au!”

13

Jéssica
Linguagem de Programação III - Classes Abstratas

Aumentando o exemplo

14

Danilo
Linguagem de Programação III - Classes Abstratas

Por que não utilizar herança
comum?
A única diferença é que não podemos instanciar
a classe abstrata, e se tratando de conceitos
abstratos, dá mais consistência ao sistema.
A decisão de transformar ou não uma classe em
abstrata depende do seu domínio.

15

Danilo
Linguagem de Programação III - Classes Abstratas

Conclusão
Classe abstrata é um recurso que podemos
utilizar quando queremos compartilhar
funcionalidades em comum entre classes, mas
não queremos permitir que ela seja instanciada
diretamente.

16

Danilo
Linguagem de Programação III - Classes Abstratas

Referências
• http://www.caelum.com.br/apostila-javaorientacao-objetos/classes-abstratas/
• http://www.inf.pucrs.br/flash/lapro2/aula_heran
ca/
• http://www.javaprogressivo.net/2012/10/Polimo
rfismo--Classes-abstratas-e-Metodosabstratos.html

17

Danilo
Dúvidas?

Ou mande um e-mail com sua dúvida para:
g5.classes.abstratas@gmail.com
Linguagem de Programação III - Classes Abstratas

Obrigado!

19

Apresentação - Classes Abstratas em Java

  • 1.
    Classes Abstratas Linguagem de ProgramaçãoIII Faculdade de Teconologia da UNICAMP Tecnologia em Análise e Desenvolvimento de Sistemas
  • 2.
    Linguagem de ProgramaçãoIII - Classes Abstratas Agenda • • • • • • • • • • 2 Definição Quando usar? Um exemplo no mundo real O mesmo exemplo utilizando classes Em Java Métodos abstratos As classes concretas Aumentando o exemplo Por que não utilizar herança comum? Conclusão Lucas
  • 3.
    Linguagem de ProgramaçãoIII - Classes Abstratas Definição “Classes abstratas organizam elementos comum a várias classes.” James Rumbaugh Classes abstratas são superclasses que servem apenas de modelo para classes concretas, portanto não podem ser instanciadas diretamente. 3 Lucas
  • 4.
    Linguagem de ProgramaçãoIII - Classes Abstratas Quando usar? Usamos classes abstratas para representar grupos que tem características em comum, mas que diferem em detalhes específicos. A classe abstrata implementa somente as características gerais e seus métodos abstratos são implementados nas subclasses com suas peculiaridades. 4 Levy
  • 5.
    Linguagem de ProgramaçãoIII - Classes Abstratas Um exemplo no mundo real 5 Levy
  • 6.
  • 7.
    Linguagem de ProgramaçãoIII - Classes Abstratas O mesmo exemplo utilizando classes Animal é a nossa classe abstrata, pois serve de base para as classes concretas, Gato e Cachorro, por exemplo. 7 Levy
  • 8.
  • 9.
    Linguagem de ProgramaçãoIII - Classes Abstratas Em Java Utilizamos a palavra-chave abstract para declarar uma classe abstrata: public abstract class Animal { public void Andar() { System.out.println("Estou andando!"); } } 9 Jéssica
  • 10.
    Linguagem de ProgramaçãoIII - Classes Abstratas Em Java Então já posso instanciar a minha classe abstrata assim? Animal animal = new Animal(); Não! Você não pode instanciar uma classe abstrata! 10 Jéssica
  • 11.
    Linguagem de ProgramaçãoIII - Classes Abstratas Métodos abstratos Podemos definir um método como abstrato, isso quer dizer que ele deverá ser implementado nas classes concretas. Em Java, para declarar um método como abstrato também utilizamos a palavra-chave abstract: public abstract class Animal { public abstract void FazerSom(); public void Andar() { System.out.println("Estou andando!"); } } 11 Jéssica
  • 12.
    Linguagem de ProgramaçãoIII - Classes Abstratas As classes concretas public class Gato extends Animal { public void FazerSom() { System.out.println("Miau! miau!"); } } public class Cachorro extends Animal { public void FazerSom() { System.out.println("Au! Au!"); } } 12 Jéssica
  • 13.
    Linguagem de ProgramaçãoIII - Classes Abstratas As classes concretas Agora sim podemos instanciar um animal específico: Gato gato = new Gato(); gato.Andar(); // “Estou andando!” gato.FazerSom(); // “Miau! Miau!” Ou até mesmo: Animal cachorro = new Cachorro(); cachorro.Andar(); // “Estou andando!” cachorro.FazerSom(); // “Au! Au!” 13 Jéssica
  • 14.
    Linguagem de ProgramaçãoIII - Classes Abstratas Aumentando o exemplo 14 Danilo
  • 15.
    Linguagem de ProgramaçãoIII - Classes Abstratas Por que não utilizar herança comum? A única diferença é que não podemos instanciar a classe abstrata, e se tratando de conceitos abstratos, dá mais consistência ao sistema. A decisão de transformar ou não uma classe em abstrata depende do seu domínio. 15 Danilo
  • 16.
    Linguagem de ProgramaçãoIII - Classes Abstratas Conclusão Classe abstrata é um recurso que podemos utilizar quando queremos compartilhar funcionalidades em comum entre classes, mas não queremos permitir que ela seja instanciada diretamente. 16 Danilo
  • 17.
    Linguagem de ProgramaçãoIII - Classes Abstratas Referências • http://www.caelum.com.br/apostila-javaorientacao-objetos/classes-abstratas/ • http://www.inf.pucrs.br/flash/lapro2/aula_heran ca/ • http://www.javaprogressivo.net/2012/10/Polimo rfismo--Classes-abstratas-e-Metodosabstratos.html 17 Danilo
  • 18.
    Dúvidas? Ou mande ume-mail com sua dúvida para: g5.classes.abstratas@gmail.com
  • 19.
    Linguagem de ProgramaçãoIII - Classes Abstratas Obrigado! 19