Progettazione del Software - A.A. 2009/10
Esercitazione 1 - 5/03/2010
Esercizio 1.
Dopo aver analizzato la realizzazione
del
Tipo astratto
Lista con uno schema realizzativo sia con side-effect (senza
condivisione di memoria) sia funzionale (con condivisione di memoria) realizzare
il Tipo Astratto Pila
con gli stessi schemi realizzativi. Scrivere anche due classi "main" per provare
le diverse realizzazioni.
- Effettuare opportunamente anche l'overriding del metodo hashcode
.
- Realizzare la classe utilizzando i Generics.
Esercizio 2.
- Realizzare il Tipo
astratto
Officina.
- Realizzare le seguenti implementazioni concrete della classe Mezzo
Bicicletta
- Costruttore Bicicletta(String unaMarca, String unModello, String
unColore)
- Il metodo getNumeroRuote() restituisce sempre 2.
Auto
- Costruttore Auto(String unaMarca, String unModello, String
unColore, String targa)
- Esiste un metodo getTarga() che restituisce la targe dell'auto
- Il metodo getNumeroRuote() restituisce sempre 4.
Camion
- Costruttore Camion(String unaMarca, String unModello, String
unColore, boolean rimorchio) dove rimorchio vale
true se il camion è provvisto di rimorchio.
- Esiste un metodo haRimorchio() che restituisce true se
il camion è provvisto di rimorchio.
- Il metodo getNumeroRuote() restituisce 8 se haRimorchio()
vale true oppure 4 se haRimorchio() vale false
- Realizzare una classe "main" per provare le implementazioni.
Note sulla realizzazione.
- Rappresentazione dei valori: dobbiamo rappresentare da una parte la partita
IVA dell'officina e dall'altra i mezzi presenti nell'officina con associato il
loro status. La partita IVA la rappresentiamo con un campo dati (variabile di
istanza) String. Le auto presenti nell'officina le rappresentiamo
attraverso una lista collegata i cui nodi contengono due informazioni: il
riferimento all'auto e lo status dell'auto nell'officina rappresentato da un
valore booleano. L'uso di una lista collegata è giustificato dal fatto che le
auto devono essere inserite ed eliminate dalla struttura dati che rappresenta
l'officina.
- Schema realizzativo: essendo Officina un tipo astrazione di entità
sceglieremo uno schema realizzativo con side-effect (senza condivisione di
memoria). Gli oggetti Auto verranno utilizzati in sharing.
- Interfaccia di classe: definiamo un metodo per ciascuna delle funzioni del
tipo astratto. Realizziamo la funzione crea
attraverso un costruttore con un parametro String per rappresentare
la partita IVA. Poiché Officina è un tipo astrazione di entità, il metodo
equals ereditato da Object che verifica l'uguaglianza superficiale
è sufficiente a definire l'uguaglianza tra officina (cioè un'officina è uguale
solo a se stessa).