Laboratorio di Programmazione - A.A. 2004/05

Esame del 14/12/2004

Compito A

Parte 1

Si rappresentino attraverso opportune classi Java, definite all'interno di un package esprintere, espressioni intere formate da: (i) variabili caratterizzate da un nome formato da una stringa; (ii) costanti caratterizzate da un valore di tipo int; (iii) somma (ennaria) di n espressioni; (iv) prodotto di due espressioni. Si richiede che le espressioni intere supportino l'uguaglianza (sintattica) profonda attraverso l'overriding di equals() e la redifinizione di hashCode(), la copia profonda attraverso l'overriding di clone(), e una rappresentazione testuale attraverso l'overriding di toString(). Per quest'ultima si faccia riferimento alla seguente sintassi:

EI := costante | variabile | (EI + EI + ... +EI) | (EI * EI)

Parte 2

Si definisca una classe ServiziEsprIntere, all'interno di un package serviziesprintere, contenente il seguenti metodo:

Parte 3

Calcolare inoltre la complessità della verifica di uguaglianza profonda su oggetti di tipo EsprIntera.