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 (6 crediti totali)

Presentazioni simili


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

1 1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (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 degli anni precedenti (devono rivolgersi alla Prof. Occhiuto) §Gli studenti che hanno frequentato nel 2007-2008 possono svolgere il progetto che verra’ presentato oggi

4 4 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 gruppo (di due, tre persone al massimo) §Tutti gli altri devono svolgere il progetto individualmente

5 5 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

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

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

8 8 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

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

10 10 Obiettivo del Progetto §Progettare un semplice tipo di dato astratto §Partiamo dal problema

11 11 Problema §Vogliamo progettare un tipo di dato astratto Biblio Un Biblio rappresenta -un insieme di Scaffali numerati 1,........,n n fisso (parametro) -ogni Scaffale puo’ contenere al massimo k items k fisso(parametro)

12 12 Che cosa e’ un item?  Un Libro oppure  Una Rivista

13 13 Libro §Vogliamo che memorizzi titolo, autore,editore numero di copie disponibili (>0) (“Le affinita’ elettive”, “Goethe”, “Einaudi”, 20) (“Do the androids dream of electric sheeps?”, “Dick”, “Feltrinelli”, 2)

14 14 Rivista §Vogliamo che memorizzi titolo, autore,editore numero numero di copie disponibili (>0) (“Science of Computer Programming”, “Milner”, “Elsevier Science”, 3, 20) (“Science of Computer Programming”, “Milner”, “Elsevier Science”, 4, 10)

15 15 Proprieta’ degli scaffali Vogliamo per costruzione delle proprieta’ degli scaffali Ogni scaffale contiene SOLO LIBRI o SOLO RIVISTE Per semplicita’ assumiamo che 1) scaffali tra L1 e Ln contengono libri 2) scaffali tra R1e Rn e n contengono riviste n (parametro)

16 16 Proprieta’ degli scaffali I Vogliamo sia nel caso di Libri che di Riviste che gli item siano memorizzati in modo ordinato

17 17 Libri: ordinamento in base al titolo se titolo uguale in base all’autore se titolo e autore uguali in base all’editore

18 18 Esempio (“Le affinita’ elettive”, “Goethe”, “Einaudi”, 20) > (“Do the androids dream of electric sheeps?”, “Dick”, “Feltrinelli”, 2) > (“Do the androids dream of electric sheeps?”, “Dick”, “Einaudi”, 10)

19 19 Riviste: ordinamento in base al titolo se titolo uguale in base all’autore se titolo e autore uguali in base all’editore se titolo, autore, editore uguali in base al numero

20 20 Esempio (“Science of Computer Programming”, “Milner”, “Elsevier Science”, 3, 20) < (“Science of Computer Programming”, “Milner”, “Elsevier Science”, 4, 10) (“Science of Computer Programming”, “Milner”, “Elsevier Science”, 3, 20) < (“Theoretical Computer Science”, “harel”, “Elsevier Science”, 4, 100)

21 21 Proprieta’ degli scaffali II Vogliamo che il numero di pezzi totali degli item presenti in ogni scaffale sia minore o uguale della dimensione (k parametro fisso)

22 22 Esempio: dimensione 20 [ (“Do the androids dream of electric sheeps?”, “Dick”, “Feltrinelli”, 2), (“Le affinita’ elettive”, “Goethe”, “Einaudi”, 10)] [ (“Do the androids dream of electric sheeps?”, “Dick”, “Feltrinelli”, 11), (“Le affinita’ elettive”, “Goethe”, “Einaudi”, 10)] OUT OF BOUNDS !

23 23 Proprieta’ degli scaffali III Per motivi di efficienza vogliamo che non compaiano ripetizioni di items (Libri o Riviste)

24 24 Esempio: ripetizioni [ (“Do the androids dream of electric sheeps?”, “Dick”, “Feltrinelli”, 2), (“Do the androids dream of electric sheeps?”, “Dick”, “Feltrinelli”, 10)] Non e’ una rappresentazione efficiente. Meglio usare [ (“Do the androids dream of electric sheeps?”, “Dick”, “Feltrinelli”, 12)]

25 25 Proprieta’ della Biblio collezione di scaffali di Libri collezione di scaffali di Riviste Ogni scaffale deve avere le proprieta’ viste in precedenza

26 26 Proprieta’ della Biblio Inoltre per entrambe le collezioni vogliamo --l’ultimo item dello scaffale i precede o e’ uguale al primo item dello scaffale i+1 --lo scaffale i puo’ contenere items solo se tutti gli scaffali j con j<i sono pieni

27 27 Esempio 1=[L1,L2,L3,L4] 2=[L5,L6] deve essere L5 <L6 e la dimensione 4 (assumendo i libri con occorrenze 1) Se la dimensione e’ 5==> 1=[L1,L2,L3,L4,L5] 2=[L6]

28 28 Operazioni §Abbiamo visto le proprieta’ dei dati astratti Biblio §Vediamo le operazioni

29 29 Inializzazione: parametri §la dimensione degli scaffali (k) §il numero di scaffali dei due tipi (n) §la dimensione e’ >0

30 30 Operazioni  capacity-libro restituisce il numero di occorrenze per Libri ancora liberi  capacity-rivista restituisce il numero di occorrenze per Riviste ancora liberi

