Laboratorio di programmazione
Esame 2005-2
Compito A

Stai partecipando a un progetto in cui si deve realizzare una sistema in Java che processa file che contengono delle espressioni di tipo stringa che dipendono da valori di espressioni intere. Le espressioni di tipo stringa sono:

Le espressioni di tipo intero sono:

Ogni variabile è rappresentata da una stringa (il suo nome). Non esiste quindi l'oggetto "variabile".

Gli altri due programmatori coinvolti nel progetto si occupano di realizzare le classi che permettono la lettura del file e le classi che effettuano la valutazione delle espressioni. Ti viene però richiesto di scrivere delle classi che permettono agli altri programmatori di memorizzare le espressioni in forma di oggetti.

In particolare, l'accordo è che devi scrivere le seguenti classi:

Gli oggetti EspressioneIntera sono anche EspressioneVariabile oppure EspressioneSomma. Nello stesso modo, gli oggetti EspressioneStringa sono anche EspressioneSingola oppure EspressioneScelta

Le classi devono essere incapsulate. Specificare come commenti nel codice dove sono ammesse o no componenti nulle. Le classi devono avere:

Una volta realizzate queste classi, il programmatore che doveva realizzare la parte del sistema che valuta una espressione dati i valori delle variabili si licenzia, e ti viene assegnato il compito di scrivere una classe che avrebbe dovuto fare lui.

Questa classe contiene due metodi:

public static String valuta(EspressioneStringa e, Map<String, Integer> m)
public static Integer valuta(EspressioneIntera e, Map<String, Integer> m)

oppure contiene i corrispondenti metodi che non usano i generics. Questi metodi che valutano le espressioni (stringa o intere) quando i valori delle variabili sono memorizzati in forma di mappa (la mappa contiene una riga per ogni variabile: la chiave è il suo nome (un oggetto String) e il valore è il suo valore.