Programma del corso
Introduzione
- La fabbrica del software
- Il processo di produzione del software
- Gestire la complessità
Approfondimenti sul paradigma object-oriented
- Introduzione all'OOP
- Origini ed evoluzione storica
- Cliassificazione dei vari tipi di polimorfismo
- Genericità
- Limiti del polimorfismo per inclusione
- Ereditarietà: subtyping e subclassing
- Ereditarietà multipla
- Tecniche di Implementazione degli oggetti
- Il problema della classe base fragile
- Alternative all'ereditarietà: forwarding e delega
Elementi di Object Oriented Design (OOD)
- UML
- Principi fondamentali di OOD
- I pattern
- Accenni sugli antipattern
Componenti software
- Il concetto di componente software
- Il modello PME
- Riflessione e serializzazione
- Tecniche di implementazione degli eventi: interfacce e closures