laboratório de java classes concretas e abstratas (lab. iv) prof. guido araújo

23
Laboratório de Java Classes Concretas e Abstratas Classes Concretas e Abstratas (Lab. IV) (Lab. IV) Prof. Guido Araújo Prof. Guido Araújo

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Laboratório de Java

Classes Concretas e AbstratasClasses Concretas e Abstratas(Lab. IV)(Lab. IV)

Prof. Guido AraújoProf. Guido Araújo

Page 2: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Classes Concretas

Livro

+bloqueia()

+desbloqueia()

+empresta()

+retorna()

• Classe que pode ser instanciada diretamente

class Livro { .... public void bloqueia() { .... } ....}

public static void main() { ....

Livro livro; ....

}

Page 3: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Herança é tudo ?

Fita

+alteraNivel()

+empresta()

+retorna()

• Considere uma biblioteca de livros e fitas

Livro

+bloqueia()

+desbloqueia()

+empresta()

+retorna()

Livro

Livro

Fita

Fita

Page 4: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Classes Abstratas

Fita

+alteraNivel()

+empresta()

+retorna()

• Captura aspectos comuns e abstratos do objeto• Classe não pode ser instanciada diretamente

Livro

+bloqueia()

+desbloqueia()

+empresta()

+retorna()

abstract Item

+empresta()

+retorna()

abstract class Item { .... public void empresta(); public void retorna(); ....}

class Livro extends Item { ....}

Page 5: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Métodos Abstratos

• Possuem somente a assinatura

• É abstrata se possui pelo menos um único método abstrato

• Sub-classe de classe abstrata precisa implementar todos métodos senão é abstrata

abstract class Item { .... abstract public void empresta(); ....}

class Livro extends Item { .... public void empresta() {...} public void retorna(); ....}

Page 6: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Exercício

• No diretório abstrata

• Compile o programa TestandoAbstrata.java

• Efetue todas as correções (são 2 erros)

• Em main, remova o comentário da instanciação de Livro

• Coloque o comentário de volta novamente

Page 7: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Laboratório de Java

InterfacesInterfaces(Lab. IV cont.)(Lab. IV cont.)

Prof. Guido AraújoProf. Guido Araújo

Page 8: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Interfaces

• Especifica um tipo abstrato de dados (API)– Conjunto de assinaturas de métodos– Não implementa métodos nem estrutura de dados– Permite constantes: final float pi = 3.1415926;

interface ItemEmprestaval { .... boolean estaDisponivel(); boolean estaEmprestado(); ....}

Page 9: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Utilizando Interfaces

interface ItemEmprestavel { .... boolean estaDisponivel(); boolean estaEmprestado(); ....}

class Livro implements ItemEmprestavel { .... public boolean estaDisponivel() { .... } public boolean estaEmprestado() { .... } ....}

Page 10: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Utilizando Interface

Interface

Classe

Abstrata Concreta

Objeto

Projeto

Implementação

Execução

Page 11: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Regras de OuroOuro do Bom Projeto

interface Item { ....}

class Livro implements Item{ .... public: somente métodos da interface.... }

class Usuario { Livro livro; CD cd; .......

}

• Todo tipo abstrato de dados deve possuir uma interface

• Públicos somente tipos da interface

• Instâncias devem usar a interface

Item item;

Page 12: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Exercício

• No diretório interface

• Compile, execute e entenda SemInterface.java

• Compile, execute e entenda ComInterface.java

• Qual a diferença entre eles no que se refere à complexidade ?

Page 13: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Laboratório de Java

Tratamento de ExceçãoTratamento de Exceção(Lab. IV cont.)(Lab. IV cont.)

Prof. Guido AraújoProf. Guido Araújo

Page 14: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Hierarquia de Exceções

Throwable

Error Exception

VirtualMachineError

. . . . . . .

. . . . . . . . . . . . . .

. . . . . . . OutOfMemoryError

RuntimeException

ArithmeticException

Page 15: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Fluxo de uma Exceção

throw e . . .

try {

}

catch (Exception e) {

}finally {

}

Page 16: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Fluxo Normaltry {

}

catch (Exception e) {

}finally {

}

Page 17: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Exercício 3

• No diretorio excecoes

• Compile, execute e entenda ExceptionTeste.java

• Altere deuErro para true

• Compile, execute e entenda o que ocorreu

Page 18: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Ordem de Tratamento

throw e . . .

try {

}

catch (Arithmeticexception e) {

}

finally {

}

catch (Runtimeexception e) {

}

catch (Exception e) {

}

Page 19: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Exercício

• No diretorio excecoes

• Compile OrdemTratamento.java

• Altere o programa para que ele compile corretamente

• Compile, execute e entenda

• Instancie agora uma Exception ao invés de uma ExceptionNeta

• Compile e descubra o que ocorreu

Page 20: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Hierarquia do Tratamento (interna) try

try

finally

catch

finally catch

NÃO TRATA

Page 21: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Exercício 3

• No diretorio excecoes

• Compile, execute e entenda HierarquiaTratamento.java

• Altere o valor de numException para 2

• Compile, execute e entenda

Page 22: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Throw em Método (externa)

void chamador() {

try

catch

finally

void chamado() throws Exception {

}

}

chamado()

throw e

. . . .

Page 23: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo

Exercício

• No diretorio excecoes

• Compile ThrowEmMetodo.java– O compilador espera um tratador para a execução

lançada dentro de chamado(). – O que fazer para informar que a exceção é tratada for a

de chamado().

• Efetue a correção apropriada, compile e execute

• Atribua true a deuErro, compile, execute e entenda