Buscar

PC2 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

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

Prévia do material em texto

UNESP/FEG/DMA 
Programação de Computadores II - Prof. Senne 
Aula 8: Classes Abstratas e Interfaces - Exercícios 
 
Turma 
 
 
 
 
 
 
1. O que é método abstrato? Como se declara um método abstrato? Para que serve um método 
abstrato? 
 
2. O que é classe abstrata? Como se declara uma classe abstrata? Uma classe abstrata pode conter 
métodos concretos? Os objetos criados a partir de uma classe abstrata são objetos abstratos. 
Certo ou errado? Por que? 
 
3. Imagine uma subclasse de um classe abstrata. Imagine que um método abstrato desta classe 
não é redefinido na subclasse. A subclasse será abstrata ou concreta? Por que? 
 
4. Qual é a diferença entre classe abstrata e interface? Toda interface é uma classe abstrata. Certo 
ou errado? Por que? Toda classe abstrata é uma interface. Certo ou errado? Por que? 
 
5. Como se declara uma interface? Vocês já usaram interfaces? Quando? O que significa 
implementar uma interface? 
 
6. Considere a seguinte hierarquia de classes: 
 
Escalonador 
– ArrayList procs 
+ Escalonador() 
+ ArrayList getProcs() 
+ void incluir(int t) 
+ void atenderProcesso() 
+ void listar() 
 
 
Atendimento 
– int fator 
+ Atendimento() 
... 
 
A classe Escalonador armazena em procs uma coleção de processos a serem atendidos. Cada 
processo desta coleção corresponde a um tempo de execução (um valor do tipo int). 
Codificar estas classes, observando os seguintes pontos: 
 
− A classe Escalonador é abstrata, pois o método atenderProcesso() é abstrato. 
− O construtor da classe Escalonador deve construir o objeto procs, da classe ArrayList. 
− O método getProcs() deve retornar a coleção procs. 
− O método incluir(int t) deve incluir o valor t (recebido como parâmetro) na coleção procs. 
− O método listar() deve exibir a coleção procs. 
− A classe Atendimento deve ser uma classe concreta. 
− A classe Atendimento deve possuir os métodos getter e setter necessários. Somente os getters 
e setters podem acessar diretamente os campos da classe. Todos os demais métodos devem 
acessar os campos por meio dos getters e setters. 
− O setter deve atribuir o valor de seu parâmetro ao respectivo campo da classe, desde que este 
valor esteja no intervalo [1, 3]. Caso contrário, deve atribuir o valor 1. 
− O construtor da classe Atendimento deve interagir com o usuário para obter o valor a ser 
atribuído ao campo desta classe e chamar o setter correspondente para realizar esta atribuição. 
− O método atenderProcesso() deve: 
 
(1) Selecionar, aleatoriamente, um processo a ser atendido. 
 
(2) Gerar, aleatoriamente no intervalo [10, 50], um tempo de atendimento (ta) para esse 
processo. 
 
(3) Subtrair do tempo de execução do processo selecionado, o valor: fator * ta, onde ta é 
o tempo de atendimento gerado no passo anterior. 
 
(4) Se o tempo de execução restante para este processo for menor ou igual a zero, este 
processo deve ser removido da coleção. 
 
− Implementar a classe principal Teste que utiliza todos os recursos disponíveis na classe 
Atendimento.

Outros materiais