Buscar

Slides: Interfaces

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Presbiteriana Mackenzie 
Interfaces 
Profa. Ana Cristina dos Santos 
Faculdade de Computação e Informática 
Linguagem de Programação I 
Conteúdo 
• Revisão 
– Herança 
– Polimorfismo 
– Classes Abstratas 
• Interfaces 
Interfaces 2 
Interfaces 
• Interface é o mecanismo da Programação 
Orientada à Objetos (POO) que define quais 
ações devem ser obrigatoriamente executadas 
por uma classe 
– Entre suas características, podemos destacar: 
• Cada classe pode executar as ações de formas distintas 
através de métodos com nomes padronizados 
• Todos os métodos de uma interface são abstratos 
• Todos os atributos de uma interface são constantes 
Interfaces 3 
Interfaces 
• A interface serve como uma espécie de con-
trato, que define todas as obrigações de um 
conjunto de classes 
– Entre as principais definições, temos: 
• Todas as classes que "assinam" esse contrato são obri-
gadas a implementar todos os métodos da interface 
• A interface contém apenas a assinatura do método 
– As classes que assinam o contrato com a interface são as 
responsáveis pela implementação do método 
Interfaces 4 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– Imagine a seguinte situação: 
• Uma empresa qualquer onde somente alguns cargos de 
funcionários podem acessar o sistema: 
Interfaces 5 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– O método login() utiliza como parâmetro um 
objeto do tipo Funcionario para receber através 
do Polimorfismo qualquer instância de suas 
subclasses 
Interfaces 6 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– Na UML anterior, o método autenticar() estava 
implementado apenas nas classes Diretor e 
Gerente 
• Não podemos acessar o método a partir de Funcionario 
Interfaces 7 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– Solução: 
Interfaces 8 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– O problema da solução adotada é que: 
• Para cada nova classe criada que seja necessário 
efetuar o login no sistema, temos que adicionar um 
novo método login para essa nova classe 
– Veja nos próximos slides, uma solução para esse 
problema 
Interfaces 9 
Interfaces 
• Caso de uso: Quando usar interfaces? 
Interfaces 10 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– Com essa alteração, temos o polimorfismo no 
método login() e podemos criar novas classes a 
partir dessa classe abstrata 
Interfaces 11 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– Porém, temos outro problema: 
• Caso a empresa queira dar acesso ao seu sistema para 
todos os seus clientes 
Interfaces 12 
Interfaces 
• Caso de uso: Quando usar interfaces? 
– Nessa caso, o melhor é utilizar uma Interface 
• A interface pode ser utilizada como parâmetro de 
métodos na Linguagem Java 
• Criamos um contrato para que qualquer classe do 
nosso sistema possa utilizar a interface 
• Pelo contrato, qualquer classe que implementar a 
interface deve implementar os seus métodos 
• Com isso, vamos padronizar o nome do método 
(autenticar) para um conjunto de classes de hierarquias 
diferentes 
Interfaces 13 
Interfaces 
Interfaces 14 
Interfaces 
Interfaces 15 
 
Interfaces 
• Como definir uma interface? 
– A sintaxe da interface é ilustrada abaixo: 
 public interface [InterfaceName] { 
 // Declaração de métodos sem implementação. 
 } 
– Por exemplo: 
Interfaces 16 
Interfaces 
• As principais vantagens das Interfaces: 
– Exibir a interface de programação sem exibir a 
lógica de sua implementação 
– Alterar a implementação de métodos sem afetar 
as classes que utilizam a interface 
– Pode ser utilizada como parâmetro de métodos 
– Classes de diferentes níveis de hierarquia podem 
conter métodos com a mesma assinatura 
– Permite modelar classes com heranças múltiplas 
Interfaces 17 
Interfaces 
• Diferenças entre Interfaces e Classes Abstratas 
– Todos os métodos de uma interface são abstra-
tos; já a classe abstrata pode ter métodos não 
abstratos 
– As interfaces só podem definir constantes, e as 
classes abstratas podem definir tanto constantes 
quanto atributos 
– As interfaces não possuem relação de herança de 
outras classe 
• Mas, as interfaces podem herdar de outras interfaces 
Interfaces 18 
Interfaces 
• Diferenças entre Interfaces e Classes Abstratas 
– Não é possível criar instâncias a partir de uma 
interface 
 InterfaceQualquer objeto = new InterfaceQualquer(); 
– Uma interface só pode ser implementada por 
classes e só pode ser herdada por outra interface 
Interfaces 19 
Interfaces 
• Herança Múltipla na Linguagem Java 
– De modo direto, NÃO É POSSÍVEL herdar várias 
classes ao mesmo tempo 
• Uma classe na Linguagem Java só pode estender uma 
superclasse 
– Uma alternativa para "simular" o processo de 
herança múltipla na Linguagem Java é utilizando 
interfaces 
• Uma classe pode implementar várias interfaces 
simultaneamente 
Interfaces 20 
Interfaces 
• Exemplo de Herança Múltipla em Java 
Interfaces 21 
Interfaces 
 
