SlideShare una empresa de Scribd logo
1 de 4
TUTORIAL JAVA:
INTERFACES
DISCIPLINA: LINGUAGEM DE
PROGRAMAÇÃO II
Prof.ª M.ª Eng.ª Elaine Cecília Gatto
Bauru-SP
2015
_____________________________________
Página 2 de 4
INTRODUÇÃO
Este tutorial foi feito com base no livro JAVA COMO PROGRAMAR dos autores DEITEL & DEITEL. Neste
Tutorial reexaminaremos o sistema de folha de pagamento utilizando Interfaces. No Tutorial anterior, o mesmo sistema foi
feito utilizando polimorfismo.
Suponha que a empresa deseja realizar várias operações de contabilidade em um único aplicativo Java de contas a
apagar. Além de calcular os vencimentos que devem ser pagos para cada funcionário, a empresa também deve calcular o
pagamento devido de cada uma das várias faturas – ou seja, contas de mercadorias adquiridas. Embora aplicadas a coisas não
relacionadas – ou seja, funcionários e faturas – as duas operações tema ver coma obtenção de alguma quantia de pagamento.
Para um funcionário, o pagamento refere-se aos vencimentos do funcionário. Para uma fatura, o pagamento refere-se
ao custo totaldas mercadorias listadas na fatura. Poderíamos, então,calcular coisas tão diferentes como os pagamentos devidos
a funcionários e faturas em um único aplicativo de forma polimórfica? A resposta é SIM, pois, o Java oferece uma capacidade
que exige que classes não relacionadas implementem um conjunto de métodos comuns – por exemplo, ummétodo que calcula
a quantia de um pagamento – as Interfaces do Java oferecem exatamente essa capacidade.
1: Desenvolvendo a hierarquia Pagamento
Observe a Figura (10.10) abaixo. Ela auxiliará na criação de um aplicativo Java que determinará os pagamentos para
funcionários e faturas semelhantes. Esta Interface contém um método que retorna um valor que deve ser pago para umobjeto
de qualquer classe que a implemente. O método é uma versão de uso geral do método EARNINGS da hierarquia
EMPREGADO – o método EARNINGS calcula especificamente um valor de pagamento para uma classe EMPREGADO,
enquanto que o método da Interface pode ser aplicado a umamplo intervalo de objetos não relacionados.
As classes FATURA e EMPREGADO representam aspectos para os quais a empresa deve ser capaz de calcular um
valor de pagamento. As duas classes implementam PAGAMENTO, assim um programa pode invocar o método da Interface
em objetos FATURA e em objetos EMPREGADO semelhantes. Isso permite o processamento polimórfico de classes
necessárias ao aplicativo.
_____________________________________
Página 3 de 4
2: Declarando a Interface Pagamento
Entre no Netbeans. Vá ao menu arquivo, escolha a opção NOVO PROJETO. Selecione Java, Aplicação Java e clique
em próximo. Em seguida, dê o nome ao projeto de Tutorial3 e desmarque a opção para criar automaticamente uma classe Java
principal. Quando o projeto estiver criado, clique com o botão direito em cima do nome do projeto, selecione NOVO, escolha
NOVO PACOTE e dê o nome de “br.com.tutorial3”. Agora, clique com o botão direito no pacote e escolha NOVO. Peça uma
nova INTERFACE Java. Dê a ela o nome de “Pagamento”. Agora adicione o método double getPaymentAmount(); na
Interface.
3: Criando a classe Fatura
A classe FATURA representa uma fatura simples que contéminformações de cobrança para somente umtipo de peça.
Como ocorre com todas as classes, a classe FATURA também estende implicitamente OBJECT. O Java não permite que
subclasses herdem de mais de uma superclasse, mas permitem que uma classe herde de uma superclasse E implemente mais de
uma interface. Uma classe pode implementar quantas interfaces precisar, além de estender outra classe. Todos os objetos de
uma classe que implementam múltiplas interfaces tem o relacionamento É UM com cada tipo de interface implementado.
Passo 1: Clique com o botão direito sob o pacote da classe “br.com.tutorial2”. Selecione NOVO. Selecione CLASSE JAVA.
Dê a ela o nome de Fatura. Em seguida, faça esta classe IMPLEMENTAR a inferface Fatura. (public class Fatura implements
Pagamento)
Passo 2: Crie o seguinte atributo PRIVADO da classe: private String numeroPeça; private String descricaoPeça; private int
quantidadePedida; private double precoPorItem;
Passo 3: Crie um construtor vazio
Passo 4: Crie os construtores parametrizados
Passo 5: Crie os métodos SET e GET
Passo 6: Modifique o método
public void setQuantidadePedida(int quantidadePedida) {
this.quantidadePedida = (quantidadePedida < 0) ? 0 : quantidadePedida;
}
Passo 7: Modifique o método
public void setPrecoPorItem(double precoPorItem) {
this.precoPorItem = (precoPorItem < 0.0) ? 0.0 : precoPorItem;
}
Passo 8: Adicione os métodos abaixo ao final da classe
@Override
public String toString() {
return String.format("%s: n%s: %s (%s) n%s: %d n%s: $%,.2f", "invoice", "part
number", getNumeroPeça(), getDescricaoPeça(), "quantity", getQuantidadePedida(), "price per
item", getPrecoPorItem());
}
@Override
public double getPaymentAmount() {
return getQuantidadePedida() * getPrecoPorItem();
}
_____________________________________
Página 4 de 4
4: Modificando a classe EMPREGADO para implementar a interface PAGAMENTO
A classe EMPREGADO será modificada para que ela implemente a interface PAGAMENTO. Quando uma classe
implementa uma interface, a classe faz um contrato com o compilador afirmando que a classe implementará cada um dos
métodos na interface ou que a classe será declarada ABSTRACT. Se a última opção for escolhida, não precisamos declarar os
métodos de interface como abstract na classe abstrata – eles já o são implicitamente. Qualquer subclasse concreta da classe
abstrata deve implementar os métodos da interface para cumprir o contrato da superclasse com o compilador. Se a subclasse
não fizer isso, ela também deverá ser declarada como abstract.
Passo 1: Vá no projeto TUTORIAL2. Copie o arquivo EMPREGADO. Vá até o projeto TUTORIAL3. Selecione o pacote da
classe “br.com.tutorial3”. Cole o arquivo ai. Peça para refatorar. Em seguida, faça a classe Empregado implementar a interface
pagamento (public abstract class Empregado implements Pagamento)
5: Modificando a classe SalarioEmpregado para uso na hierarquia PAGAMENTO
Passo 1: Vá no projeto TUTORIAL2. Copie o arquivo SALARIOEMPREGADO. Vá até o projeto TUTORIAL3. Selecione o
pacote da classe “br.com.tutorial3”. Cole o arquivo ai. Peça para refatorar.
Passo 2: Adicione o seguinte método ao final da classe
@Override
public double getPaymentAmount() {
return getSalarioSemanal();
}
6: Utilizando a Interface Pagamento para processar Fatura e Empregado
polimorficamente
Passo 1: Crie uma classe Java Principal chamada Teste
Passo 2: Adicione o seguinte código no programa principal
Pagamento p[] = new Pagamento[4];
p[0] = new Fatura("01234", "seat", 2, 375.00);
p[1] = new Fatura("56789", "tire", 4, 79.95);
p[2] = new SalarioEmpregado(800.00, "John", "Smith", "111-111");
p[3] = new SalarioEmpregado(1200.00, "Lisa", "Barnes", "888-888");
System.out.println(" Faturas e Empregados processados polimorficamente ");
for ( Pagamento pAtual : p) {
System.out.printf("%s n%s: $%,.2fnn", pAtual.toString(), " pagamento ",
pAtual.getPaymentAmount());
}
Passo 3: Limpar e construir o projeto. Executar.

Más contenido relacionado

La actualidad más candente

Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteMarcio Palheta
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)Mario Sergio
 
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoCapítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoMarcio Palheta
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
Capítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de AlunoCapítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de AlunoMarcio Palheta
 
Capítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasCapítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasMarcio Palheta
 
Capítulo 07 - Acesso a câmera e arquivos armazenados no device
Capítulo 07 - Acesso a câmera e arquivos armazenados no deviceCapítulo 07 - Acesso a câmera e arquivos armazenados no device
Capítulo 07 - Acesso a câmera e arquivos armazenados no deviceMarcio Palheta
 
Pacotes -organizando_suas_classes_e_bibliotecas
Pacotes  -organizando_suas_classes_e_bibliotecasPacotes  -organizando_suas_classes_e_bibliotecas
Pacotes -organizando_suas_classes_e_bibliotecasPedro Neto
 
Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2irenescotolo
 
Interfaces POO
Interfaces POOInterfaces POO
Interfaces POOPedro Neto
 

La actualidad más candente (20)

Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLite
 
Java11
Java11Java11
Java11
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
Java12
Java12Java12
Java12
 
Java14
Java14Java14
Java14
 
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoCapítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Mvc delphi
Mvc delphiMvc delphi
Mvc delphi
 
Capítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de AlunoCapítulo 05 - Menus de Contexto e Exclusão de Aluno
Capítulo 05 - Menus de Contexto e Exclusão de Aluno
 
Capítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telasCapítulo 03 - Formulários, menus e navegação entre telas
Capítulo 03 - Formulários, menus e navegação entre telas
 
Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
Capítulo 07 - Acesso a câmera e arquivos armazenados no device
Capítulo 07 - Acesso a câmera e arquivos armazenados no deviceCapítulo 07 - Acesso a câmera e arquivos armazenados no device
Capítulo 07 - Acesso a câmera e arquivos armazenados no device
 
