Istruzioni pratiche per l'esame di laboratorio
Esercizio d'esame
Un piano è una sequenza di azioni. Per quello che
riguarda questo compito, una azione è caratterizzata
soltanto da un nome, dal tempo necessario per la sua
esecuzione, e dalle sue precondizioni.
Esistono due tipi di precondizioni. Le precondizioni
semplici sono caratterizzate solo da un nome (una stringa).
Le precondizioni complesse sono invece caratterizzate dal
loro nome e da un piano che le rende vere. In altre parole,
per ognuna di queste precondizioni complesse viene fornito
un piano che le rende soddisfatte.
Si realizzino le seguenti classi in un package
piani:
- Piano
- una sequenza di azioni
- Azione
- una azione è caratterizzata da un nome (una
stringa), una durata (un reale) e da un insieme di
precondizioni
- Precondizione
- una precondizione può essere semplice o composta
- PrecondizioneSemplice
- una precondizione semplice è data solo da un nome
(una stringa)
- PrecondizioneComposta
- una precondizione composta è data da un nome (una
stringa) e da un piano che rende vera la precondizione
Le classi devono essere incapsulate, e non sono ammessi
valori nulli. Le classi devono avere:
- costruttore e metodi di lettura delle componenti; metodi
set se necessario
- metodi standard: toString, clone
(profondo), equals ed hashCode
Realizzare anche due metodi (in una classe a parte al di
fuori del package) che svolgono le seguenti funzioni:
- dato un piano, calcolare le sua durata complessiva
(somma dei tempi delle sue azioni e dei tempi necessari per
rendere vere tutte le sue precondizioni)
- dato un piano e una lista che contiene tutte le
precondizioni semplici attualmente vere, verificare se il
piano è eseguibile, ossia se tutte le sue
precondizioni semplici sono vere