Fondamenti di Informatica 1
Corso di Laurea in Ingegneria Informatica
Corso di Laurea in Ingegneria Automatica
A.A. 2002/03
Appello del 25/3/2003 - Compito D
Si vuole tenere traccia di liste della spesa. Ogni ListaSpesa
è associata ad un nominativo di persona (una stringa) ed è
caratterizzata da un insieme di prodotti. Di ogni prodotto in una
ListaSpesa sono di interesse le seguenti informazioni:
- il nome del prodotto (una stringa);
- la quantità (un intero positivo);
- il prezzo unitario in Euro (un reale);
Gli oggetti ListaSpesa supportano le seguenti funzionalità:
- crea: che, data una stringa n che rappresenta un
nominativo, crea una ListaSpesa associata al nominativo
n che inizialmente non comprende alcun prodotto;
- persona: che restituisce il nominativo della persona (non
richiesto all'esame);
- quantita: che, dato il nome p di un prodotto,
restituisce la quantità dello stesso; se il prodotto non è
presente restituisce 0;
- prezzo: che, dato il nome p di un prodotto,
restituisce il prezzo dello stesso, se il prodotto di nome p
è presente; se il prodotto non è presente lancia
un'eccezione;
- aggiornaQuantita: che, dati il nome p di un prodotto
ed una quantità q maggiore di 0, aggiorna il prodotto
di nome p ponendo la sua quantità pari a q, se
il prodotto di nome p è presente; altrimenti lancia
un'eccezione;
- aggiungiProdotto: che, dati un nome p, una
quantità q, ed un prezzo pr, aggiunge un
prodotto di nome p, quantità q, e prezzo
pr ai prodotti, se non è già presente il prodotto
di nome p; altrimenti lancia un'eccezione;
- eliminaProdotto: che, dato il nome p di un prodotto, lo
elimina se esso è presente; altrimenti non fa nulla;
- numProdotti: che restituisce il numero di prodotti;
- prodotti: che restituisce un array di stringhe contenente
i nomi di tutti i prodotti.
Domanda 1. Scrivere una classe Java ListaSpesa
per rappresentare oggetti ListaSpesa.
Soluzione:
rappresentazione
degli oggetti,
scheletro della classe,
classe ListaSpesa
Domanda 2. Realizzare un metodo statico
calcolaCosti
cliente della classe ListaSpesa
che,
dati un oggetto lis istanza della classe ListaSpesa
ed il
nome f di un file, scrive sul file f il nome ed il costo
complessivo di tutti i prodotti di lis, un prodotto per riga. Il
costo complessivo di un prodotto si calcola moltiplicando il costo unitario per
la quantità.
Soluzione
Domanda 3. Spiegare brevemente (circa una pagina) la
nozione di record di attivazione e la gestione della pila dei record di
attivazione a fronte dell'attivazione di metodi. Si illustri l'evoluzione
della pila dei record di attivazione a fronte dell'esecuzione del seguente
programma:
public class EsameD {
public static int g(int k) {
if (k == 0)
return 1;
else
return 2 * g(k-1);
}
public static void main(String[] args) {
int n;
n = g(3);
System.out.println(n);
}
}