Fondamenti di Informatica 1
Corso di Laurea in Ingegneria Informatica
A.A. 2002/03
Esercizio di esame
Si vogliono gestire le informazioni relative ad un guardaroba. Ogni capo di
abbigliamento è identificato da un codice (una stringa). Un
Guardaroba può contenere un numero arbitrario di stampelle,
numerate sequenzialmente a partire da 0. Ogni stampella nel guardaroba
può essere libera oppure occupata da un capo. Gli oggetti
Guardaroba supportano le seguenti funzionalità:
- crea: che dato un intero n crea un oggetto
Guardaroba che inizialmente ha n stampelle libere;
- numStampelle: che restituisce il numero di stampelle del
guardaroba;
- assegnaStampella: che dato il codice c di un capo
(una stringa), occupa la prima stampella libera (ossia la stampella
libera con numero minimo) con il capo c e restituisce il numero
della stampella, se esiste una stampella libera; lancia un'eccezione
altrimenti;
- liberaStampella: che dato il numero n di una stampella
rende la stampella n libera;
- dammiCapo: che dato il numero n di una stampella,
restituisce il codice del capo che occupa la stampella n, se
questa è occupata; null altrimenti;
- cercaCapo: che dato il codice c di un capo,
restituisce il numero della stampella occupata dal capo c, se
questa è esiste; -1 altrimenti;
- numStampelleOccupate: che restituisce il numero di stampelle
occupate nel guardaroba;
- aggiungiStampelle: che dato un numero intero positivo n
aggiunge al guardaroba n stampelle libere numerate
sequenzialmente a partire dall'ultima stampella già presente nel
guardaroba;
- riordina: che sposta tutti i capi nel guardaroba in modo che
tutti le stampelle fino ad un certo numero siano occupate, ed elimina dal
guardaroba le rimanenti stampelle.
Domanda 1. Scrivere una classe Java Guardaroba
per rappresentare oggetti Guardaroba.
Soluzione:
rappresentazione
degli oggetti,
scheletro della classe,
classe Guardaroba
Soluzione alternativa:
rappresentazione
degli oggetti,
scheletro della classe,
classe Guardaroba2
Domanda 2. Realizzare un metodo statico
disposizioneCapi
cliente della classe Guardaroba
che, dato un guardaroba g ed il nome f di un file, scrive sul
file f, uno per riga, il numero della stampella ed il codice del capo
che la occupa, per tutte le stampelle occupate del guardaroba g.
Soluzione
Soluzione alternativa
Domanda 3. Spiegare il meccanismo di gestione della memoria
in Java a fronte dell'attivazione di metodi. In particolare, illustrare come
avvengono il passaggio dei parametri e la restituzione del valore di ritorno.
Illustrare il meccanismo di gestione della memoria sull'esempio dell'esecuzione
di x = fattoriale(3);
da parte di un metodo main
,
dove x
è una variabile locale a main
e
fattoriale
è un metodo, implementato in modo
ricorsivo, per il calcolo del fattoriale di un intero nonnegativo.