Cette UE présente les principaux concepts, mécanismes et difficultés des langages de programmation courants. Elle présente tout d'abord les principaux paradigmes, rappelle les principes de l'orienté object, présente d'autres notions existant dans divers langages et se termine par la programmation événementielle et les interfaces graphiques.
 
Le cours s'appuie essentiellement sur deux langages : C++ et Java. Java est supposé déjà connu (ou au moins un langage orienté object équivalent). Java sert de point de comparaison, C/C++ permet d'illustrer divers aspects qui existent dans plusieurs langages mais pas en Java.
 
Une large part est consacrée aux travaux pratiques, qui visent à la création d'un logiciel comprenant une partie principale en C++ communiquant avec une interface graphique Java/Swing.
 
Parmi les aspects abordés en cours :
  • Orienté objet (révision) : classes, instances, méthodes, surcharge ; encapsulation ; espace de nommage ; héritage ; polymorphisme par héritage ; méthodes et classes abstraites ; classes internes ; exceptions
  • Autres concepts / approfondissement : allocation mémoire et durée de vie ; copie d'objet ; pointeurs/références/smart pointers ; inférence de type ; constance et classes immuables ; polymorphisme paramétré (templates/generics) ; méta-programmation statique ; typage dynamique ; lambdas ; passage par valeur et par référence ; héritage multiple ; surcharge des opérateurs ; sérialisation.
  • Programmation événementielle et interfaces graphiques : Introduction à Java/Swing (widgets, arbre d'instanciation) ; gestion événementielle (listeners, interfaces, composition, classes internes, lambdas) ; gestion spatiale ; dessin interactif ; MVC.