1. Conceptes d'OO.
Especificació, disseny i programació orientades a objectes (OO). Classes, objectes, atributs, mètodes i relacions. Encapsulament i ocultació, abstracció i classificació, herència. Polimorfisme, "binding" estàtic i dinàmic. Altres relacions: associació, agregació, dependència.
Relació de l'OO amb els criteris de qualitat del software.
UML: Nomenclatura de classes, atributs i operacions, classes abstractes, genèriques i herència. Nomenclatura dels diferents tipus de relacions.
2. Especificació: diagrames de classes i casos d'ús.
Cicles de vida.
Definició del projecte. Requeriments. Especificació funcional. Modelar primer el domini.
UML: diagrama de classes (domini). Diagrama de casos d'ús. Explicacions textuals.
Estudi d'un cas.
3. Disseny: arquitectura en 3 capes
Descripció del paradigma de disseny d'arquitectura en 3 capes.
4. El llenguatge de programació Java
Implementació dels conceptes d'OO en Java. Herència, polimorfisme i genericitat com a eines de programació. Mecanismes d'execució. Creació i destrucció d'objectes. Crides a mètodes i pas de paràmetres. "Binding" estàtic i dinàmic. "Garbage collection". Implementació de l'arquitectura en 3 capes en Java. Implementació d'interfícies en Java. Conceptes addicionals: fitxers, serialitzacions, bases de dades.
5. Depuració de programes
Verificació. Program Testing: prova i depuració.
Prova de components.
Estatègies de prova i integració. Planificació de proves.
"Bastimentada" i tests de regressió.
Eines d'ajuda a la prova.
Tractament de errors i excepcions.
6. Documentació
Documentació tècnica i d'usuari. Estàndards de documentació. Eines d'ajut a a la documentació (Doxygen).
7. Conceptes bàsics de disseny d'interfícies
Tipus d'entrada i sortida.
Principis de comunicació amb interlocutors humans. Presentació d'informació, entrada i validació de dades, navegació, nivels d'ajut, models d'usuari.