Orientação a Objetos e Java
Primeiro Exame Escrito



Paulo Borba
Departamento de Informática
Universidade Federal de Pernambuco
2 de Outubro de 1997



Questão 1 Defina em Java a classe Cliente cujos objetos são clientes de uma empresa telefônica; os clientes têm nome, número e endereço (rua, CEP, número, cidade e estado). Defina também a operação rua que retorna a rua onde um determinado cliente reside.
    Do ponto de vista de qualidade de software, é interessante também definir a classe Endereço? Quais as vantagens e desvantagens de se definir esta classe? Justifique brevemente sua resposta indicando que fatores de qualidade foram impactados pela sua escolha na implementação de Cliente.
    Assumindo que você definiu Cliente usando a classe Endereço, faz sentido ter a operação rua tanto em Endereço quanto em Cliente? Justifique brevemente sua resposta segundo os fatores de qualidade de software.

Questão 2 Defina em Java a classe FilaDeClientes cujos objetos são filas de clientes esperando para comprar um telefone. Esta classe deve ter operações para  Já que o número de clientes em uma fila não e limitado, não use arrays para resolver esta questão. Também não use nenhuma classe predefinida de Java além das mencionadas acima. Para tratar os casos de erro, use o mecanismo de exceções de Java.

Questão 3 Procurando obter o máximo de reusabilidade, defina em Java a classe ClienteDoGoverno que tem todas as características e operações de Cliente mais uma indicação se o cliente pertence ao governo federal, estadual ou municipal.
     O que teria que ser alterado no tipo FilaDeClientes para ser possível inserir e remover clientes do governo? Justifique sua resposta e o impacto da mesma sobre qualidade de software.
    Adicione um método a FilaDeClientes que conta o número de clientes do governo federal em uma determinada fila.