La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)

Presentazioni simili


Presentazione sul tema: "1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)"— Transcript della presentazione:

1 1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)

2 2 Modalita’ d’Esame §esame = progetto finale + orale l prove di verifica intermedia l non *necessarie*, verranno comunque considerate come parte fondamentale per il voto finale l analogamente alla valutazione del rendimento dimostrato durante le esercizitazioni in Laboratorio

3 3 Chi puo’ presentare il progetto §Gli studenti che hanno *frequentato* §Sulla pagina web la lista degli studenti che hanno frequentato l’80 % delle lezioni §Gli studenti lavoratori e/o gli studenti degli anni precedenti (anche se non hanno frequentato)

4 4 Modalita’ per lo svolgimento del progetto §Gli studenti degli anni precedenti (devono rivolgersi alla Prof. Occhiuto) §Gli studenti che hanno frequentato nel 2006-2007 devono svolgere il progetto che verra’ presentato oggi

5 5 Modalita’ per lo svolgimento del progetto §Come deve essere svolto? Dipende dalla valutazione ottenuta durante l’anno §Gli studenti che hanno ottenuto una valutazione sufficiente (vedi pagina WEB) possono svolgere il progetto in gruppi (di due, tre persone al massimo) §Tutti gli altri devono svolgere il progetto individualmente

6 6 Modalita’ per i gruppi §Il progetto deve essere consegnato una sola volta §Al momento della consegna deve essere comunicato al docente chi sono gli appartenenti al gruppo §La prova orale deve essere sostenuta individualmente da ogni partecipante al gruppo §Puo’ essere svolta in momenti diversi

7 7 Quando si puo’ consegnare il progetto? § Ad ogni sessione d’esame §Sessione estiva: entro 13 luglio 2007 §Sessione autunnale: da fissare (settembre) §Orali: da concordare volta per volta §Tutte le informazioni sono disponibili sulla pagina web del corso

8 8 Validita’ del progetto § Fino a settembre §Sessione invernale: nuovo progetto da concordare volta per volta (richiedendolo al docente)

9 9 Inoltre §Devono essere spediti per e-mail (levifran @di.unipi.it) tutti i files classe.java in un archivio.zip o.gz indicando il nome (i nomi) dei partecipanti

10 10 Cosa deve contenere? §Programma “Funzionante” §Una relazione che spieghi le principali scelte di progetto

11 11 Problema §Vogliamo progettare un tipo di dato astratto Magazzino Un oggetto di tipo Magazzino memorizza le seguenti informazioni -la data corrente -la lista della merce disponibile nel magazzino -la dimensione del magazzino

12 12 Data §Vogliamo che memorizzi giorno, mese, anno 1<=giorno<=30 1<=mese <=12 2007<=anno

13 13 Merce §Vogliamo che memorizzi: codice (di tipo intero) per identificare il prodotto numero pezzi (maggiore di zero) la scadenza

14 14 Scadenza La scadenza e’ (in alternativa) una data o infinito (non ha scadenza)

15 15 Proprieta’ del magazzino Un oggetto di tipo Magazzino memorizza le seguenti informazioni -la data corrente (giorno,mese,anno) -la lista della merce disponibile nel magazzino -la dimensione

16 16 Proprieta’ del magazzino I Vogliamo che non sia presente merce scaduta! Ogni merce presente nel magazzino deve avere una scadenza che e’ uguale o maggiore della data corrente

17 17 Scadenza: ordinamento §Vogliamo un ordinamento tra le scadenze: --ogni data e’ minore di infinito --infinito e’ minore di infinito --tra date vale l’ordinamento cronologico

18 18 Esempio 1/12/2007 < infinito 6/11/2007< infinito 1/12/2007 < 17/12/2007 6/11/2007<1/1/2008

19 19 MERCE SCADUTA Ogni merce presente nel magazzino deve avere una scadenza che e’ uguale o maggiore della data corrente Data corrente: 30/5/2007 Merce : codice 125 pezzi 400 data 1\5\2007

20 20 Proprieta’ del magazzino II Vogliamo che il numero di pezzi totali delle merci presenti nel magazzino sia minore o uguale della dimensione dimensione: 5 (123,4,1\12\2009), (125,400,1\11\2008)

21 21 Proprieta’ del magazzino III Vogliamo che la lista della merce disponibile sia ordinata (per motivi di efficienza) Come? In base al codice del prodotto (in ordine crescente) A parita’ di codice in base alla scadenza (quella che scade prima deve venire prima) in ordine crescente

22 22 Esempio (123,4,1\12\2009) (125,400,1\11\2008) (125,400,1\11\2009)

23 23 Proprieta’ del magazzino III Per motivi di efficienza vogliamo che non compaiano ripetizioni di merci che hanno lo stesso codice del prodotto e scadenza

24 24 Esempio: ripetizioni (125,300,1\11\2009) (125,400,1\11\2009) Non e’ una rappresentazione efficiente. Meglio usare (125, 700,1\11\2009)

25 25 Operazioni sul magazzino Vogliamo una serie di operazioni per ---creare un Magazzino ---aggiornare la data corrente ---inserire nuova merce ---verificare la disponibilita’ dei prodotti

