SlideShare uma empresa Scribd logo
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

Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Leinylson Fontinele
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
Arthur Emanuel
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
Professor Samuel Ribeiro
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
soncino
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
Professor Samuel Ribeiro
 
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
Fernando Belome Feltrin
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
Adao Chiavelli
 
Programação orientada a objetos: herança
Programação orientada a objetos: herançaProgramação orientada a objetos: herança
Programação orientada a objetos: herança
Ivan Ricarte
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informação
Leonardo Melo Santos
 
Capítulo 11 - Como desenvolver sistemas de informação e gerenciar projetos
Capítulo 11 - Como desenvolver sistemas de informação e gerenciar projetosCapítulo 11 - Como desenvolver sistemas de informação e gerenciar projetos
Capítulo 11 - Como desenvolver sistemas de informação e gerenciar projetos
Everton Souza
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
Natanael Fonseca
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Lorran Pegoretti
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
Cinthia Pineroli Galvão
 
Aula 3 algoritmos
Aula 3   algoritmosAula 3   algoritmos
Aula 3 algoritmos
Patrick_turma10
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
Ludimila Monjardim Casagrande
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
Felipe J. R. Vieira
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
Mauro Pereira
 
LGPD Lei Geral de Proteção de Dados Pessoais
LGPD Lei Geral de Proteção de Dados PessoaisLGPD Lei Geral de Proteção de Dados Pessoais
LGPD Lei Geral de Proteção de Dados Pessoais
Douglas Siviotti
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
Gustavo Lopes
 
20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sites20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sites
UOLHOST
 

Mais procurados (20)

Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Programação orientada a objetos: herança
Programação orientada a objetos: herançaProgramação orientada a objetos: herança
Programação orientada a objetos: herança
 
Fundamentos de sistemas de informação
Fundamentos de sistemas de informaçãoFundamentos de sistemas de informação
Fundamentos de sistemas de informação
 
Capítulo 11 - Como desenvolver sistemas de informação e gerenciar projetos
Capítulo 11 - Como desenvolver sistemas de informação e gerenciar projetosCapítulo 11 - Como desenvolver sistemas de informação e gerenciar projetos
Capítulo 11 - Como desenvolver sistemas de informação e gerenciar projetos
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Aula 3 algoritmos
Aula 3   algoritmosAula 3   algoritmos
Aula 3 algoritmos
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
LGPD Lei Geral de Proteção de Dados Pessoais
LGPD Lei Geral de Proteção de Dados PessoaisLGPD Lei Geral de Proteção de Dados Pessoais
LGPD Lei Geral de Proteção de Dados Pessoais
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sites20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sites
 

Destaque

Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
Arthur Emanuel
 
Java 16
Java 16Java 16
Introdução a Java IO
Introdução a Java IOIntrodução a Java IO
Introdução a Java IO
rdgse
 
Introdução a psk e qam
Introdução  a   psk  e  qamIntrodução  a   psk  e  qam
Introdução a psk e qam
Rogério Cardoso
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
Pedro De Almeida
 
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
Felipe J. R. Vieira
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivos
Paulo Fonseca
 

Destaque (8)

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
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivos
 

Semelhante a Java: Classes Abstratas, Anônimas, Interface

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
Arthur 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 Objetos
guest9b4c7f
 
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
Daniel Brandão
 
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
Arthur Emanuel
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
Natanael Fonseca
 
Java11
Java11Java11
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
Elaine Cecília Gatto
 
08 modificadores static
08   modificadores static08   modificadores static
08 modificadores static
Artur Todeschini
 
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
Wesley 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 Java
Cristiano Almeida
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
Endel Silva
 
POO - Aula 003
POO - Aula 003POO - 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
José 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 1 5
Aula 1 5Aula 1 5
Aula 1 5
Aparicio Junior
 
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
Rafael Pinheiro
 
Aula 3.ppt
Aula 3.pptAula 3.ppt
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
Saulo Arruda
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalize
Artur Todeschini
 
Tutorial Java: Herança
Tutorial Java: HerançaTutorial Java: Herança
Tutorial Java: Herança
Elaine Cecília Gatto
 

Semelhante a Java: Classes Abstratas, Anônimas, Interface (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
 
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
 
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
 

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 Learning
Arthur 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ícios
Arthur Emanuel
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com Facebook
Arthur 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, Multimidia
Arthur 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 Menu
Arthur 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 Som
Arthur 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 Colisao
Arthur 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áculos
Arthur 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 Jogo
Arthur 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 Jogo
Arthur Emanuel
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - Exercício
Arthur Emanuel
 
CSS 3
CSS 3CSS 3
CSS
CSSCSS
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
Arthur Emanuel
 
HTML - Introducao
HTML - Introducao HTML - Introducao
HTML - Introducao
Arthur Emanuel
 
Android - Google Maps
Android - Google MapsAndroid - Google Maps
Android - Google Maps
Arthur Emanuel
 
Android - Bluetooth
Android - BluetoothAndroid - Bluetooth
Android - Bluetooth
Arthur Emanuel
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPS
Arthur Emanuel
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo Webservices
Arthur Emanuel
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
Arthur 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
 
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
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
 

Último

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 

Último (8)

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 

Java: Classes Abstratas, Anônimas, Interface

  • 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