Você está na página 1de 2

Respostas para o Laboratório 2

EXERCÍCIO 1

1. A taxa de juros variável da instância deve ser declarada como estática? Explicar.

Responder:
Não, a taxa de juros pode mudar de acordo com a caderneta de poupança.

2. Escreva a saída do chicote de teste para a classe SavingsAccount.

Responder:
Conta Poupança: saldo $115.0, taxa de juros 0.15

EXERCÍCIO 2

3. Qual(is) método(s) da classe CheckingAccount demonstram substituição? Quais métodos demonstram


sobrecarga?

Responder:
A seguir demonstram a substituição:
1) depósito()
2) retirar()
3) toString()

Os itens a seguir demonstram sobrecarga:


1) Nenhum.

4. Bacc0 = chacc1 é legal? Por que?

Responder:
Sim, CheckingAccount estende BankAccount por isso é legal ter uma variável BankAccount referenciando um
objeto CheckingAccount.

5. Chacc1 = bacc1 é legal? Por que?

Responder:
Não, não é legal ter uma variável de classe filho referenciando um objeto de classe pai.

6. Em quais variáveis bacc1, chacc1, sacc1 a invocação para método deduzirFees() foi válida? Explicar.

Responder:
Válido apenas para chacc1, pois CheckingAccount é a única classe que tem o método public void deductFees().

7. Qual(is) erro(s) de compilação pode(m) ser corrigido(s) por meio de casting? Qual(is) não(s) poderia(m) ser
corrigido(s)? Por que?

Responder:
bacc1 pode ser convertido como um CheckingAccount para corrigir o erro de compilação. Isso ocorre porque
CheckingAccount se estende de BankAcount e bacc1 é uma variável da classe pai.

sacc1 não poderia ser escalado, pois é uma classe irmã.

8. O programa é executado depois de excluir a linha que causa o erro de compilação? Se o programa travou,
por que ele travou?
Responder:
O programa falha devido a tipos incompatíveis: SavingsAccount não pode ser convertido em CheckingAccount.

9. Qual foi o erro de tempo de execução obtido ao alterar super.deposit(amount) para deposit(amount) na
classe CheckingAccount.java?

Responder:
O erro foi: "classe BankAccount não pode ser convertida para classe CheckingAccount (BankAccount e
CheckingAccount estão no módulo sem nome do carregador 'app') em TestBankAccounts.main"

10. Quantas vezes o método de depósito é invocado?

Responder:
Duas vezes?

EXERCÍCIO 3

11. Por que o compilador emite uma mensagem de erro ao invocar newAcc.getTransactionCount()?
Por que o compilador emite uma mensagem de erro ao invocar newAcc.getInterestRate()?

Responder:
Os métodos getter referenciados não existem em BankAccount.java.

newAcc.getTransactionCount() e newAcc.getInterestRate() exigem que getTransactionCount() e


getInterestRate() sejam definidos, métodos públicos em BankAccount - eles não estão lá.

12. Você pode saber se na instrução String accountInfo = newAcc.toString(); o


método toString() que está sendo invocado é da classe CheckingAccount ou da classe SavingsAccount?
Explique sua resposta.

Responder:
Não, tanto SavingsAccount.java quanto CheckingAccount.java têm métodos toString().
Não há como discernir qual deles está sendo chamado de BankMachine.

Você também pode gostar