Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Classes Abstratas e Interfaces
Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Java: Pacotes e Modificadores de Visibilidade
Orientação a Objetos: Modificador Final para Métodos e Classes
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Laboratório de Java Herança e Agregação (Lab II) Prof. Guido Araújo.
Programação Básica em Java
Polimorfismo e Classes Abstratas Profa
Linguagem de Programação II
Orientação a Objetos Classes
Capítulo 12 Interfaces 1.
Métodos Programação II
Classes e objetos P. O. O. Prof. Grace.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Orientação a Objetos e Java Graduação em Ciência da Computação Paulo Borba © Centro de Informática, UFPE.
Concorrência em Java Threads em Java.
PLC – Introdução a POO Java
JAVA Orientação a Objetos
GEJAVA IV SCJA – Certificação Sun java associado exame cx
Tópicos avançados em internet A
Introdução à Programação Orientada a Objetos com Java
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal.
Classes, Objetos, Atributos e Métodos JAVA
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Orientação a Objetos e Java Graduação em Ciência da Computação
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Pilhas Profa. Nádia Félix.
Linguagem II Exceções.
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
POO II JEAN CARLO MENDES
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Interfaces POO Avançado.
Classes Abstratas e Interface
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Herança e Arquitetura em camadas
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Conceitos Básicos e Manipulação de Objetos
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Orientação a Objetos e Java Graduação em Ciência da Computação Paulo Borba © Centro de Informática, UFPE.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Orientação a Objetos e Java Especialização em Tecnologias da Informação Paulo Borba © Centro de Informática,
Engenharia de Software Alexandre Vasconcelos, André Santos, Augusto Sampaio, Hermano Moura, Paulo Borba © Centro de Informática Universidade Federal de.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Orientação a Objetos e Java Alexandre Mota  Centro de Informática, UFPE.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Aula 7 – Padrão Abstract Factory
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Jean Carlo mendes
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota

Interfaces Objetivo Ser capaz de relacionar classes com implementações diferentes e, ao mesmo tempo, oferecer os mesmos tipos de serviços (assinatura).

Interfaces Leitura prévia essencial Páginas 389 a 395 do livro Java: how to program (de Harvey e Paul Deitel)

Auditor de Banco public class AuditorB { private final static double MINIMO = ; private String nome; /*... */ public boolean auditarBanco(Banco banco) { double saldoTotal, saldoMedio; int numeroContas; saldoTotal = banco.saldoTotal() numeroContas = banco.numeroContas(); saldoMedio = saldoTotal/numeroContas; return (saldoMedio < MINIMO); }

Auditor de Banco Modular public class AuditorBM { private final static double MINIMO = ; private String nome; /*... */ public boolean auditarBanco(BancoModular banco){ double saldoTotal, saldoMedio; int numeroContas; saldoTotal = banco.saldoTotal() numeroContas = banco.numeroContas(); saldoMedio = saldoTotal/numeroContas; return (saldoMedio < MINIMO); }

Problema Duplicação desnecessária de código O mesmo auditor deveria ser capaz de investigar qualquer tipo de banco que possua operações para calcular –o número de contas, e –o saldo total de todas as contas.

Auditor Genérico public class Auditor { private final static double MINIMO = ; private String nome; /*... */ public boolean auditarBanco(QualquerBanco banco){ double saldoTotal, saldoMedio; int numeroContas; saldoTotal = banco.saldoTotal() numeroContas = banco.numeroContas(); saldoMedio = saldoTotal/numeroContas; return (saldoMedio < MINIMO); }

Definindo Interfaces public interface QualquerBanco { double saldoTotal(); int numContas(); }

Interfaces Caso especial de classes abstratas... –todos os métodos são abstratos provêem uma interface para serviços e comportamentos são qualificados como public por default –não definem atributos definem constantes por default todos os “atributos” definidos em uma interface são qualificados como public, static e final –não definem construtores

Interfaces Não se pode criar objetos Definem tipo de forma abstrata, apenas indicando a assinatura dos métodos Os métodos são implementados pelos subtipos (subclasses) Mecanismo de projeto –podemos projetar sistemas utilizando interfaces –projetar serviços sem se preocupar com a sua implementação (abstração)

Subtipos sem Herança de Código public class Banco implements QualquerBanco { /*... */ } public class BancoModular implements QualquerBanco { /*... */ }

implements classe implements interface1, interface2,... subtipo implements supertipo1, supertipo2,... Múltiplos supertipos: –uma classe pode implementar mais de uma interface (contraste com classes abstratas...)

implements Classe que implementa uma interface deve definir os métodos da interface: –classes concretas têm que implementar os métodos –classes abstratas podem simplesmente conter métodos abstratos correspondentes aos métodos da interface

Usando Auditores Banco b = new Banco(); BancoModular bm = new BancoModular(); Auditor a = new Auditor(); /*... */ boolean r = a.auditarBanco(b); boolean r’ = a.auditarBanco(bm); /*... */

Interfaces e Reusabilidade Evita duplicação de código através da definição de um tipo genérico, tendo como subtipos várias classes não relacionadas Tipo genérico pode agrupar objetos de várias classes definidas independentemente, sem compartilhar código via herança, tendo implementações totalmente diferentes Classes podem até ter mesma semântica...

Definição de Classes: Forma Geral class C’ extends C implements I1, I2,..., In { /*... */ } C’ C I1 I2... In

Subtipos com Herança Múltipla de Assinatura interface I extends I1, I2,..., In { /*... assinaturas de novos métodos... */ }

O que usar? Quando? Classes (abstratas) Agrupa objetos com implementações compartilhadas Define novas classes através de herança (simples) de código Só uma pode ser supertipo de outra classe Interfaces Agrupa objetos com implementações diferentes Define novas interfaces através de herança (múltipla) de assinaturas Várias podem ser supertipo do mesmo tipo

Cadastro de Contas: Parametrização public class CadastroContas { private RepositorioContas contas; public CadastroContas (RepositorioContas r) { if (r != null) contas = r; } /*... */ } A estrutura para armazenamento das contas é fornecida na inicialização do cadastro, e pode depois ser trocada!

Repositório: Definição public interface RepositorioContas { void inserir(Conta conta); Conta procurar(String numero); boolean existe(String numero); }

Repositório: Implementações public class ConjuntoContas implements RepositorioContas {...} public class ListaContas implements RepositorioContas {...} public class ArrayContas implements RepositorioContas {...} public class VectorContas implements RepositorioContas {...}

Cadastro de Contas: Parametrização public void cadastrar(Conta conta) { if (conta != null) { String numero = conta.getNumero(); if (!contas.existe(numero)) { contas.inserir(conta); }

Cadastro de Contas: Parametrização public void debitar(String numero, double valor){ Conta conta; conta = contas.procurar(numero); if (conta != null) { conta.debitar(val); }

Exercícios Que outros mecanismos de Java poderiam ter sido usados para definir o tipo RepositorioContas? Explique como o mecanismo de interfaces favorece reusabilidade e extensibilidade. Justifique.

Interfaces Resumo Cláusula interface Cláusula implements Herança de código versus herança de assinaturas Interfaces e parametrização de sistemas

Interfaces Leitura adicional Capítulo 7 do livro Thinking in Java (de Bruce Eckel) Seção 6.4 do livro A Programmer’s Guide to Java Certification (de Khalid Mughal e Rolf Rasmussen)