Pacotes -organizando_suas_classes_e_bibliotecas
Pacotes  -organizando_suas_classes_e_bibliotecasPacotes  -organizando_suas_classes_e_bibliotecas
Pacotes -organizando_suas_classes_e_bibliotecas
 
Java2
Java2Java2
Java2
 
Apostila php avancado
Apostila php avancadoApostila php avancado
Apostila php avancado
 
Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2
 
Interfaces POO
Interfaces POOInterfaces POO
Interfaces POO
 
Basico dovba excel_tutorial1
Basico dovba excel_tutorial1Basico dovba excel_tutorial1
Basico dovba excel_tutorial1
 
01 strategy
01 strategy01 strategy
01 strategy
 
Java6
Java6Java6
Java6
 

Similar a Tutorial Java: Interface

05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - IFabio Moura Pereira
 
Design de aplicações orientadas a objeto
Design de aplicações orientadas a objetoDesign de aplicações orientadas a objeto
Design de aplicações orientadas a objetoElaine Naomi
 
TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...
TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...
TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...tdc-globalcode
 
Criando uma aplicação com delphi
Criando uma aplicação com delphiCriando uma aplicação com delphi
Criando uma aplicação com delphiMundo Orbe
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtorRafael Pinheiro
 
Introdução a programação para plataforma iOS
Introdução a programação para plataforma iOSIntrodução a programação para plataforma iOS
Introdução a programação para plataforma iOSDevmedia
 
Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Walney Negreiros
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Classes csharp
Classes csharpClasses csharp
Classes csharpTiago
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosGabriel Schade Cardoso
 
Prática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIPrática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIEverson Wolf
 
Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2Elaine Cecília Gatto
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Ryan Padilha
 
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
 

Similar a Tutorial Java: Interface (20)

05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
 
Design de aplicações orientadas a objeto
Design de aplicações orientadas a objetoDesign de aplicações orientadas a objeto
Design de aplicações orientadas a objeto
 
TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...
TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...
TDC2018SP | Trilha Ruby - Design de aplicacoes orientadas a objeto: uma visao...
 
Criando uma aplicação com delphi
Criando uma aplicação com delphiCriando uma aplicação com delphi
Criando uma aplicação com delphi
 
poster
posterposter
poster
 
Encapsulamento em oo
Encapsulamento em ooEncapsulamento em oo
Encapsulamento em oo
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtor
 
Introdução a programação para plataforma iOS
Introdução a programação para plataforma iOSIntrodução a programação para plataforma iOS
Introdução a programação para plataforma iOS
 
Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de erros
 
