Scrivere inoltre un semplice programma di verifica per testare i metodi.
import lab2.*;
public class NextElement {
|
Si assume che tutti gli elementi nell'insieme s siano di tipo Integer:
se ciò non è vero,
il metodo deve lanciare un'eccezione ClassCastException.
Il metodo next restituisce l'oggetto in
s
il cui valore è il più piccolo tra quelli strettamente maggiori
di n, e null se questo non esiste (cioè
se tutti gli elementi di s
hanno valore minore o uguale a n).
Per testare la classe NextElement, si compili ed esegua la classe
TestNextElement.
L'output deve essere il seguente:
Provo il metodo NextElement.next(int,Set)...
Next di 5 in { -5 0 1 2 6 7 9 10 11 45}: 6 Insieme dopo next:{ -5 0 1 2 6 7 9 10 11 45} Next di 15 in { 6 9 11 -5}: null Insieme dopo next: { 6 9 11 -5} Next di 48 nell'insieme vuoto : null invoco next({ 3 56 89 bingo!},2) Ok: multipli ha lanciato l'eccezione java.lang.ClassCastException |
|
Si scriva una classe HashRetSet, che eredita da HashSet ed implementa questa interfaccia. Si compili la classe; per testarla si passi al prossimo esercizio.
import lab2.*;
public class AbsSet {
|
Si assume che tutti gli elementi dell'insieme s
siano di tipo Integer: se ciò non è vero,
il metodo deve lanciare un'eccezione IllegalArgumentException.
Il metodo
abs deve modificare l'insieme passato come parametro
attuale, sostituendo ogni oggetto con valore negativo con un Integer
avente il corrispondente valore assoluto. Il metodo restituisce la somma
degli elementi dell'insieme
s PRIMA della modifica.
Per testare la classe AbsSet, si compili
ed esegua la classe TestAbsSet.
L'output deve essere ESATTAMENTE il seguente:
Provo il metodo AbsSet.abs(Set)...
Somma di { -45 -10 -5 -1 0 2 6 7 9 11}: -26 Insieme dopo abs:{ 0 1 2 5 6 7 9 10 11 45} Somma di { 5 6 9 11}: 31 Insieme dopo abs: { 5 6 9 11} Insieme vuoto. Somma: 0 Invoco abs({ 3 56 89 bingo!}) Ok: togliMultipli ha lanciato una IllegalArgumentException |
import lab2.*;
public class SortedUnion {
|
Si assuma che la coda q e la pila s
contengano solo istanze di Integer (quindi che implementano
l'interfaccia Comparable). Il metodo merge,
senza modificare né la coda q né la pila
s
passate per argomento, deve restituire una lista che contiene tutti gli
oggetti che compaiono in q o in s, senza
ripetizioni ed in ordine crescente. Il metodo deve lanciare una IllegalArgumentException
se uno dei due parametri è
null.
Suggerimento: per ottenere in modo automatico l'ordinamento
degli oggetti, si utilizzi una istanza di TreeSet
come
contenitore ausiliario.
Per testare il metodo, si esegua la classe TestSortedUnion.class.
e si corregga il programma finché l'output non sia esattamente il
seguente:
Provo il metodo ' SortedUnion.merge(Queue,Stack)'...
OK: il metodo mi sembra corretto. |
Il numero ed il tipo di variabili d'istanza della classe ArraySet sono a discrezione dello studente. L'unico vincolo è che la classe realizzi tutti i metodi dell'interfaccia Set secondo le indicazioni date.
import lab2.*;
public class NextElement {
|
Si assume che tutti gli elementi nell'insieme s
siano di tipo Integer: se ciò non è vero,
il metodo deve lanciare un'eccezione ClassCastException.
Il metodo next restituisce l'oggetto in s
il cui valore è il piu' piccolo tra quelli strettamente maggiori
di n, e nullse questo non esiste (cioè
se tutti gli elementi di s hanno valore minore o uguale
a n).
Per testare la classe NextElement, si
compili ed esegua la classe TestNextElement.
L'output deve essere il seguente:
Provo il metodo NextElement.next(int,Set)...
Next di 5 in { -5 0 1 2 6 7 9 10 11 45}: 6 Insieme dopo next:{ -5 0 1 2 6 7 9 10 11 45} Next di 15 in { 6 9 11 -5}: null Insieme dopo next: { 6 9 11 -5} Next di 48 nell'insieme vuoto : null invoco next({ 3 56 89 bingo!},2) Ok: multipli ha lanciato l'eccezione java.lang.ClassCastException |