Interfaces 22 
Interfaces 
• Exercício 1: 
– Crie uma interface na Linguagem Java para representar 
forma geométricas. 
– Por padrão, para qualquer forma geométrica, temos uma 
fórmula matemática para calcular a sua área. Leve isso em 
consideração na hora de criar a sua interface. 
– Após isso, crie as classes: Circulo e Retangulo. Todas essas 
classes devem implementar a interface da forma 
geométrica. 
– Retângulo: area = largura * altura 
– Círculo: area = ∏ * raio * raio 
 
 
Interfaces 23 
Interfaces 
• A classe Collections (java.util.Collections) 
– Interface List 
• São utilizadas para armazenar objetos de mesma classe 
• Esses objetos são armazenados de acordo com a 
ordem de inclusão 
• Podemos armazenar valores nulos e objetos 
duplicados 
• Apesar da estrutura manter os dados de acordo com a 
ordem de inclusão, é possível ordenar os objetos 
armazenados em um List usando uma "ordem natural" 
Interfaces 24 
Interfaces 
• A classe Collections (java.util.Collections) 
– Contudo, é necessário definir a "ordem natural“ 
• Para isso, a classe a ser armazenada na List precisa 
implementar a interface Comparable juntamente com 
seu método compareTo() 
– Vamos utilizar o método estático sort() da classe 
utilitária Collections para fazer a ordenação dos 
objetos armazenados na List 
• Para ordenar uma lista de objetos, devemos executar o 
método estático Collections.sort(List) 
Interfaces 25 
Interfaces 
• A interface Comparable (java.lang.Comparable) 
– Essa interface é implementada por classes que 
são ordenáveis 
• Ou seja, que podem ser automaticamente ordenadas 
por coleções ou outras classes 
– A interface Comparable obriga com que a classe 
implemente o método compareTo() 
• Esse método contém a regra (ordem natural) de 
ordenação, que define a precedência dos objetos das 
instâncias da classe que a implementa 
Interfaces 26 
Interfaces 
• A interface Comparable (java.lang.Comparable) 
– Assinatura do método: 
int compareTo(Object object) 
– Exemplo: 
• A classe String é um exemplo de classe que implementa 
a interface Comparable 
– Sua implementação do método compareTo() faz a análise 
caracter a caracter para definição da ordenação de Strings 
– Pelo conceito de "ordem natural" da String, a instância "Bruce 
Lee" estaria localizada antes da instância "Chuck Norris", pois 
a letra 'B' antecede a letra 'C' 
Interfaces 27 
Interfaces 
• A interface Comparable (java.lang.Comparable) 
– Utilizando classes criadasdurante a abstração de 
um objeto do mundo real, nem sempre temos um 
parâmetro adequado para comparar duas 
instâncias de uma mesma classe 
– Por exemplo: 
• Dada uma classe Funcionário, com os atributos nome, 
RG e Registro Funcional, qual dos parâmetros deve ser 
utilizado para definir a "ordem natural" do objeto? 
Interfaces 28 
Interfaces 
• A interface Comparable (java.lang.Comparable) 
– O método compareTo() utilizado para comparar a 
instância atual com qualquer outra instância da 
mesma classe retornar os seguintes valores: 
• -1 (ou um número negativo qualquer): deve retornar 
esse valor se o objeto estiver "antes" daquele passado 
como parâmetro 
• 0: deve retornar esse valor se os objetos forem iguais 
• 1 (ou um número positivo qualquer): deve retornar 
esse valor se o objeto estiver "depois" daquele passado 
como parâmetro 
Interfaces 29 
Interfaces 
• Exemplo de uso da interface Comparable 
 
Interfaces 30 
Interfaces 
• Exemplo de uso da interface Comparable 
– Para este exemplo utilizaremos duas classes: 
Aluno.java e Principal.java 
– A classe Aluno possui dois atributos: nome e tia 
– A ordem natural dos objetos desta classe foi 
definida da seguinte forma: 
• Primeiramente os objetos serão ordenados pelo 
atributo "nome" seguindo a ordem alfabética 
• Em caso de empate (nomes iguais) será utilizado o "tia" 
como segundo critério para desempate 
Interfaces 31 
Interfaces 
• Exercício 2: implementar a classe Aluno 
• Lembre-se que a classe Aluno implementa a interface 
Comparable e o método compareTo() 
• O método compareTo() compara primeiro o atributo 
nome dos objetos e em caso de empate faz a 
comparação do atributo tia 
• A classe Aluno também faz a sobrescrita dos métodos 
equals(), toString() e hashCode(), todos da classe 
Object 
• Você conheceu o método toString() em sala, pesquise 
sobre hasCode() e equals(). 
Interfaces 32 
Interfaces 
• Exercício 3: Modifique a classe Aluno e adicione o 
atributo "nota" do tipo double. 
– O método compareTo() deve ordenar os objetos do tipo 
Aluno através da comparação de suas notas. 
– Ao final, o programa principal deve apresentar a lista 
ordenada das maiores notas para as menores notas. 
– OBS: Em caso de empate, utilize as duas regras vistas 
anteriormente. 
Interfaces 33 
Obrigada 
 
 
 
Profa. Ana Cristina dos Santos 
anacristina.santos@mackenzie.br 
34

Outros materiais