SlideShare uma empresa Scribd logo
1 de 25
Classes Abstratas,
Anônimas, Interface
Arthur Emanuel de Oliveira Carosia
Classes Abstratas
• Um caso em que não faz sentido ter um objeto, apesar
da classe existir:
– imagine a classe Pessoa e duas filhas, PessoaFisica e
PessoaJuridica.
– Quando puxamos um relatório de nossos clientes (uma
array de Pessoa por exemplo), queremos que cada um
deles seja ou uma PessoaFisica, ou uma PessoaJuridica.
– A classe Pessoa, nesse caso, estaria sendo usada apenas
para ganhar o polimorfismo e herdar algumas coisas: não
faz sentido permitir instanciá-la.
• Para resolver esses problemas, temos as classes
abstratas.
Classes Abstratas
• Usamos a palavra chave abstract para impedir
que uma classe possa ser instanciada.
• Ela é uma classe que apenas idealiza um tipo,
define apenas um rascunho.
Classes Abstratas
Classes Abstratas
Classes Abstratas
• Servem para aplicar o polimorfismo e herança
dos atributos e métodos, que são recursos
muito poderosos.
Métodos Abstratos
• Cada classe filha terá um método diferente de
bonificação
– Queremos que cada pessoa que escreve a classe
de um Funcionario diferente (subclasses
de Funcionario) reescreva o
método getBonificacao de acordo com as suas
regras.
Métodos Abstratos
• Existe um recurso em Java que, em uma classe
abstrata, podemos escrever que determinado
método será sempre escrito pelas classes filhas.
Isto é, um método abstrato.
• Ele indica que todas as classes filhas (concretas,
isto é, que não forem abstratas) devem
reescrever esse método ou não compilarão. É
como se você herdasse a responsabilidade de ter
aquele método
Classes Abstratas + Métodos Abstratos
Classes Abstratas + Métodos Abstratos
• Repare que não colocamos o corpo do método e usamos a
palavra chave abstract para definir o mesmo.
• Esse método nunca vai ser chamado, sempre que alguém
chamar o método getBonificacao, vai cair em uma das suas
filhas, que realmente escreveram o método.
• Qualquer classe que estender a classe Funcionario será
obrigada a reescrever este método, tornando-o "concreto".
Se não reescreverem esse método, um erro de compilação
ocorrerá.
• Uma classe abstrata não precisa necessariamente ter um
método abstrato.
Exercício
• Implemente com o uso de interface gráfica em
Swing e classes abstratas um programa que
modele a seguinte situação:
– Uma Conta Corrente possui seu saldo atual, que
corresponde a 99% do valor corrente disponível,
devido a impostos cobrados.
– Uma Conta Poupança possui seu saldo atual, que
corresponde a 102% do valor corrente disponível,
devido à aplicação valorizada.
• Crie uma classe abstrata Conta com um método
abstrato determinarSaldo() para representar essa
situação.
Exercício
• O seguinte diagrama é válido?
Interface
• Toda classe define 2 itens:
– o que uma classe faz (as assinaturas dos métodos)
– como uma classe faz essas tarefas (o corpo dos
métodos e atributos privados)
• Podemos criar um "contrato" que define tudo o
que uma classe deve fazer se quiser ter um
determinado status.
• A classe que quiser, pode "assinar" esse contrato.
Interface
• Interface é a maneira através da qual conversamos
com um objeto.
• Uma interface pode definir uma série de métodos,
mas nunca conter implementação deles. Ela só
expõe o que o objeto deve fazer, e não como ele faz,
nem o que ele tem. Como ele faz vai ser definido em
uma implementação dessa interface.
Interface
• Uma classe deve implementar essa interface,
escrevendo os métodos pedidos pela interface
– Semelhante com o efeito de herdar métodos abstratos
– Métodos de uma interface são públicos e abstratos
Interface
Interface
• A partir de agora, podemos tratar
um Gerente como sendo um Autenticavel.
• Mais uma forma de referenciar a um Gerente.
• Polimorfismo
Exercício
• Crie a interface AreaCalculavel, com o método abstrato
calculaArea, que quando implementado deve calcular a
área geométrica da classe.
• Desenvolva as seguintes classes implementando a
interface AreaCalculavel:
– a classe Quadrado, com o atributo lado
– Retangulo, com largura e altura
• Teste ambas as classes utilizando o polimorfismo de
AreaCalculavel.
• Crie uma inteface gráfica em Swing que calcule tanto a
área do quadrado como de um retângulo utilizando o
código desenvolvido.
Classes Internas
• Classes internas são classes declaradas dentro
de outras classes.
• Uma classe interna tem
nome Externa.Interna pois faz parte do objeto
da classe externa.
Classes Internas
• A vantagem é não precisar de um arquivo
separado e que classes internas podem
acessar tudo que a externa possui (métodos,
atributos etc).
• É possível até encapsular essa classe interna
marcando-a como private. Dessa forma,
apenas a externa pode enxergar.
• São classes normais, que podem implementar
interfaces, ter métodos, ser instanciadas etc.
Classe Anônima
• Uma forma mais específica de classe interna é
a chamada classe anônima que é muito vista
em códigos com Swing.
• De forma simples, cria-se uma classe sem
mesmo declarar seu nome em momento
algum.
Classe Anônima
• É necessário um objeto do tipo ActionListener para passar
para nosso botão.
• Normalmente criaríamos uma nova classe para isso e
daríamos new nela.
• Usando classes anônimas damos new e implementamos a
classe ao mesmo tempo, usando a sintaxe a seguir.
Classe Anônima
• Como criamos uma classe no momento que
precisamos, é comum nos perguntarmos qual é o
nome dessa classe criada.
• Ninguém definiu o nome para essa implementação
particular de um ActionListener, então, por não ter
nome definido, classes como essas são chamadas de
classes anônimas.
Exercícios
• Desenvolva uma interface gráfica em Swing para o
seguinte problema.
• Em um jogo, existem aviões e pássaros.
• Ambos são Objetos do Jogo e possuem em comum o
seu tamanho, ponto x e ponto y.
• No entanto, Aviões podem atirar e pássaros não.
Desenvolva uma interface, denominada Atirador, com
o método atirar, que deve ser obrigatoriamente
implementado por avião como uma linha que se
tornará visível entre o avião e um pássaro no jogo.
• Obs: na interface, o avião e o pássaro podem ser
definidos como botões de diferentes tamanhos. O
avião irá atirar quando seu botão for pressionado.
Classes Abstratas,
Anônimas, Interface
Arthur Emanuel de Oliveira Carosia

