Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade Acadêmica de Garanhuns Curso: Bacharelado em Ciência da Computação. Disciplina: Programação Orientada à Objetos. Semestre: 2014.1 Professora: Thaís Alves Burity Rocha. 8ª Lista de Exercícios Parte I - Exercícios teóricos de fixação 1) O que significa uma "exceção" em programação? 2) Quais são as vantagens obtidas com o tratamento de exceções de Java? 3) O que é um bloco try? O que é um bloco catch? O que é um bloco finally? 4) Que tipos de exceções podem ser capturados utilizando o bloco catch a seguir? Por que não é recomendado utilizar este tipo de bloco catch? catch (Exception e) { ... } 5) O que há de errado com o seguinte trecho de programa em Java? try { ... } catch (Exception e) { ... } catch (ArithmeticException a) { ... } 6) Explique a diferença entre exceções verificadas e exceções não-verificadas. 7) Classifique cada afirmativa a seguir como verdadeira (V) ou falsa (F). No caso da afirmativa ser falsa, explique. a. ( ) Um bloco try deve ser seguido por um bloco catch e um bloco finally. b. ( ) Se um método pode lançar uma exceção verificada, uma chamada a esse método deve ser feita dentro de um bloco try/catch. c. ( ) Os blocos catch podem ser polimórficos. d. ( ) Só exceções verificadas podem ser capturadas. e. ( ) Se você definir um bloco try/catch, um bloco finally será opcional. f. ( ) Se você definir um bloco try, poderá complementá-lo com um bloco catch ou finally, ou com ambos. g. ( ) O mesmo bloco ty pode ter muitos blocos catch diferentes. h. ( ) Um método só pode lançar um tipo de exceção. i. ( ) Um bloco finally será executado independentemente de uma exceção ter sido lançada. j. ( ) A ordem dos blocos catch nunca é importante. Parte II - Exercícios práticos Observação: Nenhuma questão pede explicitamente para ser utilizado comentários de código, embora o uso seja fortemente recomendado. 8) Atualize o sistema bancário para que os métodos debitar e transferir da classe ContaAbstrata lancem a exceção SaldoInsuficienteException. Em seguida, atualize também as classes Conta e ContaImposto, subclasses diretas de ContaAbstrata, que sobrescrevem o método debitar. 9) Atualize a implementação dos métodos creditar, debitar e transferir no sistema bancário, para impedir que estes aceitem valores negativos como argumento, quando forem chamados. Para tanto, utilize a exceção não-verificada IllegalArgumentException da API de Java. 10) Atualize o sistema bancário, criando a hierarquia de exceções de conta (SaldoInsuficienteException, ContaJaExisteException e ContaNaoExisteException) em um pacote denominado excecao.conta. Essas exceções deverão ser lançadas quando se tentar debitar um valor superior ao saldo da conta, cadastrar uma conta previamente cadastrada e quando se tentar acessar o cadastro de uma conta não cadastrada, respectivamente. Faça também os ajustes necessários para tratar tais exceções, de maneira similar ao que já foi feito para a exceção SaldoInsuficienteException. 11) Atualize o sistema bancário, criando a hierarquia de exceções de cliente (ClienteJaExisteException e ClienteNaoExisteException) em um pacote denominado excecao.cliente. Essas exceções deverão ser lançadas quando se tentar cadastrar um cliente previamente cadastrado e quando se tentar acessar o cadastro de um cliente não cadastrado, respectivamente. Faça também os ajustes necessários para tratar tais exceções. 12) A classe Scanner (java.util.Scanner) pode ser usada para ler dados não apenas da entrada padrão (teclado), mas de qualquer objeto que implementa a interface Readable, o que inclui os objetos do tipo File, usados para referenciar arquivos. Usando a classe Scanner, tal como visto em sala de aula, crie uma classe utilitária denominada ArquivosUtil, contendo os seguintes métodos: a. Um método para contar a quantidade de linhas de um arquivo texto. b. Um método para exibir todo o conteúdo de um arquivo texto. c. Um método para exibir todo o conteúdo de um arquivo texto em maiúsculo, utilizando o método da letra anterior. Observação: Para todos os métodos, o arquivo deverá ser passado como parâmetro e todas as exceções verificadas deverão ser capturadas. Por fim, não esqueça de fechar o(s) recurso(s) utilizado(s) e nem de escrever código para testar a sua classe. 13) Atualize a classe ArquivosUtil, incluindo os métodos descritos a seguir: a. Um método para adicionar uma frase ao final de um arquivo texto. Orientações: É possível escrever em um arquivo texto utilizando o método public void write(String s) da classe FileWriter (java.io.FileWriter). o Quando todo o conteúdo desejado tiver sido “escrito”, é necessário chamar o método flush() para que a escrita realmente seja realizada. Dois possíveis construtores dessa classe são: o FileWriter(File file), similar ao construtor de Scanner, que recebe como parâmetro uma referência para o arquivo, cuja escrita será feita a partir do seu início; o FileWriter(File file, boolean append), em que o segundo parâmetro informa se a escrita vai ser feita a partir da última linha do arquivo (valor true). b. Um método para criar uma cópia de um arquivo texto. A cópia deverá ter o nome do arquivo original acrescido do sufixo “-copia”. Para recuperar o nome do arquivo original, utilize o método public String getName() da classe File. Observação: Para todos os métodos, o arquivo deverá ser passado como parâmetro e todas as exceções verificadas deverão ser capturadas. Por fim, não esqueça de fechar o(s) recurso(s) utilizado(s) e nem de escrever código para testar a sua classe. 14) Crie uma “cópia” da classe ArquivosUtil, denominada ArquivosUtilErro, cujos métodos não deverão capturar nenhuma exceção verificada, mas apenas relançá-las.
Compartilhar