![Page 1: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/1.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/2.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/3.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/4.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/5.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/6.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/8.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/9.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/11.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/12.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/13.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/14.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/15.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/16.jpg)
Fluxo Normaltry {
}
catch (Exception e) {
}finally {
}
![Page 17: Laboratório de Java Classes Concretas e Abstratas (Lab. IV) Prof. Guido Araújo](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/17.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/18.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/19.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/20.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/21.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/22.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070311/552fc10b497959413d8c11c2/html5/thumbnails/23.jpg)
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