poo_modificador final e interface

18
Programação Orientada a Objetos - POO - Interface Prof. DSc. Gilvan Martins Durães

Upload: joyce-da-matta

Post on 29-Jan-2016

217 views

Category:

Documents


0 download

DESCRIPTION

apresentação da disciplina de poo do curso de ads

TRANSCRIPT

Page 1: POO_Modificador Final e Interface

Programação Orientada a Objetos - POO

- Interface

Prof. DSc. Gilvan Martins Durães

Page 2: POO_Modificador Final e Interface

Roteiro

O que vimos na última aula Modificador final Interface Exemplos Exercícios

Prof. DSc. Gilvan M. Durães 2POO – 2015.2

Page 3: POO_Modificador Final e Interface

3

O que vimos nas últimas aulas...

Herança

Classes Abstratas Polimorfismo Sobrescrita x Sobrecarga de métodos método String toString() método boolean equals(Objecto o)

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 4: POO_Modificador Final e Interface

4

O Modificador final

classes finais não podem ser estendidas (ter subclasses).

variáveis finais são equivalentes a CONSTANTES.

métodos finais não podem ser sobrescritos (overriden) por subclasses da classe em que ele foi declarado.

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 5: POO_Modificador Final e Interface

5

O Modificador final

São usadas basicamente por segurança e eficiência.

Segurança porque ninguém poderá fazer uma subclasse de uma classe e adicionar comportamento malicioso a ela. Exemplo: estender uma classe do pacote system para copiar informação crítica de outros programas.

Eficiência pois a máquina virtual pode ser otimizada para classes não estendidas.

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 6: POO_Modificador Final e Interface

6

Classe final

// Uma classe final

public final class UmaClasseFinal {

//...

}

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 7: POO_Modificador Final e Interface

7

Variáveis finais

//São usadas para declarar constantes em programas Java

public class Constantes {

public final String AUTOR = “Gilvan Duraes”;

private final float PI = 3.14159;

}

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 8: POO_Modificador Final e Interface

8

Métodos finais

public class ClassesComMetodosFinais {

public static final void metodoUnicoEutil() {

//...

}

private final void apenasEuChamoEste() {

//...

}

}

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 9: POO_Modificador Final e Interface

9

Interface

As interfaces são estritamente modelos de comportamento.

As interfaces não podem ser instanciadas pois não produzem objetos.

A relação existente entre as classes que implementam uma Interface e a Interface é uma relação do tipo “implementa os métodos de”.

Se uma classe é definida por apenas métodos abstratos então é melhor defini-la como uma Interface.

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 10: POO_Modificador Final e Interface

10

Interface

Nenhum método de interface pode ter um corpo, ou seja, não tem um algoritmo definido para executar o comportamento. Mas, as classes que prometem implementar uma interface são obrigadas a implementar todos os métodos nela especificados.

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 11: POO_Modificador Final e Interface

11

Interface

Uma interface não herda de Object pois, além de Object ser uma classe, interfaces não possuem nenhuma classe no topo de sua hierarquia de herança. Diferente de Herança, uma classe pode implementar mais de

uma Interface!

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 12: POO_Modificador Final e Interface

12

Interface

public interface UmaInterface

extends Interface1, Interface2, Interface3 {

// todos as variáveis aqui são públicas, estáticas e finais

public static final int umaVariavel = 0;

// todos os métodos aqui são públicos e abstratos

public abstract int umMetodoAbstrato();

}

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 13: POO_Modificador Final e Interface

13

Interface

public interface UmaInterface

extends Interface1, Interface2, Interface3 {

// todos as variáveis se tornam públicas, estáticas e finais

int umaVariavel = 0;

// todos os métodos se tornam públicos e abstratos

int umMetodoAbstrato();

}Prof. DSc. Gilvan M. Durães

POO – 2015.2

Page 14: POO_Modificador Final e Interface

14

Interface// colocada sob UmaOutraClasse na árvore de herança

public class MinhaClasse extends UmaOutraClasse

implements UmaInterface, OutraInterface {

//...

}

// colocada sob Object na árvore de herança

public class MinhaClasse2

implements UmaInterface {

//...

}

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 15: POO_Modificador Final e Interface

15

Interfaceinterface Fruta {

void apodrece();

void machuca();

}

class FrutaCitrica extends Food implements Fruta {

private Color minhaCor;

private int diasAteEstragar;

//...

}

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 16: POO_Modificador Final e Interface

16

Interfaceinterface Esfera {

void jogar();

void rolar();

}

class Laranja extends FrutaCitrica implements Esfera {

// implementa jogar e rolar

}

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 17: POO_Modificador Final e Interface

17

Usando Interfaces Laranja umaLaranja = new Laranja();

FrutaCitrica umaFrutaCitrica = (FrutaCitrica) new Laranja();

Fruta umaFruta = (Fruta) new Laranja();

Esfera umaEsfera = (Esfera) new Laranja();

umaFruta.apodrece(); // OK!

umaFruta.machuca(); // OK!

umaFrutaCitrica.apodrece(); // OK!

umaFrutaCitrica.machuca(); // OK!

umaFruta.jogar(); // Não pode !!!

umaEsfera.jogar(); // OK!

umaLaranja.apodrece(); // OK!

umaLaranja.machuca(); // OK!

umaLaranja.jogar(); // OK!

umaLaranja.rolar(); // OK!

Prof. DSc. Gilvan M. DurãesPOO – 2015.2

Page 18: POO_Modificador Final e Interface

18

Atividade em sala...

...

Prof. DSc. Gilvan M. DurãesPOO – 2015.2