Mais conteúdo relacionado

Mais procurados

Tutorial mind meister
Tutorial mind meisterTutorial mind meister
Tutorial mind meisterValdite
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
amostragem
amostragemamostragem
amostragemsocram01
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdfSecont
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch caseAlessandra Sra JM
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)Gustavo Zimmermann
 

Mais procurados (20)

Tutorial mind meister
Tutorial mind meisterTutorial mind meister
Tutorial mind meister
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
07 html formulários
07 html   formulários07 html   formulários
07 html formulários
 
Java Lista Exercicios 03
Java Lista Exercicios 03Java Lista Exercicios 03
Java Lista Exercicios 03
 
Algoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e MatrizesAlgoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e Matrizes
 
amostragem
amostragemamostragem
amostragem
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdf
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Seletores css
Seletores cssSeletores css
Seletores css
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch case
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)HTML5 Básico: Formulários (aula 2)
HTML5 Básico: Formulários (aula 2)
 

Destaque

Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de ArquivosArthur Emanuel
 
Introdução a Java IO
Introdução a Java IOIntrodução a Java IO
Introdução a Java IOrdgse
 
POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfaceFelipe J. R. Vieira
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivosPaulo Fonseca
 

Destaque (7)

Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
 
Java 16
Java 16Java 16
Java 16
 
Introdução a Java IO
Introdução a Java IOIntrodução a Java IO
Introdução a Java IO
 
Introdução a psk e qam
Introdução  a   psk  e  qamIntrodução  a   psk  e  qam
Introdução a psk e qam
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
 
POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e Interface
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivos
 

Semelhante a Classes abstratas, anônimas e interfaces

Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetosguest9b4c7f
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosArthur Emanuel
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Elaine Cecília Gatto
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetosWesley R. Bezerra
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Curso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de ProgramacaoCurso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de ProgramacaoJosé Araújo
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#biandamakengo08
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfacesRafael Pinheiro
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalizeArtur Todeschini
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em javaDiogo Winck
 