26 26 Inializzazione: parametri §la data corrente iniziale §la dimensione (fissa) e >0

27 27 Operazioni  get-data restituisce la data corrente  get-size restituisce la dimensione

28 28 Operazioni  pezzi  prende come parametro il codice di un prodotto cod restituisce il numero di pezzi del prodotto cod presenti nel magazzino (indipendendente dalla scadenza)

29 29 Operazioni  pezzi-data  prende come parametro il codice di un prodotto cod ed una data x restituisce il numero di pezzi del prodotto cod presenti nel magazzino che hanno scadenza maggiore o uguale ad x

30 30 Operazioni  allpezzi restituisce il numero di pezzi presenti nel magazzino (di tutti i prodotti)

31 31 Operazioni  allpezzi-data §prende come parametro una data x restituisce il numero di pezzi presenti nel magazzino (di tutti i prodotti) presenti nel magazzino che hanno scadenza maggiore o uguale ad x

32 32 Operazioni di modifica  cambia-data prende come parametro una data x se x e’ minore o uguale alla data corrente solleva InvalidDataException (controllata) se x e’ maggiore della data corrente aggiorna la data corrente con x, e modifica la lista della merce disponibile, rimuovendo quella scaduta

33 33 Esempio (123,4,1\12\2009) (125,400,1\11\2008) (125,400,1\11\2009) Data nuova 1\1\2009 (123,4,1\12\2009) (125,400,1\11\2009)

34 34 Modificatori  insert §prende come parametro una Merce x se la scadenza di x e’ minore della data corrente solleva InvalidDataException se il numero di pezzi di x supera il limite sulla dimensione del magazzino solleva SizeException (controllata) altrimenti, inserisce x nella lista della Merce disponibile (in base all’ordinamento)

35 35 Esempio: inserimento (125,300,1\11\2009) (127,400,1\11\2009) Inseriamo (126, 700,1\11\2009): (125,300,1\11\2009) (126, 700,1\11\2009) (127,400,1\11\2009)

36 36 Esempio: ripetizioni (125,300,1\11\2009) (125,400,1\12\2009) Inseriamo (125, 700,1\11\2009): (125,1000,1\11\2009) (125,400,1\12\2009)

37 37 Modificatori  remove  prende come parametro il codice di un prodotto cod e un numero di pezzi x se la lista della merce non contiene almeno x pezzi di prodotto cod solleva l’eccezione NotFoundException (controllata) altrimenti rimuove dalla lista della merce x pezzi di prodotto cod (a partire da quelli con scadenza minore)

38 38 Esempio: rimozione (125,300,1\11\2009) (125,500,1\12\2009) (127,100,1\12\2007) Rimuoviamo 600 pezzi di 125: (125,200,1\12\2009) (127,100,1\12\2007)

39 39 Modificatori  removeall  prende come parametro il codice di un prodotto cod rimuove dalla lista della merce tutta la merce di prodotto cod

40 40 In aggiunta  get-merce  prende come parametro una scadenza s se s e’ minore della data corrente solleva InvalidDataException altrimenti restituisce le lista della merce presente nel magazzino con scadenza s

41 41 Esempio (125,300,1\12\2007) (125,500,1\12\2009) (127,100,1\12\2007) Parametro 1\12\2007 : restituisce (125,300,1\12\2007) (127,100,1\12\2007)

42 42 Proprieta’ del magazzino §Devono essere garantite per costruzione §Costruttori §Metodi d’istanza che realizzano le operazioni segnalano (p.e. tramite opportune eccezioni) le situazioni in cui la modifica non puo’ essere effettuata perche’ viola le condizioni

43 43 Come procedere? Partire dalla specifica del tipo di dato principale Magazzino Specifica: costruttori, metodi e descrizione informale (pre e post condizioni) Devono realizzare le richieste descritte in precedenza I commenti alle classi sono parte integrante del progetto

44 44 Tipi di dato ausilari La specifica del magazzino si basa su alcuni tipi di dato ausiliari: Data, Merce, Scadenza E’ necessario darne specifica ed implementazione Lo stato degli oggetti deve memorizzare le informazioni richieste Quali Operazioni? A scelta: ---pensare ad un insieme di operazioni significativo ---semplifichino e supportino la realizzazione del tipo di dato principale Scelte di progetto spiegate e motivate nella relazione

45 45 Implementazione Scegliere la rappresentazione piu’ adeguata per ogni tipo di dato Non ci sono vincoli sul modo in cui realizzarlo (purche’ funzioni)

46 46 Verranno apprezzate Uso delle liste concatenate (per esempio per memorizzare la lista della merce nel magazzino) L’implementazione sfrutti l’ordinamento per motivi di efficienza L’uso dell’ereditarieta’ (data, scadenza?)

47 47 Testing §Deve essere realizzato tramite un opportuno metodo main (in modo standard) §Deve essere inviato insieme ai files del progetto §NOTA: il progetto deve essere inviato una ed una sola volta nella versione finale (funzionante)

48 48 Ricevimento §Non ci saranno piu’ lezioni §Per qualsiasi informazione (salvo dal 10 al 24 giugno) levifran@di.unipi.it


Scaricare ppt "1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)"

Presentazioni simili


Annunci Google