---------- Initial Header -----------=0D=0A=0D=0AFrom : bottega-boun= ce@xxxxxxxxxxxxx=0D=0ATo : bottega@xxxxxxxxxxxxx=0D=0ACc = : =0D=0ADate : Fri, 3 Jan 2003 00:09:20 +0100=0D=0ASubject : [bott= ega] Traccia=0D=0A=0D=0A=0D=0A=0D=0ATommaso mi ha chiesto una traccia sul= la falsariga di quelle d'esame=0D=0Aper esercitarsi. La invio qui, cosi`= chi vuole puo` cimentarsi e=0D=0Ainviare soluzioni (anche parziali) in m= ailing list.=0D=0A=0D=0AIn coda al messaggio ci sono un paio di consigli = sullo svolgimento.=0D=0A=0D=0A* * *=0D=0A=0D=0AUna biblioteca conserva i = dati sui suoi libri in un file `archivio'.=0D=0AAd ogni libro corrisponde= un blocco di testo cosi` organizzato:=0D=0A=0D=0A=0D=0ATitolo del libro=0D= =0AEditore del libro=0D=0ACodice del libro=0D=0AAUTORI=0D=0ANome del prim= o autore=0D=0ACognome del primo autore=0D=0ANome del secondo autore=0D=0A= Cognome del secondo autore=0D=0A...=0D=0ANome dell'autore `n'=0D=0ACognom= e dell'autore `n'=0D=0APRESTITI=0D=0ACodice del cliente a cui e` stato pr= estato=0D=0AData del prestito=0D=0ACodice del cliente a cui e` stato pres= tato=0D=0AData del prestito=0D=0ACodice del cliente a cui e` stato presta= to=0D=0AData del prestito=0D=0A...=0D=0A=0D=0A=0D=0AI dati sui clienti so= no conservati in un file di testo `clienti'. A=0D=0Aciascun cliente corr= isponde un blocco di testo cosi` organizzato:=0D=0A=0D=0ANome=0D=0ACognom= e=0D=0ACodice=0D=0A=0D=0A=0D=0AIn entrambi i casi, naturalmente, i blocch= i di testo si ripetono (il=0D=0Aprimo file contiene cioe` vari libri, il = secondo contiene vari=0D=0Aclienti).=0D=0A=0D=0ACrea delle classi che per= mettano il caricamento di e l'accesso a=0D=0Aquesti dati. Crea inoltre u= na classe che permetta di effettuare una o=0D=0Apiu` delle seguenti query= :=0D=0A=0D=0A- Calcolare il numero di prestiti complessivi effettuati in = un certo=0D=0Aperiodo (cioe` tra una data di partenza e una di arrivo).=0D= =0A=0D=0A- Ottenere la lista dei clienti a cui e` stato prestato un libro= in un=0D=0Acerto periodo.=0D=0A=0D=0A- Dato il nome e cognome di un clie= nte, ottenere la lista dei libri=0D=0Ache gli sono stati prestati.=0D=0A=0D= =0A- Dato il nome e cognome di un cliente, ottenere la lista dei libri=0D= =0Ache gli sono stati prestati in un certo periodo. (Naturalmente, se la= =0D=0Aquery precedente restituiva un vettore, questa query puo` essere=0D= =0Aintesa semplicemente come un filtro sul vettore restituito dalla=0D=0A= precedente.)=0D=0A=0D=0A- Dato il codice di un libro, ottenere la lista d= ei clienti a cui e`=0D=0Astato prestato.=0D=0A=0D=0A=0D=0A* * *=0D=0A=0D=0A= Alcuni consigli:=0D=0A=0D=0A- Quando un metodo non restituisce un dato, b= ensi` una lista di dati=0D=0Adello stesso tipo (es. una lista di auto cor= rispondenti ad un certo=0D=0Acriterio), probabilmente dovra` metterli in = un vettore e passare=0D=0Aquesto vettore. Esempio:=0D=0A=0D=0A class Co= ncessionaria {=0D=0A ...=0D=0A public Vector trovaAuto(String m= arca, String modello) {=0D=0A Vector trovate =3D new Vector();=0D= =0A ...=0D=0A // [riempi il vettore con le auto via via trovat= e]=0D=0A ...=0D=0A return trovate;=0D=0A }=0D=0A = }=0D=0A =0D=0A- Una stringa che rappresenta una data nel formato `12/02/= 01' puo`=0D=0Aessere letta cosi`:=0D=0A=0D=0A String s =3D "12/02/01";=0D= =0A String sGiorno =3D s.substring(0, 2);=0D=0A String sMese =3D s.subs= tring(3, 5);=0D=0A String sAnno =3D s.substring(6, 8);=0D=0A int iGiorn= o =3D Integer.parseInt(sGiorno);=0D=0A int iMese =3D Integer.parseInt(sM= ese);=0D=0A int iAnno =3D Integer.parseInt(sAnno);=0D=0A =0D=0AData d =3D= new Data(iGiorno, iMese, iAnno);=0D=0A=0D=0ANaturalmente e` importante c= he il formato della data rimanga fisso.=0D=0ASe dovessimo cambiare la dat= a di esempio in `12/02/2001', il programma=0D=0Anon la interpreterebbe pi= u` correttamente.=0D=0A=0D=0AOK ho ricevuto l'esercizio=0D=0Aciao Massimi= liano