Baixe o app para aproveitar ainda mais
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.
Compartilhar