Ficha Prática 10. António Nestor Ribeiro, Paulo Azevedo, Mário Martins PPIV (LESI) 2005/06

Documentos relacionados
Notas de POO: interfaces, excepções e input/output

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

9 Classes Abstractas e Interfaces

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

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

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

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

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

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

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

Programação por Objectos. Java

Computação II Orientação a Objetos

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Programação por Objectos. Java

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

Classe Abstrata e Interface

Classes e Objetos. Sintaxe de classe em Java

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

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

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

4 Conceito de Herança

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

Conceitos de Programação Orientada a Objetos

Linguagem de Programação II Implementação

Interfaces e Classes Internas

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

Sobrecarga, Sobreposição e Polimorfismo

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

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

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

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Interfaces e Classes Abstratas

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Java (nível intermediário) 4. Polimorfismo

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

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

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

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Modelo do Mundo Real. Abstração. Interpretação

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

Linguagem de Programação III

POO29004 Programação Orientada a Objetos

Linguagem de Programação. Diagrama de classes

Tratamento de Exceções cont. Profa. Thienne Johnson EACH/USP

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Linguagem de Programação II Implementação

Polimorfismo. O que é polimorfismo?

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

Lição 11 Herança, polimorfismo e interfaces

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


Interfaces POO. Prof. Marcio Delamaro

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

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Orientação a Objetos AULA 09

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

Linguagem de Programação III

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

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação por Objectos. Java

POO29004 Programação Orientada a Objetos

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores)

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

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

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

Linguagem de Programação II Herança

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Computação II Orientação a Objetos

Tratamento de Exceções

JAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 28 de setembro de 12

Palavras Reservadas da Linguagem Java

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Programação Orientada a Objetos II

Programação Orientada a Objetos Relacionamentos entre classes

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Transcrição:

Ficha Prática 10 António Nestor Ribeiro, Paulo Azevedo, Mário Martins {anr,pja,fmm@di.uminho.pt PPIV (LESI) 2005/06 Objectivos 1. Interfaces: declaração e utilização. 2. Interfaces como tipos de dados 3. Exercícios. Interfaces A declaração de uma interface em Java é muito simples dado que a interface apenas poderá conter um identificador, um conjunto opcional de constantes (ou seja static e final) e um conjunto de assinaturas de métodos que são implicitamentes abstractos. O código necessário para criar uma interface toma a seguinte forma: public interface MinhaInterface { public abstract metodoa(); public abstract metodob(); Uma classe pode declarar-se do tipo de dados de uma dada interface ao sinalizar tal através da seguinte construção: 1

public class MinhaClasse implements MinhaInterface { public metodoa() {. public metodob(){. A classe para correctamente implementar a interface, ou interfaces, declarada(s), tem de fornecer uma concretização para os métodos que estão declarados na interface. Objectos instância dessa classe podem ser vistos como sendo do tipo de dados da interface, sendo que nesse caso o seu comportamento resume-se aos métodos declarados na interface. Hierarquia das Interfaces À semelhança das classes, as interfaces estão organizadas numa hierarquia. No entanto, a herança existente na hierarquia das interfaces é múltipla, o que implica que uma interface pode ser sub-interface de mais do que uma interface. Podemos ter assim declarações como: public interface MinhaInterface extends Interface1, Interface2 { public abstract metodoa(); public abstract metodo B(); Quando os métodos herdados das possíveis super-interfaces forem idênticos é necessário tornar não ambígua a utilização do método recorrendo à sintaxe NomeInterface.metodo(). Uma classe pode implementar mais do que uma interface, sendo que para tal deve explicitamente elencar a lista das interfaces. public class MinhaClasse implements MinhaInterface1, MinhaInterface2 { 2

Interfaces e Classes Abstractas Por vezes o mesmo conceito pode ser expresso através da utilização de classes abstractas ou de interfaces. Tal resulta do facto de que uma classe totalmente abstracta e uma interface terem o mesmo poder expressivo. No entanto existem algumas diferenças entre ambos os conceitos: uma classe abstracta pode não ser 100% abstracta, enquanto que uma interface é-o garantidamente; uma classe abstracta não impõe às suas subclasses a implementação dos métodos abstractos - uma interface obriga a quem a implementa a tornar os métodos concretos; uma classe abstracta pode ser utilizada para criar os mecanismos para a construção de software genérico, extensível e parametrizável. Uma interface não tem genericamente essas preocupações; classes e interfaces pertencem a duas hierarquias distintas, podendo no entanto o programador conjugar ambas por forma a aumentar a capacidade expressiva dos seus programas. A classe Class A classe Class permite que em tempo de execução se possam saber algumas propriedades importantes dos objectos que populam uma aplicação. Instâncias da classe Class representam classes e interfaces num ambiente de execução Java. É possível por exemplo a uma instância desta classe enviar metódos como: public static Class forname(string classname) public Object newinstance() public boolean isinstance(object obj) // equivalente dinâmico ao operador instanceof public boolean isinterface() public Class getsuperclass() 3

public Class[ ] getinterfaces() etc. É por exemplo possível determinar quais as interfaces a que determinados objectos (pertencentes por exemplo a uma colecção) respondem. O método getinterfaces pode ser invocado para determinar quais as interfaces com que uma determinada classe está comprometida. Este método devolve um array de objectos do tipo Class. Vejam-se por exemplo as seguintes declarações, em que em tempo de execução se interroga quais as interfaces implementadas. import java.lang.reflect.*; import java.io.*; class SampleInterface { public static void main(string[] args) { try { RandomAccessFile r = new RandomAccessFile("myfile", "r"); printinterfacenames(r); catch (IOException e) { System.out.println(e); static void printinterfacenames(object o) { Class c = o.getclass(); Class[] theinterfaces = c.getinterfaces(); for (int i = 0; i < theinterfaces.length; i++) { String interfacename = theinterfaces[i].getname(); System.out.println(interfaceName); Exercícios 1. Crie a interface Audio que deverá ser implementada por forma a classificar os suportes que tenham audio. Essa interface deve poder ter o comportamento que permita saber: 4

quantas faixas de audio existem qual é a codificação em termos de bitrate (ex: 192kbps, 128kbps, etc.) 2. Crie uma interface Video que permite saber: qual é a sinopse do filme (guardada numa String) 3. Altere as classes existentes por forma a que a classe CD implemente Audio e DVD implemente Video. 4. Crie uma classe DVD-Audio que representa um DVD musical, isto é, que para além do filme tenha faixas de música. 5. Refaça o método que determina o número total de faixas de música, tendo em conta a nova estrutura de classes. 6. Crie as classes de excepção necessárias e codifique as situações em que deve lançar excepções. Sugere-se que valide as pré-condições recorrendo a esta nova técnica de programação, por forma a tornar a classe BibMultimedia robusta. 5