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

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

9 Classes Abstractas e Interfaces

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

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

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

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

Classe Abstrata e Interface

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

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

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

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1

Módulo 1. Lição 11. Introdução à Programação I. Herança, polimorfismo e interfaces

Computação II Orientação a Objetos

Interfaces e Classes Abstratas

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

Conceitos de Programação Orientada a Objetos

Programação por Objectos. Java

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

Interfaces. Classes abstratas que possuem apenas métodos abstratos. Na Interface: Métodos são implicitamente. Campos são implicitamente

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

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

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

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

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

Linguagem de Programação III

Classes e Objetos. Sintaxe de classe em Java

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

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Interfaces POO. Prof. Marcio Delamaro

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 com Java. Prof. Júlio Machado

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

Desenvolvimento Web TCC Turma A-1

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

Computação II Orientação a Objetos

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

Computação II Orientação a Objetos

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

Programação Orientada a Objetos II

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Java Basico Parte II. Para obter um comportamento polimorco fazer: cada classe que os herda. Polimorsmo em Java. I Excepc~oes.

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

Linguagem de Programação II Herança

Interfaces e Classes Internas

Universidade Federal de Uberlândia

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

Computação II Orientação a Objetos

Laboratório de programação II

10. Classes Abstratas e Concretas

Atributos e Métodos Estáticos

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

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

Avançando em Java com

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

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

Computação II Orientação a Objetos

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

Usuários. Interface com Usuários. Programa Aplicativo. Interfaces de Programação. Sistema Operacional

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

POO29004 Programação Orientada a Objetos

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Professor Leonardo Cabral da Rocha Soares Lattes:

Linguagem de Programação IV Introdução

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

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

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

PROGRAMAÇÃO ORIENTADA A

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

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

Computação II Orientação a Objetos

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

C com introdução a OO

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

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

Computação II Orientação a Objetos

Programação por Objectos. Java

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

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

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

Herança e Polimorfismo - Parte II -

Universidade Federal de Uberlândia

Programação Orientada a Objetos Relacionamentos entre classes

POO29004 Programação Orientada a Objetos

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

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

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Computação II Orientação a Objetos

Orientação a Objetos e Java

Programação Orientada a Objetos

Linguagem de Programação II Implementação

Computação II Orientação a Objetos

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

package heranca3; // classes podem receber os modificadores: nada ou public; abstract; e final class Pessoa implements InterPessoa{ String nome;

Polimorfismo em Java TM. por Jorge H C Fernandes CESAR-DI-UFPE Recife, 1999

Transcrição:

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

Programação Orientada a Objeto II Classes Abstratas Interfaces 2

