PROGRAMMAZIONE ORIENTATA AGLI OGGETTI E LABORATORIO

Anno accademico 2018-2019

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI E LABORATORIO

Docenti:
Brajnik Giorgio
Shaheen Asma
Anno di corso: 2
Totale crediti: 9
Tipologia: Caratterizzante
Periodo didattico: Primo Periodo
Lingua insegnamento: ITALIANO
Prerequisiti. Esperienza nella programmazione in Java, capacità di installare e configurare applicazioni nel proprio sistema operativo, concetti di base di un sistema operativo. Gli esempi forniti faranno riferimento a un sistema ubuntu.
Metodi didattici. Lezioni frontali, con slide. Esercitazioni interattive in aula. Demo pratiche.
Modalità di verifica. L’esame sarà basato su un questionario a domande chiuse, una prova scritta e un eventuale esame orale.
Altre informazioni. Nessuna

OBIETTIVI FORMATIVI

Lo scopo del corso è di sviluppare la competenza di “pensare ad oggetti” quando si programma un sistema relativamente complesso (non una singola unità, ma migliaia di unità sviluppate insieme ad altre decine di programmatori).Al termine del corso uno studente dovrebbe:aver capito come assegnare le responsabilità a un insieme di classiaver capito come definire interfacce dei vari componentiaver capito come creare astrazioni e come specificarleInoltre, lo studente avrà sviluppato esperienza nella programmazione in Java e nell’uso di strumenti tipici della programmazione in Java quali: eclipse, intellij, git, maven, junit, log4j.

CONTENUTI

Tipi di astrazioni: parametrizzazione, specifica procedurale, astrazione sui dati, sui tipi, sulle iterazioni.Concetti di base di Java: package, classe, oggetti, variabili, allocazione in memoria; mutability; chiamate dei metodi; type checking; overloading; dispatching dei metodi; tipi di base (vettori, array, collections, mappe, stringhe); tipi parametrici.Astrazione procedurale: la specifica, contratti, pre e post-condizioni, le asserzioni, le eccezioni: checked, unchecked; definizione di nuove eccezioni; gestire le eccezioni con reflection e masking; buone pratiche; overloading.Astrazione sui dati: tipi di dati astratti, la loro specifica astratta e concreta; gli invarianti.Astrazione sull’iterazione: uso e specifica di iteratori; invarianti.Design con Card-Responsibility-Collaboration; stato e comportamento e protocollo; single responsibility principle.Astrazione sui tipi: classi astratte; interfacce; substitution principle; uguaglianza; polimorfismo; ereditarietà. Tipi parametrici. Classi interne, anonime, closure. Programmazione funzionale in Java.Design pattern: factory, builder, decorator, observer, strategy.

TESTI DI RIFERIMENTO

Testi di base:B Liskov e J Guttag. Program Development in Java: Abstraction, Specification and Object Oriented Design, 2001. ISBN: 0201657686. Addison-Wesley Professional.J. Bloch. Effective Java, Addison-Wesley Professional; 3 edition (January 6, 2018), ISBN-13: 978-0134685991.Altri testi suggeriti a complemento:R. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. ISBN-13: 978-0132350884, Prentice Hall; 1 edition (August 11, 2008).