Progettazione del Software - A.A. 2008/09
Esercitazione 1
Esercizio 1.
Facendo uso di Eclipse:
- creare un progetto con nome HelloWorldPrj;
- creare, all'interno del progetto, una classe HelloWorldApp, contenente il metodo main, che stampa la stringa "Hello World" su schermo;
- compilare il progetto;
- eseguire il progetto.
Esercizio 2.
Parte 1.
Facendo uso di Eclipse:
- creare un progetto con nome ProgMotori;
- crearvi all'interno un package motori, contenente:
- una classe MezzoAMotore,
con campi privati:
- numSerie di tipo stringa;
- on di tipo booleano;
e metodi pubblici:
- costruttore ad un argomento, che inizializza il valore del campo numSerie al valore di input ed inizializza on al valore false;
- String toString() che restituisce la stringa "M-" seguita da numSerie;
- boolean onOff() che assegna il valore true alla variabile on se questa è false, e valore false altrimenti, e restituisce il valore appena assegnato;
- boolean isOn() che restituisce il valore corrente della variabile on;
- una classe Automobile, derivata da MezzoAMotore,
con campi privati:
- tergicristalliOn di tipo booleano
e metodi pubblici:
- costruttore ad un argomento, che inizializza il valore del campo numSerie al valore di input ed inizializza on e tergicristalliOn al valore false;
- String toString(), che restituisce la stringa "A-" seguita dall'output del metodo toString() della classe base;
- boolean tergicristalliOnOff(), che
- lancia un'eccezione se invocata quando il motore è spento (cioè, la variabile on ha valore false), altrimenti
- assegna il valore true alla variabile tergicristalliOn se questa è false, e valore false altrimenti, e restituisce il valore appena assegnato;
Parte 2.
Nel package senza nome (del progetto corrente ProgMotori), creare una classe MotoriApp e mostrare un esempio di uso delle classi specificate precedentemente.
In particolare, ci si aspetta che:
- vengano istanziati oggetti di entrambe le classi, leggendo valori forniti in input dall'utente;
- sia data la possibilità all'utente di interagire con gli oggetti (es. accendere/spegnere un motore o attivare i tergicristalli);
- siano forniti esempi di stampa su schermo delle infomazioni (pubblicamente accessibili) relative a ciascuno oggetto;
Infine, compilare ed eseguire il progetto.
Domanda.
Cosa accadrebbe nella classe Automobile se il costruttore di default della classe MezzoAMotore inizializzasse il valore della variabile on a true?
Quali modifiche si potrebbero apportare a MezzoAMotore per risolvere il problema?
Esercizio 3.
Parte 1.
Si vogliono gestire i prestiti di giochi da parte di ludoteche.
Di un oggetto Ludoteca sono di interesse:
- il nome (una stringa),
- i giochi messi a disposizione
- la persona a cui ciascun gioco è stato prestato
Di ogni gioco sono di interesse le seguenti informazioni:
- il nome (una stringa);
- la fascia di età per cui il gioco è adatto (due interi, di cui uno rappresenta l'età minima e l'altro quella massima).
La classe Gioco
è fornita nel file Gioco.java.
Di ogni persona sono di interesse le seguenti informazioni:
- il nome (una stringa);
- gli estremi di un documento (una stringa).
La classe Persona
è fornita nel file Persona.java.
Gli oggetti Ludoteca supportano le seguenti funzionalitą:
- crea: che, data una stringa n che rappresenta il nome
della Ludoteca, crea un oggetto Ludoteca con nome
n, che inizialmente non ha alcun gioco disponibile;
- nome: che restituisce il nome della Ludoteca;
- presente: che, dato un gioco g (oggetto della classe
Gioco
), restituisce
true se il gioco g č disponibile nella
Ludoteca, false altrimenti;
- chiHaIlGioco: che dato un gioco g, restituisce
la persona a cui č stato prestato, oppure
null
se il
gioco non č stato prestato;
- numeroGiochi: che restituisce il numero di giochi nella
Ludoteca;
- numeroGiochiPrestati: che restituisce il numero di giochi nella
Ludoteca che sono stati prestati;
- aggiungiGioco: che, dato un gioco g, lo aggiunge a
quelli della Ludoteca;
- eliminaGioco: che, dato un gioco g, lo elimina
da quelli della Ludoteca; se il gioco non
č presente non fa nulla;
- prestaGioco: che, dato un gioco g e una persona
p, presta il gioco alla persona, se questo esiste e se non č
gią in prestito; altrimenti lancia una eccezione;
- restituisciGioco: che, dato un gioco g,
restituisce il gioco, se questo esiste ed č in prestito,
altrimenti lancia una eccezione;
- tuttiIGiochi: che restituisce un
array di giochi contenente i tutti i giochi presenti nella
Ludoteca.
Realizzare la classe Ludoteca, secondo le specifiche sopra riportate.
Parte 2.
Realizzare la classe ServiziLudoteca
, contenente il
metodo statico
giochiInComune
, cliente della classe Ludoteca
che,
dati
- un oggetto lt della classe
Ludoteca
,
- due interi e1 ed e2 che rappresentano due etą,
- il nome fout di un file,
scrive sul file fout, un gioco per riga, le informazioni (nome e
fascia di etą) relative ai giochi non in prestito in lt,
che sono adatti sia alle persone di etą e1 che alle persone di
etą e2.
Parte 3.
Scrivere una classe cliente di Ludoteca
e
ServiziLudoteca
, contenente un metodo main
,
che utilizzi tutte le funzionalitą delle due classi.
Torna alla Home Page delle esercitazioni.