A.A. 2000-01

Linguaggi di Programmazione I: Paradigmi Prova scritta del 19 giugno 2001: soluzioni

Esercizio 4.

abstype NAT = ZERO | SUCC of NAT
   with val zero = ZERO
        and uno = SUCC(ZERO)
        fun sum ZERO n = n
          | sum SUCC(m) n = SUCC(sum m n)
        fun equals ZERO ZERO = true
          | equals ZERO SUCC(n) = false
          | equals SUCC(n) ZERO = false
          | equals SUCC(m) SUCC(n) = equals m n
   end;

Altre soluzioni: usare gli interi come implementazione (nascosta), oppure definire il tipo di dato astratto con le abstractions del sistema dei moduli.

Esercizio 5. Nell’esecuzione del metodo m() il sistema runtime di Java risolve l’invocazione super.x() cercando il metodo x() a partire dalla superclasse di B, ovvero della classe in cui è definito il metodo che contiene l’invocazione. Dunque in questo caso si invoca la x() della classe A. Per quanto riguarda l’invocazione this.x(), la pseudovariabile this denota un oggetto della classe C, e dunque si esegue il metodo x() ivi definito. Il risultato è dunque: 10.