NFP121 : Programmation avancée (6 ECTS)
Pré-requis
Connaissances de niveau Bac+2 en informatique. Impérativement savoir déjà programmer (de préférence en objet).
Objectifs
Maitriser les concepts avancés de la programmation objet. Apprendre à identifier et utiliser les patrons de conception (design pattern) adaptés à une situation de conception. Patrons utilisables quelque soit le langage de programmation.
Contenu
Structure des applications objets avec JAVA
Aspects impératifs du langage, tests unitaires
Interfaces, classes et polymorphisme
Introduction aux patrons de conception(Design Pattern)
Les fondamentaux Délégation, classe abstraite, interface,
Les patrons Adaptateur et Procuration
Programmation évènementielle
Les patrons Observateur/Observé, Stratégie, MVC
Généricité et Collections
Les patrons Patron de méthode, Itérateur, Fabrique
Les patrons réunis
Composite, Interpréteur et Visiteur
Memento, Commande, ...
Introspection et réflexivité en Java
Le patron Décorateur et les Entrées/Sorties
Invariant, pré-post assertions comme décorations
Sérialisation XML/JSON et JAVA
Injection de dépendances et inversion de contrôle
Le patron Fabrique, ServiceLocator
L'outil femtoContainer
Les patrons de conception et l'injection de dépendances
Vers une séparation de la configuration de l'utilisation
Chaque thème est accompagné d'un travail pratique
Modalités de validation
Examen écrit obligatoire, dans lequel les élèves doivent impérativement écrire du code. QCM interdit.
Les travaux pratiques *notés* sont obligatoires. Ces derniers participent à la note à condition que la note à l'examen soit au moins de 7/20. Fonctionnement identique pour la deuxième session.
Compétences visées
Maitrise des concepts objets et de plusieurs patrons de conception (Design pattern)
Formations
Cette unité d'enseignement est dispensée dans les formations suivantes :
- Licence générale Informatique parcours Informatique Générale (L3) (LG02501A)
- Titre RNCP Niveau 6 Concepteur intégrateur d'infrastructures informatiques (systèmes et réseaux, applicatives, ou de sécurité) parcours Systèmes d'information (CRN0802A)
- Diplôme d'ingénieur informatique parcours Cybersécurité (CYC9106A)
- Ingénieur Informatique parcours Informatique, Réseaux, Systèmes et Multimédia (IRSM) (CYC9104A)