Buscar

POO lista6

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. 
 
6ª Lista de Exercícios 
Parte I - Exercícios teóricos de fixação 
1) Complete as frases a seguir: 
a. _____________ é uma forma de reutilização de software em que novas classes adquirem os membros 
de classes existentes e aprimoram essas classes com novas capacidades. 
b. Em um relacionamento _____________, um objeto de uma subclasse também pode ser tratado como 
um objeto de sua superclasse. 
c. Em um relacionamento _____________, um objeto de uma dada classe possui como atributo 
referências a objetos de outras classes. 
d. Membros _____________ de uma superclasse são acessíveis em qualquer lugar em que o programa 
tem uma referência para o objeto daquela superclasse ou para um objeto de uma de suas subclasses, 
considerando que a superclasse e a subclasse são ambas public. 
e. O construtor da subclasse pode chamar construtores da superclasse via palavra-chave _____________. 
f. A classe que é criada usando o mecanismo de herança é chamada de _____________. 
g. A classe que é usada como base para criar a classe herdeira é chamada de _____________. 
h. Em Java, para estender uma classe é necessário utilizar a palavra-chave _____________ na declaração 
da subclasse. 
i. O _____________ define os métodos que podem ser invocados, em tempo de compilação. 
j. O operador _____________ é utilizado para verificar a que classe pertence um objeto. 
k. A _____________ é a possibilidade de uma subclasse possuir um método com mesma assinatura de um 
método definido na superclasse. 
l. O _____________ permite a manipulação de instâncias de classes que herdam de uma mesma classe 
ancestral de forma unificada. 
m. Em Java, toda classe estende automaticamente a classe _______________. 
n. O método ____________ sinaliza se dois objetos são semanticamente equivalentes. 
o. O método ____________ retorna uma representação em String do objeto. 
2) Classifique cada afirmativa a seguir como verdadeira (V) ou falsa (F). No caso da afirmativa ser falsa, explique. 
a. ( ) Os construtores de superclasse não são herdados por subclasses. 
b. ( ) Um relacionamento tem-um é implementado via herança. 
c. ( ) Uma subclasse herda todos os atributos e métodos da sua superclasse. 
d. ( ) O construtor da subclasse não necessariamente chama o construtor da superclasse. 
e. ( ) Quando há sobrescrita, a versão do método a ser executada é definida em tempo de execução. 
f. ( ) Em métodos, somente é possível haver polimorfismo na passagem de parâmetros. 
g. ( ) Em Java, uma classe pode estender apenas uma superclasse diretamente. 
h. ( ) Toda classe em Java possui uma superclasse. 
i. ( ) Métodos declarados com o modificador final não podem ser sobrescritos. 
3) Discuta os benefícios de herança. 
4) Alguns programadores preferem não utilizar acesso protected, porque acreditam que ele “quebra” o 
encapsulamento da superclasse. Discuta os méritos relativos de utilizar acesso protected versus utilizar 
acesso private em superclasse. 
5) Qual a função do modificador final quando aplicados a classes? Em que ocasiões ele pode ser útil? 
6) Diferencie herança múltipla e herança simples. Justifique porque Java não suporta herança múltipla. 
7) Defina polimorfismo e qual a sua relação com herança. 
8) Diferencia sobrecarga (overloading) de sobrescrita (overriding) de métodos. 
9) Há programadores que consideram o uso de instanceof uma má prática. Você concorda? Justifique. 
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. 
10) Implemente a classe Poupanca utilizando herança. Em seguida, teste a inserção de poupanças em um 
repositório do tipo RepositorioContasVetor. 
11) Utilizando a classe RepositorioContasVetor, procure por uma conta e tente chamar o método 
renderJuros(), específico de poupanças. O que acontece se a procura retornar um objeto do tipo Conta e 
não do tipo Poupanca? Em caso de ocorrência de erro, ajuste a sua implementação para preveni-lo. 
12) Implemente a classe ContaBonificada. Lembre-se que o método creditar() deve ser sobrescrito. 
13) Sobrescreva o método equals no sistema bancário a fim de ser possível verificar se duas contas são iguais. Em 
seguida, atualize a classe RepositorioContasVetor para prevenir que sejam adicionadas contas iguais e 
também para que o método de consultar uma conta faça a busca utilizando o método equals. 
14) Sobrescreva o método toString no sistema bancário, a fim de prover uma representação textual de qualquer 
conta informando o número da conta e o nome do titular. 
15) Crie uma classe chamada Pessoa, considerando que toda pessoa tem nome e idade. Crie uma classe Amigo, 
que herda de Pessoa e possui uma data de aniversário. Crie uma classe Conhecido, que herda de Pessoa e 
possui um e-mail. Todas essas classes devem ter 2 construtores: um que inicializa os atributos com valores 
passados como parâmetro e outro que não recebe parâmetros. Por fim, crie uma classe Agenda, que armazena 
pessoas em um vetor e que contém dois atributos que controlam a quantidade de amigos e a quantidade de 
conhecidos. Crie uma classe de teste para a classe Agenda, utilizando apenas a saída padrão, que deve: 
 Adicionar informações à agenda 
 Imprimir a quantidade de amigos e de conhecidos na agenda 
 Imprimir todos os aniversários dos amigos presentes na agenda 
 Imprimir todos os e-mails dos conhecidos na agenda 
16) Escreva uma superclasse Funcionario e duas subclasses, Gerente e Atendente. A classe 
Funcionario deve possuir os atributos nome, CPF, salario e dataNascimento. A classe 
Atendente deve ter ainda o atributo comissao. Crie um método getSalario que deve retornar o salário 
do Funcionario. No caso de Gerente, deve ser retornado o salário acrescido de uma bonificação de 
R$2000,00. Crie uma classe de RepositorioFuncionarios1, similar ao repositório de contas do 
sistema bancário. Utilizando a entrada e a saída padrão, bem como o conceito de polimorfismo, crie também 
uma classe para testar o seu código que exibe um menu solicitando a operação a ser realizada: 
 Adicionar gerente 
 Adicionar atendente 
 Listar todos os funcionários 
 Mostrar salário de funcionário (o usuário deve informar o CPF do funcionário) 
 Sair 
 
1 A classe pode ser escrita utilizando vetor ou ArrayList.

Continue navegando