Apresentação - Classes Abstratas em Java

Post on 09-Jul-2015

89 views 5 download

Transcript of Apresentação - Classes Abstratas em Java

Classes

Faculdade de Teconologia da UNICAMP

Tecnologia em Análise e Desenvolvimento de

Sistemas

Linguagem de Programação III

Abstrat

as

Agenda

• 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

2

Linguagem de Programação III - Classes Abstratas

Lucas

Classes abstratas são superclasses

que servem apenas de modelo para

classes concretas, portanto não podem

ser instanciadas diretamente.

“Classes abstratas organizam

elementos comum a várias classes.”

James Rumbaugh

Definição

3

Linguagem de Programação III - Classes Abstratas

Lucas

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.

Quando usar?

4

Linguagem de Programação III - Classes Abstratas

Levy

Um exemplo no

mundo real

5

Linguagem de Programação III - Classes Abstratas

Levy

Imagine um

animal... Mas qual

animal?

Animal é a nossa

classe abstrata,

pois serve de base

para as classes

concretas, Gato e

Cachorro, por

exemplo.

O mesmo exemplo

utilizando

classes

7

Linguagem de Programação III - Classes Abstratas

Levy

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

Linguagem de Programação III - Classes Abstratas

Jéssica

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

Linguagem de Programação III - Classes Abstratas

Jéssica

Em Java

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:

11

Linguagem de Programação III - Classes Abstratas

Jéssica

Métodos abstratos

public abstract class Animal {

public abstract void FazerSom();

public void Andar() {

System.out.println("Estou andando!");

}

}

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

Linguagem de Programação III - Classes Abstratas

Jéssica

As classes concretas

13

Linguagem de Programação III - Classes Abstratas

Jéssica

As classes concretas

Agora sim podemos instanciar um

animal específico:

Gato gato = new Gato();

gato.Andar(); // “Estou andando!”

gato.FazerSom(); // “Miau! Miau!”

Animal cachorro = new Cachorro();

cachorro.Andar(); // “Estou andando!”

cachorro.FazerSom(); // “Au! Au!”

Ou até mesmo:

14

Linguagem de Programação III - Classes Abstratas

Danilo

Aumentando o exemplo

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.

Por que não utilizar

herança comum?

15

Linguagem de Programação III - Classes Abstratas

Danilo

16

Linguagem de Programação III - Classes Abstratas

Danilo

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.

17

Linguagem de Programação III - Classes Abstratas

Danilo

Referências

• http://www.caelum.com.br/apostila-java-

orientacao-objetos/classes-abstratas/

• http://www.inf.pucrs.br/flash/lapro2/aula_heran

ca/

• http://www.javaprogressivo.net/2012/10/Polimo

rfismo--Classes-abstratas-e-Metodos-

abstratos.html

Dúvidas

?

Ou mande um e-mail com sua dúvida

para:

g5.classes.abstratas@gmail.com

Obrigado!

19

Linguagem de Programação III - Classes Abstratas