Buscar

POO lista8

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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.

Continue navegando