31 31 Operazioni  number-l §prende come parametro l’autore, il titolo e l’editore restituisce il numero di occorrenze del Libro corrispondente presente in this

32 32 Operazioni  number-r §prende come parametro l’autore, il titolo, l’editore ed il numero restituisce il numero di occorrenze della Rivista corrispondente presente in this

33 33 Operazioni  alllibri restituisce il numero di Libri presenti in this (come numero di occorrenze)

34 34 Operazioni  allriviste restituisce il numero di Riviste presenti in this (come numero di occorrenze)

35 35 Operazioni  scaffale-l §prende come parametro un titolo, un autore, un editore ed un numero di occorrenze x restituisce il numero di uno scaffale in cui si trovano almeno x occorrenze del libro corrispondente se non ci sono restituisce 0

36 36 Operazioni  scaffale-r §prende come parametro un titolo, un autore, un editore, un numero ed un numero di occorrenze x restituisce il numero di uno scaffale in cui si trovano x occorrenze della rivista corrispondente altrimenti restituisce 0

37 37 Operazioni  libro-titoli §prende come parametro un autore restituisce il numero di titoli differenti di Libri di tale autore se non ce ne sono restituisce 0

38 38 Operazioni  rivista-titolo §prende come parametro un autore ed un titolo restituisce il numero di numeri differenti di Riviste tale autore e titolo se non ce ne sono restituisce 0

39 39 Modificatori  insert-l §prende come parametro un titolo, un autore, un editore, un numero di occorrenze x se il numero di pezzi di x supera il limite sulla dimensione della Biblio solleva SizeException (controllata) altrimenti, inserisce il Libro (come abbiamo descritto in precedenza)

40 40 Modificatori  insert-r §prende come parametro un titolo, un autore, un editore, un numero, un numero di occorrenze x se il numero di pezzi di x supera il limite sulla dimensione della Biblio solleva SizeException (controllata) altrimenti, inserisce la rivista (come abbiamo descritto in precedenza)

41 41 Esempio: inserimento 1=[L1,L2,L3,L4] 2=[L5,L6] (assumendo i libri con occorrenze 1 e la dimensione 4) Se devo inserire L tale che L3 1=[L1,L2,L3,L] 2=[L4,L5,L6] devono essere shiftati! attenzione alle ripetizioni!!!

42 42 Modificatori  remove-l  prende come parametro un titolo, un autore, un editore ed un numero di pezzi x se gli scaffali di Libri non contengono almeno x occorrenze del libro corrispondente solleva l’eccezione NotFoundException (controllata) altrimenti rimuove dagli scaffali x occorrenze del Libro corrispondente

43 43 Modificatori  remove-r  prende come parametro un titolo, un autore, un editore, un numero ed un numero di pezzi x se gli scaffali di Riviste non contengono almeno x occorrenze della rivista corrispondente solleva l’eccezione NotFoundException (controllata) altrimenti rimuove dagli scaffali x occorrenze della Rivista corrispondente

44 44 Modificatori  svuota-scaffale §prende come parametro il numero i di uno scaffale di Libri o Riviste elimina tutto il contenuto dello scaffale se non esiste lo scaffale i-esimo solleva una opportuna eccezione

45 45 Modificatori  aggiungi-scaffale  prende come parametro un intero i >0 aggiunge i Scaffali sia di Libri che di Riviste

46 46 Modificatori  union §prende come parametro una Biblio b §modifica this facendo l’unione con b

47 47 Subset  subset §prende come parametro una Biblio b §restituisce -1 se this e’ un sottoinsieme di b, resituisce 0 se sono uguali, 1 se b e’ sottoinsieme di this §solleva un’ eccezione se non sono confontabili ATTENZIONE (L1,x) appartiene {(L1,y)} se x <=y

48 48 Proprieta’ della Biblio §Devono essere garantite per costruzione §Costruttori §Metodi d’istanza modificatori §Per esempio se si svuota lo scaffale 3, gli items degli scaffali successivi devono essere spostati

49 49 Esempio: rimuoviamo lo scaffale 1 1=[L1,L2,L3,L4] 2=[L5,L6,L7,L8] 3=[L9,L10,L11,L12] (assumendo i libri con occorrenze 1 e la dimensione 4) 1=[L5,L6,L7,L8] 2=[L9,L10,L11,L12]

50 50 Come procedere? Partire dalla specifica del tipo di dato principale Biblio 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

51 51 Tipi di dato ausilari La specifica del magazzino si basa su alcuni tipi di dato ausiliari: Libro e Rivista 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

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

53 53 Verranno apprezzate Uso delle liste concatenate (per esempio per memorizzare la collezione degli scaffali sia di Libri che di Riviste) Se ci sono h scaffali uno potrebbe usare un array di dimensione h In posizione i-esima una lista ordinata di Libri potrebbe rappresentare lo scaffale i-esimo Un po’ complesso spostare le cose da uno scaffale all’altro!! Piu’ semplice usare una lista concatenata in cui i nodi riportano l’info sul numero di scaffale in cui siamo

54 54 Verranno apprezzate L’uso dell’ereditarieta’: e’ evidente che i tipi di dato Libro e Rivista hanno qualcosa in comune (si possono usare tipi e sottotipi?) Analogamente : le due collezioni di scaffali hanno qualcosa in comune (si possono realizzare nello stesso modo?)

55 55 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)


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

Presentazioni simili


Annunci Google