1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento (fino al Cap. 10): l Barbara Liskov, Program Development in Java, Abstraction, Specification and Object-Oriented Design, Addison-Wesley 2001
2 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
3 Contenuti del corso 1 (in corsivo le parti non trattate nel testo) §Ereditarieta’ in Java §cenni di semantica operazionale di Java l classi, oggetti, metodi, gerarchie l estensione di quella fatta nel corso di FP
4 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 l nè tanto meno le sue librerie
5 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.
6 Contenuti del corso 3 §vedremo un insieme di tecniche basate su vari tipi di astrazione l alcune supportate da Java in modo più o meno diretto l 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)
7 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” l relazioni formali fra 2 specifiche, fra 1 specifica ed una implementazione, etc. §Le dimostrazioni sono tanto importanti quanto le implementazioni
8 Contenuti del corso 3 §meccanismi di astrazione di Java (che consideremo) l astrazioni procedurali l astrazioni sui dati l iterazione astratta l gerarchie di tipi l polimorfismo §ogni meccanismo di astrazione di Java ha associata una particolare sequenza di operazioni di: specifica, implementazione e dimostrazione
9 Materiale didattico, esame, istruzioni per l’uso del corso §in aggiunta al (non in sostituzione del) libro di testo, i lucidi utilizzati nelle lezioni e nelle esercitazioni (in formato html e di presentazione powerpoint scaricabile) sono disponibili sulla pagina web §esame = prova scritta + orale l l’esame orale deve essere sostenuto nella stessa sessione dello scritto l 2 prove intermedie che possono rimpiazzare la prova scritta (in tal caso l’orale deve essere sostenuto entro luglio 2004)