Semelhante a Classes abstratas, anônimas e interfaces (20)

Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a Objetos
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Java11
Java11Java11
Java11
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
08 modificadores static
08   modificadores static08   modificadores static
08 modificadores static
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Curso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de ProgramacaoCurso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de Programacao
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Aula 1 5
Aula 1 5Aula 1 5
Aula 1 5
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Aula 3.ppt
Aula 3.pptAula 3.ppt
Aula 3.ppt
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalize
 
Tutorial Java: Herança
Tutorial Java: HerançaTutorial Java: Herança
Tutorial Java: Herança
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em java
 

Mais de Arthur Emanuel

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningArthur Emanuel
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosArthur Emanuel
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com FacebookArthur Emanuel
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaDesenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaArthur Emanuel
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuAula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuArthur Emanuel
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomAula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomArthur Emanuel
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoAula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoArthur Emanuel
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosAula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosArthur Emanuel
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoAula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoArthur Emanuel
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoAula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoArthur Emanuel
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioArthur Emanuel
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
HTML -  Listas, Estilos, Tabelas, Div, Span, FormulárioHTML -  Listas, Estilos, Tabelas, Div, Span, Formulário
HTML - Listas, Estilos, Tabelas, Div, Span, FormulárioArthur Emanuel
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPSArthur Emanuel
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo WebservicesArthur Emanuel
 

Mais de Arthur Emanuel (20)

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - Exercícios
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com Facebook
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaDesenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuAula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomAula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoAula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosAula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoAula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoAula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - Exercício
 
CSS 3
CSS 3CSS 3
CSS 3
 
CSS
CSSCSS
CSS
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
HTML -  Listas, Estilos, Tabelas, Div, Span, FormulárioHTML -  Listas, Estilos, Tabelas, Div, Span, Formulário
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
 
HTML - Introducao
HTML - Introducao HTML - Introducao
HTML - Introducao
 
Android - Google Maps
Android - Google MapsAndroid - Google Maps
Android - Google Maps
 
Android - Bluetooth
Android - BluetoothAndroid - Bluetooth
Android - Bluetooth
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPS
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo Webservices
 

