Laboratorio di Programmazione - A.A. 2004/05

Esame del 14/12/2004

Compito C

Parte 1

Si rappresentino attraverso opportune classi Java, definite all'interno di un package esprbooleane, espressioni booleane formate da: (i) variabili caratterizzate da un nome formato da una stringa; (ii) costanti caratterizzate da un valore di tipo boolean; (iii) and (ennario) di n espressioni; (iv) or 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:

EB := costante | variabile | (EB && EB && ... && EB) | (EB || EB)

Parte 2

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

Parte 3

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