L’interfaccia Adder
// OVERVIEW: tutti i sottotipi di Adder forniscono metodi per
// sommare e sottrarre gli elementi di un “tipo collegato”
public Object add (Object x, Object y) throws NullPointerException, ClassCastException;
// EFFECTS: se uno tra x o y è null, solleva
// NullPointerException; se x e y non sono sommabili solleva
// ClassCastException; altrimenti ritorna la somma di x e y
public Object sub (Object x, Object y) throws NullPointerException, ClassCastException;
// EFFECTS: se uno tra x o y è null, solleva
// NullPointerException; se x e y non sono sommabili solleva
// ClassCastException; altrimenti ritorna la differenza tra x e y
// EFFECTS: ritorna l’oggetto che rappresenta lo zero per il