Prática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIPrática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação II
 
Refactoring
RefactoringRefactoring
Refactoring
 
Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
 
Apostila Software Arena
Apostila Software ArenaApostila Software Arena
Apostila Software Arena
 
Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
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
 

Más de Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCElaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxElaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarElaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationElaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfElaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoElaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsElaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoElaine Cecília Gatto
 

Más de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Último

HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfmirandadudu08
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 

Último (20)

Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdf
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 

Tutorial Java: Interface

  • 1. TUTORIAL JAVA: INTERFACES DISCIPLINA: LINGUAGEM DE PROGRAMAÇÃO II Prof.ª M.ª Eng.ª Elaine Cecília Gatto Bauru-SP 2015
  • 2. _____________________________________ Página 2 de 4 INTRODUÇÃO Este tutorial foi feito com base no livro JAVA COMO PROGRAMAR dos autores DEITEL & DEITEL. Neste Tutorial reexaminaremos o sistema de folha de pagamento utilizando Interfaces. No Tutorial anterior, o mesmo sistema foi feito utilizando polimorfismo. Suponha que a empresa deseja realizar várias operações de contabilidade em um único aplicativo Java de contas a apagar. Além de calcular os vencimentos que devem ser pagos para cada funcionário, a empresa também deve calcular o pagamento devido de cada uma das várias faturas – ou seja, contas de mercadorias adquiridas. Embora aplicadas a coisas não relacionadas – ou seja, funcionários e faturas – as duas operações tema ver coma obtenção de alguma quantia de pagamento. Para um funcionário, o pagamento refere-se aos vencimentos do funcionário. Para uma fatura, o pagamento refere-se ao custo totaldas mercadorias listadas na fatura. Poderíamos, então,calcular coisas tão diferentes como os pagamentos devidos a funcionários e faturas em um único aplicativo de forma polimórfica? A resposta é SIM, pois, o Java oferece uma capacidade que exige que classes não relacionadas implementem um conjunto de métodos comuns – por exemplo, ummétodo que calcula a quantia de um pagamento – as Interfaces do Java oferecem exatamente essa capacidade. 1: Desenvolvendo a hierarquia Pagamento Observe a Figura (10.10) abaixo. Ela auxiliará na criação de um aplicativo Java que determinará os pagamentos para funcionários e faturas semelhantes. Esta Interface contém um método que retorna um valor que deve ser pago para umobjeto de qualquer classe que a implemente. O método é uma versão de uso geral do método EARNINGS da hierarquia EMPREGADO – o método EARNINGS calcula especificamente um valor de pagamento para uma classe EMPREGADO, enquanto que o método da Interface pode ser aplicado a umamplo intervalo de objetos não relacionados. As classes FATURA e EMPREGADO representam aspectos para os quais a empresa deve ser capaz de calcular um valor de pagamento. As duas classes implementam PAGAMENTO, assim um programa pode invocar o método da Interface em objetos FATURA e em objetos EMPREGADO semelhantes. Isso permite o processamento polimórfico de classes necessárias ao aplicativo.
  • 3. _____________________________________ Página 3 de 4 2: Declarando a Interface Pagamento Entre no Netbeans. Vá ao menu arquivo, escolha a opção NOVO PROJETO. Selecione Java, Aplicação Java e clique em próximo. Em seguida, dê o nome ao projeto de Tutorial3 e desmarque a opção para criar automaticamente uma classe Java principal. Quando o projeto estiver criado, clique com o botão direito em cima do nome do projeto, selecione NOVO, escolha NOVO PACOTE e dê o nome de “br.com.tutorial3”. Agora, clique com o botão direito no pacote e escolha NOVO. Peça uma nova INTERFACE Java. Dê a ela o nome de “Pagamento”. Agora adicione o método double getPaymentAmount(); na Interface. 3: Criando a classe Fatura A classe FATURA representa uma fatura simples que contéminformações de cobrança para somente umtipo de peça. Como ocorre com todas as classes, a classe FATURA também estende implicitamente OBJECT. O Java não permite que subclasses herdem de mais de uma superclasse, mas permitem que uma classe herde de uma superclasse E implemente mais de uma interface. Uma classe pode implementar quantas interfaces precisar, além de estender outra classe. Todos os objetos de uma classe que implementam múltiplas interfaces tem o relacionamento É UM com cada tipo de interface implementado. Passo 1: Clique com o botão direito sob o pacote da classe “br.com.tutorial2”. Selecione NOVO. Selecione CLASSE JAVA. Dê a ela o nome de Fatura. Em seguida, faça esta classe IMPLEMENTAR a inferface Fatura. (public class Fatura implements Pagamento) Passo 2: Crie o seguinte atributo PRIVADO da classe: private String numeroPeça; private String descricaoPeça; private int quantidadePedida; private double precoPorItem; Passo 3: Crie um construtor vazio Passo 4: Crie os construtores parametrizados Passo 5: Crie os métodos SET e GET Passo 6: Modifique o método public void setQuantidadePedida(int quantidadePedida) { this.quantidadePedida = (quantidadePedida < 0) ? 0 : quantidadePedida; } Passo 7: Modifique o método public void setPrecoPorItem(double precoPorItem) { this.precoPorItem = (precoPorItem < 0.0) ? 0.0 : precoPorItem; } Passo 8: Adicione os métodos abaixo ao final da classe @Override public String toString() { return String.format("%s: n%s: %s (%s) n%s: %d n%s: $%,.2f", "invoice", "part number", getNumeroPeça(), getDescricaoPeça(), "quantity", getQuantidadePedida(), "price per item", getPrecoPorItem()); } @Override public double getPaymentAmount() { return getQuantidadePedida() * getPrecoPorItem(); }
  • 4. _____________________________________ Página 4 de 4 4: Modificando a classe EMPREGADO para implementar a interface PAGAMENTO A classe EMPREGADO será modificada para que ela implemente a interface PAGAMENTO. Quando uma classe implementa uma interface, a classe faz um contrato com o compilador afirmando que a classe implementará cada um dos métodos na interface ou que a classe será declarada ABSTRACT. Se a última opção for escolhida, não precisamos declarar os métodos de interface como abstract na classe abstrata – eles já o são implicitamente. Qualquer subclasse concreta da classe abstrata deve implementar os métodos da interface para cumprir o contrato da superclasse com o compilador. Se a subclasse não fizer isso, ela também deverá ser declarada como abstract. Passo 1: Vá no projeto TUTORIAL2. Copie o arquivo EMPREGADO. Vá até o projeto TUTORIAL3. Selecione o pacote da classe “br.com.tutorial3”. Cole o arquivo ai. Peça para refatorar. Em seguida, faça a classe Empregado implementar a interface pagamento (public abstract class Empregado implements Pagamento) 5: Modificando a classe SalarioEmpregado para uso na hierarquia PAGAMENTO Passo 1: Vá no projeto TUTORIAL2. Copie o arquivo SALARIOEMPREGADO. Vá até o projeto TUTORIAL3. Selecione o pacote da classe “br.com.tutorial3”. Cole o arquivo ai. Peça para refatorar. Passo 2: Adicione o seguinte método ao final da classe @Override public double getPaymentAmount() { return getSalarioSemanal(); } 6: Utilizando a Interface Pagamento para processar Fatura e Empregado polimorficamente Passo 1: Crie uma classe Java Principal chamada Teste Passo 2: Adicione o seguinte código no programa principal Pagamento p[] = new Pagamento[4]; p[0] = new Fatura("01234", "seat", 2, 375.00); p[1] = new Fatura("56789", "tire", 4, 79.95); p[2] = new SalarioEmpregado(800.00, "John", "Smith", "111-111"); p[3] = new SalarioEmpregado(1200.00, "Lisa", "Barnes", "888-888"); System.out.println(" Faturas e Empregados processados polimorficamente "); for ( Pagamento pAtual : p) { System.out.printf("%s n%s: $%,.2fnn", pAtual.toString(), " pagamento ", pAtual.getPaymentAmount()); } Passo 3: Limpar e construir o projeto. Executar.