ISTRUZIONI E TESTI
-
Si svolgano gli esercizi proposti in una nuova directory/progetto,
ricordandosi di importare una classe adeguata per l'I/O da tastiera.
-
Si verifichi di aver istallato correttamente il sistema Java,
compilando ed eseguendo (eventualmente con
javac e
java)
un semplice programma,
per esempio Benvenuto.
[1]
Si consideri il tipo di dati astratto modificabile
SMap<K,V>, variante semplificata dell'interfaccia Map<K,V> delle API Java
e utilizzata per rappresentare una funzione parziale con domino K
e codominio V. O, per dirla con le API Java:
An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value.
Tale tipo di dati ha, tra gli altri, i seguenti metodi
-
public V put(K key, V value),
che associa il valore value
alla chiave key, e restituisce
il valore precedentemente associato a key
se questo esisteva, e null altrimenti;
-
public V get(K key),
che restituisce il valore associato
alla chiave key
se questo esiste, e null altrimenti;
-
public List<K> getKeys(),
che restituisce una lista delle chiavi che hanno associato un valore.
Si completi la specifica del tipo di dati astratto, includendo una overview con la descrizione
di un'istanza tipica e fornendo la specifica completa dei metodi, comprese le eventuali eccezioni lanciate.
Soluzione: la classe SMap<K,V>.
[3]
Si dimostri la correttezza dell'implementazione proposta.
[4]
Si consideri la classe LimitedTwoListSMap<K,V>, che
estende TwoListSMap<K,V> imponendo un limite massimo
al numero di elementi di K ai quali può essere associato
un valore. Si sovrascrivano solo i metodi necessari, e si definiscano la funzione di astrazione
e l'invariante di rappresentazione.
Si dimostri infine se la nuova classe verifica o meno il principio di sostituzione.
Soluzione: la classe LimitedTwoListSMap<K,V>.
|