Accueil >UES >UEs par domaine >AISL

NFP101 : Programmation fonctionnelle en Java

Diplômes:  CYC45 Diplôme d’ingénieur Cnam spé. informatique option architecture et ingénierie des systèmes et des logiciels , MR089 Master Design et développement des objets, médias et espaces numériques , MR071 Master Recherche opérationnelle , MR069 Master Systèmes embarqués sûrs et mobiles , MR082 Master systèmes d’information et de décision , CPN11 Titre RNCP (niveau II) concepteur en architecture informatique
Mots clés:  Programmation orientée objet , Développement logiciel , Méthode objet , Sémantique des programmes
UE:  NFP101 Programmation et développement orientés objets
Fiche descriptive de l'UE: Cliquez ici

Responsable national : Tristan Crolard.


Lieu du cours :

Les séances ont lieu au second semestre le mardi soir de 18H30 à 21H30 au Cnam Paris.


Objectifs de ce cours :

Ce cours s’adresse à toute personne ayant une expérience de la programmation en Java.

L’objectif de ce cours est d’apprendre le paradigme de la programmation fonctionnelle et de comprendre les avantages liés à cette approche. Le langage de programmation utilisé principalement pour illustrer ces concepts sera Java, mais une comparaison détaillée avec des langages fonctionnels modernes comme Scala ou Kotlin permettra de compléter cette présentation.

Les mécanismes usuels des langages orientés objet (encapsulation, héritage, redéfinition, liaison tardive, ...) seront aussi revisités dans le cadre particulier de la programmation fonctionnelle. L’accent sera mis en particulier sur les avantages du typage statique et de la combinaison des styles de programmation objet et fonctionnel pour garantir des propriétés essentielles de sûreté.

Contenu

Les séances prendront la forme de "leçons" : les concepts seront présentés en cours puis illustrés directement à travers des exemples et des exercices de programmation.

- Valeurs et Objets
- Egalité et fonction de hachage
- Collections immutables
- Valeurs optionnelles
- Interfaces fonctionnelles
- Expressions lambda
- Types algébriques
- Filtrage et patron "visiteur"
- Concurrence et calculs asynchrones
- Flots et patron "map-reduce"


Supports de cours :

Plusieurs liens et supports de cours sont aussi disponibles ici.