Classes abstratas, anônimas e interfaces

  • 2. Classes Abstratas • Um caso em que não faz sentido ter um objeto, apesar da classe existir: – imagine a classe Pessoa e duas filhas, PessoaFisica e PessoaJuridica. – Quando puxamos um relatório de nossos clientes (uma array de Pessoa por exemplo), queremos que cada um deles seja ou uma PessoaFisica, ou uma PessoaJuridica. – A classe Pessoa, nesse caso, estaria sendo usada apenas para ganhar o polimorfismo e herdar algumas coisas: não faz sentido permitir instanciá-la. • Para resolver esses problemas, temos as classes abstratas.
  • 3. Classes Abstratas • Usamos a palavra chave abstract para impedir que uma classe possa ser instanciada. • Ela é uma classe que apenas idealiza um tipo, define apenas um rascunho.
  • 6. Classes Abstratas • Servem para aplicar o polimorfismo e herança dos atributos e métodos, que são recursos muito poderosos.
  • 7. Métodos Abstratos • Cada classe filha terá um método diferente de bonificação – Queremos que cada pessoa que escreve a classe de um Funcionario diferente (subclasses de Funcionario) reescreva o método getBonificacao de acordo com as suas regras.
  • 8. Métodos Abstratos • Existe um recurso em Java que, em uma classe abstrata, podemos escrever que determinado método será sempre escrito pelas classes filhas. Isto é, um método abstrato. • Ele indica que todas as classes filhas (concretas, isto é, que não forem abstratas) devem reescrever esse método ou não compilarão. É como se você herdasse a responsabilidade de ter aquele método
  • 9. Classes Abstratas + Métodos Abstratos
  • 10. Classes Abstratas + Métodos Abstratos • Repare que não colocamos o corpo do método e usamos a palavra chave abstract para definir o mesmo. • Esse método nunca vai ser chamado, sempre que alguém chamar o método getBonificacao, vai cair em uma das suas filhas, que realmente escreveram o método. • Qualquer classe que estender a classe Funcionario será obrigada a reescrever este método, tornando-o "concreto". Se não reescreverem esse método, um erro de compilação ocorrerá. • Uma classe abstrata não precisa necessariamente ter um método abstrato.
  • 11. Exercício • Implemente com o uso de interface gráfica em Swing e classes abstratas um programa que modele a seguinte situação: – Uma Conta Corrente possui seu saldo atual, que corresponde a 99% do valor corrente disponível, devido a impostos cobrados. – Uma Conta Poupança possui seu saldo atual, que corresponde a 102% do valor corrente disponível, devido à aplicação valorizada. • Crie uma classe abstrata Conta com um método abstrato determinarSaldo() para representar essa situação.
  • 12. Exercício • O seguinte diagrama é válido?
  • 13. Interface • Toda classe define 2 itens: – o que uma classe faz (as assinaturas dos métodos) – como uma classe faz essas tarefas (o corpo dos métodos e atributos privados) • Podemos criar um "contrato" que define tudo o que uma classe deve fazer se quiser ter um determinado status. • A classe que quiser, pode "assinar" esse contrato.
  • 14. Interface • Interface é a maneira através da qual conversamos com um objeto. • Uma interface pode definir uma série de métodos, mas nunca conter implementação deles. Ela só expõe o que o objeto deve fazer, e não como ele faz, nem o que ele tem. Como ele faz vai ser definido em uma implementação dessa interface.
  • 15. Interface • Uma classe deve implementar essa interface, escrevendo os métodos pedidos pela interface – Semelhante com o efeito de herdar métodos abstratos – Métodos de uma interface são públicos e abstratos
  • 17. Interface • A partir de agora, podemos tratar um Gerente como sendo um Autenticavel. • Mais uma forma de referenciar a um Gerente. • Polimorfismo
  • 18. Exercício • Crie a interface AreaCalculavel, com o método abstrato calculaArea, que quando implementado deve calcular a área geométrica da classe. • Desenvolva as seguintes classes implementando a interface AreaCalculavel: – a classe Quadrado, com o atributo lado – Retangulo, com largura e altura • Teste ambas as classes utilizando o polimorfismo de AreaCalculavel. • Crie uma inteface gráfica em Swing que calcule tanto a área do quadrado como de um retângulo utilizando o código desenvolvido.
  • 19. Classes Internas • Classes internas são classes declaradas dentro de outras classes. • Uma classe interna tem nome Externa.Interna pois faz parte do objeto da classe externa.
  • 20. Classes Internas • A vantagem é não precisar de um arquivo separado e que classes internas podem acessar tudo que a externa possui (métodos, atributos etc). • É possível até encapsular essa classe interna marcando-a como private. Dessa forma, apenas a externa pode enxergar. • São classes normais, que podem implementar interfaces, ter métodos, ser instanciadas etc.
  • 21. Classe Anônima • Uma forma mais específica de classe interna é a chamada classe anônima que é muito vista em códigos com Swing. • De forma simples, cria-se uma classe sem mesmo declarar seu nome em momento algum.
  • 22. Classe Anônima • É necessário um objeto do tipo ActionListener para passar para nosso botão. • Normalmente criaríamos uma nova classe para isso e daríamos new nela. • Usando classes anônimas damos new e implementamos a classe ao mesmo tempo, usando a sintaxe a seguir.
  • 23. Classe Anônima • Como criamos uma classe no momento que precisamos, é comum nos perguntarmos qual é o nome dessa classe criada. • Ninguém definiu o nome para essa implementação particular de um ActionListener, então, por não ter nome definido, classes como essas são chamadas de classes anônimas.
  • 24. Exercícios • Desenvolva uma interface gráfica em Swing para o seguinte problema. • Em um jogo, existem aviões e pássaros. • Ambos são Objetos do Jogo e possuem em comum o seu tamanho, ponto x e ponto y. • No entanto, Aviões podem atirar e pássaros não. Desenvolva uma interface, denominada Atirador, com o método atirar, que deve ser obrigatoriamente implementado por avião como uma linha que se tornará visível entre o avião e um pássaro no jogo. • Obs: na interface, o avião e o pássaro podem ser definidos como botões de diferentes tamanhos. O avião irá atirar quando seu botão for pressionado.
  • 25. Classes Abstratas, Anônimas, Interface Arthur Emanuel de Oliveira Carosia