Laboratorio di Programmazione - A.A. 2004/05
Esercitazione 6
Parte 1.
Realizzare una classe Sequencer
che gestisca una serie di processi.
Ogni processo è caratterizzato da varie proprietà tra cui il "tipo"
(una stringa). La classe Processo
è fornita nel file Processo.java.
Gli oggetti Sequencer devono supportare le seguenti funzionalità:
- crea, che crea un oggetto Sequencer che inizialmente
non ha alcun processo da gestire;
- aggiungiProcesso, che, dato un processo p, aggiunge p
in coda al Sequencer;
- rimuoviProcesso, che, dato un processo p, rimuove p
dal Sequencer se presente; non fa nulla altrimenti;
- rimuoviProcessiTipo, che, dato un tipo di processo t,
rimuove tutti i processi di tipo t dal Sequencer se presenti;
non fa nulla altrimenti;
- quantiProcessi, che restituisce il numero di processi del Sequencer;
- primoProcesso, che restituisce il primo processo che è
stato inserito nel Sequencer, se esiste; restituisce
null
altrimenti;
- ultimoProcesso, che restituisce l'ultimo processo che è
stato inserito nel Sequencer, se esiste; restituisce
null
altrimenti;
- primoProcessoTipo, che, dato un tipo di processo t, restituisce
il processo di tipo t che è stato inserito per primo; restituisce
null
se tale processo non esiste;
- ultimoProcessoTipo, che, dato un tipo di processo t,
restituisce il processo di tipo t che è stato inserito per
ultimo; restituisce
null
se tale processo non esiste;
- processoPrimaDi, che, dato un processo p, restituisce
il processo che è stato inserito immediatamente prima di p;
restituisce
null
se tale processo non esiste;
- processoDopoDi, che, dato un processo p, restituisce il
processo che è stato inserito immediatamente dopo di p; restituisce
null
se tale processo non esiste;
- processoStessoTipoPrimaDi, che, dato un processo p, restituisce
il processo che è stato inserito immediatamente prima di p,
e avente stesso tipo di p; restituisce
null
se tale
processo non esiste;
- processoStessoTipoDopoDi, che, dato un processo p, restituisce
il processo che è stato inserito immediatamente dopo di p,
e avente stesso tipo di p; restituisce
null
se tale
processo non esiste;
- spostaInTesta, che, dato un processo p, sposta p
in testa al Sequencer;
- processiDiTipo, che, dato un tipo di processo t, restituisce
una
List
contenente tutti i processi di tipo t, nell'ordine
con cui sono stati inseriti nel Sequencer;
- tipiDiProcessi, che restituisce un
Set
contenete
i tipi di processo presenti nel Sequencer.
Parte 2.
Realizzare una classe che implementi l'interfaccia List
(usando
liste doppie o array dinamici).Si realizzino le "bulk operation" e
subList()
lanciando l'eccezione UnsupportedOperationException
.
Realizzare inoltre il relativo iteratore che implementi l'interfaccia ListIterator
Si realizzino i metodi che modificano la lista lanciando l'eccezione UnsupportedOperationException
.
Riscrivere la classe realizzata nella Parte 1 utilizzando come List
l'implementazione appena realizzata.