Orientação a Objetos e Java
Exame Final
Paulo Borba
Departamento de Informática
Universidade Federal de Pernambuco
12 de Dezembro de 1996
Questão 1
Defina em Java um tipo Conta de contas bancárias,
tendo métodos para realizar as seguintes operações:
-  credito, credita um dado valor na conta;
-  debito, debita um dado valor da conta;
-  imprime_saldo, imprime o saldo e número da conta.
Defina um subtipo de Conta chamado ContaDesfazer,
cujos objetos têm as mesmas operações dos objetos de 
Conta mais uma operação desfazer para desfazer
a última operação de crédito ou débito realizada (similar
às funções "desfazer" e "undo" de editores de texto,
planilhas, etc.). 
Que outros mecanismos de Java poderiam ter sido utilizados
para definir os tipos Conta e ContaDesfazer?
Justifique a sua escolha.
Questão 2
Defina em Java uma classe Árvore de árvores binárias
de contas bancárias (veja questão acima), tendo métodos para 
realizar as seguintes operações:
-  insere, insere uma dada conta na árvore;
-  pertence, indica se uma conta com um dado número
      está na árvore;
-  imprime_saldos, imprime o saldo de todas as contas na
      árvore, em ordem crescente de número de conta. 
Defina também o inicializador desta classe.
Já que o número de elementos em uma árvore não é
limitado, não use arrays para resolver esta questão.
Questão 3
Compare os seguintes mecanismos de Java para definição de tipos:
interfaces e classes abstratas. Quais as vantagens e
desvantagens de se usar um ou outro mecanismo? Quais são as 
diferenças semânticas e pragmáticas entre os dois 
mecanismos?