Programação Orientada a Objetos
Engenharia da Computação
Professor: Rosalvo Ferreira de Oliveira Neto
Dados Pessoais
Rosalvo Ferreira de Oliveira Neto
•
MSc. em ciência da computação (UFPE)
•
•
[email protected]
www.univasf.edu.br/~rosalvo.oliveira
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
3
Tópicos
•Tratamento de Erros
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Exemplo do DoME
O acrônimo DoME significa Database of Multimedia Entertainment
Essencialmente, DoME é uma aplicação que permite armazenar
informações sobre CDs e DVDs. A idéia é criar um catálogo de
todos os CDs e DVDs que se possui.
Os requisitos mínimos que queremos são:
•Deve permitir que possamos inserir informações sobre CDs e
DVDs;
• Deve armazenar essas informações para que essas informações
sejam localizadas depois. E Gere um relatório com todos itens do
estoque.
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Novo Requisito
• Implementar o método buscar Produto que recebe como
parâmetro o título e retorna o Produto;
•Solicitar que o usuário informe o título do produto;
•Imprimir todas as informações do Produto localizado.
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Novo Requisito
• Implementar o método buscar Produto que recebe como
parâmetro o título e retorna o Produto;
public Produto buscar(String titulo){
for(Produto prod: listaProdutos){
if (prod.getTitulo().equals(titulo)) {
return prod;
}
return null;
}
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Novo Requisito
• Solicitar que o usuário informe o título do produto;
Scanner reader = new Scanner(System.in);
System.out.println("Informe o nome do produto que deve ser
procurado: ");
String name = reader.nextLine();
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Novo Requisito
•Imprimir todas as informações do Produto localizado.
Scanner reader = new Scanner(System.in);
System.out.println("Informe o nome do produto que deve ser
procurado: ");
String name = reader.nextLine();
Produto prod = ldb.buscar(name);
prod.print();
System.out.println("Busca concluída!!!");
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Qual o problema do programa anterior?
• Verificação de parâmetros;
Se o parametro for null: Exception in thread "main"
java.lang.NullPointerException
at Program.main(Program.java:23)
• O sistema irá gerar um erro, mas continuará funcionando!
• Isso pode gerar problemas para o restante da aplicação!
Qual a melhor solução?
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Melhor solução: Lançar um exceção
• Exceção é um recurso do Java que também é encontrado em
outras linguagens de programação;
•Lançar uma exceção evitará ativamente que o programador ignore
as consequencias da falha de um método;
•Lançar uma exceção é a maneira mais eficaz que um objeto tem
para indicar que não é capaz de atender uma solicitação.
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Conceito - Exceção
• Exceção é um objeto que representa os detalhes de uma falha de
programa. Uma exceção é lançada para indicar que ocorreu uma
falha.
Java divide as classes de exceções em:
•Verificadas
•Não verificadas
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Exceção Verificada x Não Verificada
•Verificadas
São concebidas para os casos em que deve esperar que uma
operação possa falhar(por exemplo, se gravarmos em um disco,
saberemos que o disco pode está cheio).
•Não verificadas
São concebidas para os casos em que nunca deve acontecer uma
falha em uma operação normal – geralmente, elas indicam erro de
programa.
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Dica
Infelizmente, conhecer qual categoria de exceção
lançar não é uma ciência exata. Dica:
Utilizar exceções não verificadas para situações
que poderiam ser razoavelmente evitadas, como
por exemplo: acessar um item que não contém na
lista.
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Sintaxe Exceção: Não Verificadas
• throw new
NullPointerException(“Mensagem de erro”)
public Produto buscar(String titulo){
if (titulo.trim().length() == 0) {
throw new NullPointerException("O título não pode ser
vazio!");
}else{
for(Produto prod: listaProdutos){
...
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Exceções verificadas: cláusula throws
• O primeiro requisito do compilador é que um método
que lança uma exceção verificada deve declarar que faz
isso em uma cláusula throws adicionada ao cabeçalho do
método.
Public void saveToFile(String arquivoDeDestino)
Throws IOException{
...
}
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Exceções verificadas: cláusula throws
O segundo requisito é que o chamador de um método
que lança uma exceção verificada deve estar preparado
para lidar com a exceção na forma de uma instrução try.
try {
Proteja uma ou mais instruções aqui!
}
catch (Exception e){
}
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Criando novas classes de exceção
Onde as classes de exceção padrão não descrevem
satisfatoriamente a natureza do problema, novas classes
de exceção mais declarativas podem ser definidas
utilizando a herança.
•Exceções verificadas herdam de Exception
•Exceções não verificadas herdam de RuntimeException
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Exemplo – Criando Exceção
public class ProdutoNaoEncontrado extends Exception{
private String titulo;
public ProdutoNaoEncontrado(String titulo){
this.titulo = titulo;
}
public String getMensagemErro(){
return "O titulo: [" + titulo + "] nao foi encontrado
em nosso banco de dados!";
}
}
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Exemplo – Lançando Exceção
public Produto buscar(String titulo) throws
ProdutoNaoEncontrado{
...
throw new ProdutoNaoEncontrado(titulo);
}
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Exemplo – Capturando Exceção
try{
Produto prod = ldb.buscar(name);
prod.print();
System.out.println("Busca concluida!!!");
}
catch(ProdutoNaoEncontrado e){
System.out.println(e.getMensagemErro());
}
Univasf – Engenharia de Computação – Programação Orientada a Objetos- Prof.: Rosalvo Neto
Dúvidas
Download

Introdução a JAVA-6