Orientação a Objetos Interfaces

Documentos relacionados
Orientação a Objetos Classes Abstratas

Java - Herança e Interface

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

Repetindo mais código?

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

Modificadores de acesso e atributos de classe

Classes e Objetos. Sintaxe de classe em Java

Herança Tiago Eugenio de Melo

Linguagem de Programação III

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

Pacotes Organizando suas classes e bibliotecas

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

Avançando em Java com

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Interfaces e Classes Abstratas

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Computação II Orientação a Objetos

Modificadores de Acesso JAVA

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Interface vs. Implementação Herança vs. Composição

Rafael B. Pereira (

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Orientada a Objetos

As classes Formatador e ElementosAFormatar

9 Classes Abstractas e Interfaces

Orientação a objetos. Objetos ou Instâncias I

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Orientação a Objetos AULA 06

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos JAVA - NETBEANS

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Capítulo 2. Orientação a Objetos

Linguagens de Programação

Java Standard Edition (JSE)

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Módulo III Padrões GOF

Linguagem de programação Programação Orientada a objetos

Java para Desktop. Programação Orientada à Objetos 2 JSE

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos

Desenvolvimento OO com Java Classes abstratas e interfaces

Oportunidades de refatoração. Prof. André Luiz Peron Martins Lanna

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

[Desenvolvimento OO com Java] Classes abstratas e interfaces

Sobreposição de Métodos

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Computação II Orientação a Objetos


Programação Orientada a Objetos para Redes de Computadores

Java Standard Edition (JSE)

Programação Orientada a Objetos

Computação II Orientação a Objetos

Linguagens de Programação Aula 12

POO29004 Programação Orientada a Objetos

PROGRAMAÇÃO ORIENTADA A

Computação II Orientação a Objetos

Programação Orientada a Objetos II Java Décima primeira aula

Daniel Wildt

Notas de Aula 05: Diretivas de atributos, métodos e classes e o uso de Interfaces.

PROGRAMAÇÃO ORIENTADA A OBJETOS I -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

Unidade: sobrecarga, construtores e herança

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

Generics - Java. Fernando Santos. Programação Orientada a Objetos

Computação II Orientação a Objetos

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

Introdução a Programação Orientada a Aspectos

Computação II Orientação a Objetos

Polimorfismo. O que é polimorfismo?

Estrutura de Dados (DPADF 0056)

Computação II Orientação a Objetos

Vamos imaginar que queremos projetar um jogo em que haja diferentes personagens:

C com introdução a OO

Programação Orientada a Objetos para Redes de Computadores. Polimorfismo com Hierarquias de Herança. Exemplo: Hierarquia Animal

Java - Polimorfismo. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Objetivos. Responder o que é Java; Mostrar as vantagens e desvantagens do Java; Compilar e executar um programa simples.

COMPORTAMENTOS - Observações

Interfaces e polimorfismo

LÓGICA DE PROGRAMAÇÃO (JAVA) CLASSES E OBJETOS. Professor Carlos Muniz

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Herança e Polimorfismo

Orientação a Objetos parte 2 ENCAPSULAMENTO, CLASSES, HERANÇAS

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

O PARADIGMA ORIENTADO POR OBJETOS

Programação Orientada a Objetos

Computação II Orientação a Objetos

Factory Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

Programação Orientada a Objetos

Transcrição:

Orientação a Objetos Interfaces Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/ 1

Objetivos Dizer o que é uma interface e as diferenças entre herança e implementação; Escrever uma interface em Java; Utilizá-las como um poderoso recurso para diminuir acoplamento entre as classes. 2

A hierarquia de funcionários Suponha que em nossa hierarquia de funcionários, Diretores e Gerentes possuam senhas que dão acesso ao Sistema Interno do Banco e que precisam ser validadas. Suponha ainda que o procedimento de validação de um e outro tipo de funcionário é ligeiramente diferente. 3

A hierarquia de funcionários 4

O sistema interno da empresa O sistema interno da empresa precisa autenticar seus usuários a fim de permitir ou não o acesso ao mesmo. Por que o trecho de código acima não compila? O método autentica não faz parte da interface da superclasse Funcionario. Por que então não colocar o método abstrato autentica() na classe Funcionario? Porque as classes Secretaria e Engenheiro teriam de implementá-lo e isso pode não fazer sentido para essas classes. 5

A hierarquia de funcionários Uma solução mais interessante seria acrescentar um outro nível à hierarquia de classes. 6

O sistema interno O sistema interno poderia agora ser escrito como: 7

Problema Como dar acesso ao sistema também aos clientes da empresa? Primeira tentativa: 8

Login do Cliente Seria essa uma boa solução? Provavelmente não. Lembre-se, um cliente NÃO É UM funcionário. Ao fazer a Cliente herdar de Funcionário, obrigaremos a classe a implementar o método getbonificacao(), o que não faz qualquer sentido para clientes. 9

Pensando alto... Qual é o nosso problema? Precisamos de uma maneira comum de referenciar Gerentes, Diretores e Clientes de modo a poder usá-los de forma polimórfica... Mas essa maneira não pode ser uma superclasse da hierarquia de Funcionários uma vez que um Cliente não é um Funcionário... Será que funcionaria se eu criasse uma outra hierarquia paralela? Autenticável por exemplo... Clientes pertenceriam a hierarquia Autenticável e Gerentes e Diretores pertenceriam simultaneamente às hierarquias Funcionario e Autenticavel. Eu poderia usar Autenticavel como o tipo do método login() na classe SistemaInterno!!! 10

Pensando alto... Até funcionaria, se em Java existisse herança múltipla e as classes Gerente e Diretor pudessem herdar de duas classes simultaneamente... 11

Pensando alto... Java não tem herança múltipla? #!?@! #!?@! Por que eu fui escolher Java? Foco! Qual é o problema? Ao compilar o método login(), o compilador precisa ter certeza de que o objeto passado como parâmetro implementa o método autentica(). Uma superclasse usada como tipo resolveria o problema, mas Cliente, Diretor e Gerente não podem pertencer à mesma hierarquia... E se essas três classes assinassem um contrato se comprometendo a implementar o método autentica(), o compilador aceitaria esse contrato como um tipo? Sim, ele aceitaria! Em verdade, esse mecanismo está previsto na linguagem e chama-se interface 12

Um contrato. 13

Um contrato em Java Gerentes, Diretores e Clientes podem agora assinar esse contrato: 14

Um contrato em Java 15

Interfaces Uma interface pode declarar uma série de métodos, mas ela não contém a implementação desses métodos. As classes que implementam uma interface devem, obrigatoriamente, implementar seus métodos. Todos os métodos de uma interface são, por definição, públicos e abstratos. Declarar a intenção de implementar uma interface e não implementar seus métodos abstratos resulta em um erro de compilação. 16

Interfaces 17

O Sistema Interno A classe SistemaInterno pode agora ser escrita como: 18

O Sistema Interno Instâncias de Diretor e Gerente podem ser passadas para os dois métodos login(autenticavel a) e totalizabonificaoes(funcionario f) Diretores e Gerentes são, ao mesmo tempo, Autenticáveis (por implementar uma Interface) e Funcionários (por estender a classe Funcionario) No dia em que houver mais um funcionário com acesso ao sistema, basta que a nova classe implemente a interface Autenticavel. 19

Interfaces Uma classe pode estender somente uma única classe, mas ela pode implementar quantas interfaces forem necessárias. Programe voltado a interface, e não à implementação 20

Refatorações Martin Fowler 21