Metodologie di Programmazione tecniche per la programmazione orientata ad oggetti esemplificate utilizzando il linguaggio Java testo di riferimento (fino al Cap. 10): Barbara Liskov, Program Development in Java, Abstraction, Specification and Object-Oriented Design, Addison-Wesley 2001 1 Prerequisiti del Corso LIP (I MODULO) Fondamenti di Programmazione Frequenza in parallelo del II MODULO DI LIP Le lezioni teoriche avranno argomenti comuni tra i due corsi 2 Contenuti del corso 1 (in corsivo le parti non trattate nel testo) Ereditarieta’ in Java cenni di semantica operazionale di Java classi, oggetti, metodi, gerarchie estensione di quella fatta nel corso di FP 3 Contenuti del corso 2 Parte metodologica Vedremo come utilizzare i meccanismi di astrazione di un linguaggio ad alto livello (Java) per sviluppare programmi di buona qualita’: che siano facili da capire e allo stesso tempo facili da mantenere e da modificare Non è compito di questo corso introdurre il linguaggio nella sua interezza nè tanto meno le sue librerie 4 Contenuti del corso 2 per sviluppare programmi di notevole dimensione e’ necessario decomporre il problema in sottoproblemi questo processo di decomposizione deve essere guidato da passi di astrazione e’ necessario cambiare il livello di dettaglio (astrarre) in modo da buttare via dettagli non importanti, rendere uguali cose diverse etc. 5 Contenuti del corso 3 vedremo un insieme di tecniche basate su vari tipi di astrazione alcune supportate da Java in modo più o meno diretto la più importante non è supportata da Java • l’astrazione attraverso la specifica • si realizza aggiungendo al codice Java – specifiche informali (descrivono cosa deve fare un programma) 6 Astrazione tramite Specifica Vedremo la separazione fondamentale tra specifica ed implementazione (ovvero tra cosa un programma fa e come lo fa) Vedremo come la specifica deve essere utilizzata per mascherare l’implementazione (ovvero per astrarre dalle varie implementazioni) Relazione tra specifica ed implementazione, dimostrazioni di “correttezza” relazioni formali fra 2 specifiche, fra 1 specifica ed una implementazione, etc. Le dimostrazioni sono tanto importanti quanto le implementazioni 7 Contenuti del corso 3 meccanismi di astrazione di Java (che consideremo) astrazioni procedurali astrazioni sui dati iterazione astratta gerarchie di tipi polimorfismo ogni meccanismo di astrazione di Java ha associata una particolare sequenza di operazioni di: specifica, implementazione e dimostrazione 8 Materiale didattico in aggiunta al (non in sostituzione del) libro di testo, i lucidi utilizzati nelle lezioni e nelle esercitazioni (di presentazione powerpoint scaricabile) sono disponibili sulla pagina web http://www.di.unipi.it/~levifran/MP.html verranno pubblicati settimanalmente sulla pagina web in forma aggiornata i lucidi costituiscono un supporto fondamentale per seguire le lezioni (e’ consigliabile averne copia) 9 Esame, istruzioni per l’uso del corso esame = prova scritta + orale l’esame orale deve essere sostenuto nella stessa sessione dello scritto 2 prove intermedie che possono rimpiazzare la prova scritta (in tal caso l’orale deve essere sostenuto entro luglio 2007) 10 Verifiche Intermedie prima settimana di aprile + ultima settimana di maggio Non e’ possibile recuperare le verifiche Chi non e’ ammesso all’orale con le verifiche intermedie dovra’ sostenere lo scritto normale 11 Orario (modificato) Martedi’ 11.00-13.00--14.00-16.00 AULA 2 (MP) Venerdi’ 11.00-13.00--14.00-16.00 LAB 2 (LIP) 12 Nota Nuovo ordinamento dall’anno accademico 2008-2009 Dall’anno prossimo partira’ il primo anno con il nuovo piano di studi 13 Esami di Informatica nuovo ordinamento Programmazione 1: 12 crediti al PRIMO Algoritmica : 12 crediti al PRIMO Programmazione 2: 9 crediti al SECONDO 14 Cosa succede agli studenti del vecchio ordinamento? Potrete continuare con il vostro piano di studi Verranno comunque mantenuti gli appelli d’esame di tutte le materie Questo quindi e’ probabilmente l’ultimo anno in cui ci saranno lezioni di MP e LIP 15