Métodos abstratos Métodos abstratos não possuem implementação (corpo) Para criar um método abstrato, simplesmente escreva a declaração do método sem o corpo do método e use palavra chave abstract public abstract void somemethod(); Note que o método não possui corpo - Não usar as { 3

Classes abstratas Uma classe abstrata é uma classe que possui um ou mais métodos abstratos Uma classe abstrata não pode ser instanciada Este comando produzirá um erro de compilação Para implementar os métodos da classe abstrata há que estendê-la em sub-classes concretas Usar a palavra-chave extends MyAbstractClass a1 = new MyAbstractClass(); 4

Exemplo public abstract class SerVivo{ public void respirar(){ System.out.println( Ser vivo respirando ); public void comer(){ System.out.println( Ser vivo comendo "); public abstract void andar(); Método abstrato, a ser implementado por uma classe concreta 5

Estendendo uma classe abstrata A sub-classe SerHumano estende a classe abstrata SerVivo. Se a sub-classe SerHumano não implementar o método andar() ela se tornará uma classe abstrata também public class SerHumano extends SerVivo{ public void andar(){ System.out.println( Seres humanos andam..."); 6

Quando usar Métodos abstratos e Classes abstratas? Usar uma classe abstrata para definir um comportamento amplo e criar sub-classes estendendo-a para diversificar os detalhes desse comportamento 7

O que é uma interface? Uma interface estabelece uma forma pública e padronizada para especificar o comportamento de classes Um contrato! Todos os métodos de uma interface são abstratos Os termos que regem o contrato estão escritos na assinatura dos métodos da interface Classes concretas implementam a interface 8

Exemplo Note que a interface contém apenas as assinaturas dos métodos - Nenhuma implementação public interface Relation { public boolean ehmaior( Object a, Object b); public boolean ehmenor( Object a, Object b); public boolean ehigual( Object a, Object b); O modificador Abstract é desnecessário 9

Exemplo 2: Interface CarroOp public interface OperateCar { int turn(direction direction, double radius, double startspeed, double endspeed); int changelanes(direction direction, double startspeed, double endspeed); int signalturn(direction direction, boolean signalon); int getradarfront(double distancetocar, double speedofcar); int getradarrear(double distancetocar, double speedofcar);... 10

Razões par usar interfaces - 1 Para permitir que classes não-relacionadas implementem métodos similares (comportamentos) Line e MyInteger são classes: - Elas não são relacionadas através de herança. - Você precisa que ambas implementem métodos de comparação. Defina uma interface Comparison com os esses 3 métodos abstratos ( y checkisgreater(object x, Object ( y checkisless(object x, Object ( y checkisequal(object x, Object 11

Razões par usar interfaces - 2 Para modelar herança múltipla Uma classe pode implementar diversas interfaces mas pode estender apenas uma classe 12

Interfaces x Classes abstratas Todos os métodos de uma interface são abstratos Nem todos os métodos de uma classe abstrata são abstratos Uma interface só pode definir constantes Classes abstratas podem possuir campos 13

Interfaces x Classes abstratas Interfaces não possuem relacionamento de herança direto com classes particulares - Interfaces são definidas de forma independente Métodos abstratos de classes abstratas precisam do modificador abstract Interfaces podem possuir relacionamento de herança entre si 14

Instância como um tipo 15

Exemplo: Instância como um tipo Imagine que a classe Person implementa a interface PersonInterface Person p1 = new Person(); PersonInterface pi1 = p1; PersonInterface pi2 = new Person(); 16

Interfaces e classes - aspectos comuns Ambas são tipos assim uma interface pode ser usada onde se espera uma classe // Prática recomendada PersonInterface pi = new Person(); // Prática não recomendada Person pc = new Person(); 17

Os métodos de uma interface são todos abstratos - Não podem possuir um corpo Você não pode criar uma instância de uma interface Uma interface só pode ser implementada por classes ou estendida por outras interfaces 18

Definindo interfaces A sintaxe para definir uma interface é public interface [InterfaceName] {... Alguns métodos sem corpo 19

Exemplo -1 public interface Relation { public boolean isgreater( Object a, Object b); public boolean isless( Object a, Object b); public boolean isequal( Object a, Object b); 20

Exemplo -2 public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; 21

Exemplo -3 pubic double getlength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; public boolean isgreater( Object a, Object b){ double alen = ((Line)a).getLength(); double blen = ((Line)b).getLength(); return (alen > blen); 22

Implementando interfaces Line.java:4: Line is not abstract and does not override abstract method isgreater(java.lang.object,java.lang.object) in Relation public class Line implements Relation 1 error ^ Ao implementar uma interface, confira se implementou todos os métodos da interface, senão receberá um erro 23

Interface e classes Uma classe concreta só pode estender uma superclasse, mas pode implementar diversas interfaces Java não permite herança múltipla, mas interfaces oferecem uma alternativa Todos os métodos abstratos de interface precisam ser implementados por classes concretas 24

Implementando múltiplas interfaces public class ComputerScienceStudent extends Student implements PersonInterface, AnotherInterface, Third interface{... Todos os métodos abstratos das três interfaces precisam ser implementados 25

Herança entre interfaces Interfaces não fazem parte da hierarquia de classes mas podem manter relacionamento de herança entre sí public interface PersonInterface { void dosomething(); public interface StudentInterface extends PersonInterface { void doextrasomething(); 26

Interfaces e polimorfismo 27

Reescrevendo interfaces - 1 public interface DoIt { void dosomething(int i, double x); int dosomethingelse(string s); A interface antiga A interface nova public interface DoIt { void dosomething(int i, double x); int dosomethingelse(string s); boolean diditwork(int i, double x, String s); 28

Reescrevendo interfaces - 2 Ao fazer tal mudança, todas as classes que implementam a interface antiga deixarão de funcionar pois elas não implementam todos os métodos da interface nova 29

Reescrevendo interfaces - 3 public interface DoItPlus extends DoIt { boolean diditwork(int i, double x, String s); Agora os usuários podem continuar usando a interface velha ou mudar (upgrade) para a nova 30