Laboratorio di Programmazione - A.A. 2004/05

Esame del 14/12/2004

Compito B

Parte 1

Si rappresentino attraverso opportune classi Java, definite all'interno di un package esprreali, espressioni intere formate da: (i) variabili caratterizzate da un nome formato da una stringa; (ii) costanti caratterizzate da un valore di tipo double; (iii) somma di due espressioni; (iv) prodotto (ennario) di n espressioni. Si richiede che le espressioni reali 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:

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

Parte 2

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

Parte 3

Calcolare inoltre la complessità della generazione della copia profonda su oggetti di tipo EsprDouble.