NFP121

Programmation Avancée
(6 crédits)

09/2021-01/2022.

FOD/Nationale.



warning Avertissements

Pour suivre avec profit cette UE il faut suivre régulièrement le cours (2h + 1h de compléments, présentation du TP de la semaine), un TD (2h) et rendre régulièrement des travaux hebdomadaires (TP).

Les documents associés aux cours (au format PDF) et podcast sont accessibles sur le net au fur et à mesure du déroulement du cours (cf. ci-dessous).

build TD et TP

L'activité de programmation étant primordiale dans ce cours, les TD seront des TP/TD comportant :

  • subdirectory_arrow_right une partie de spécification d'un exercice (en séance au cnam)
  • subdirectory_arrow_right une partie de réalisation d'un exercice (sur machine "à la maison").

Le travail réalisé sera rendu chaque semaine sur le web sous deux formes:

  • subdirectory_arrow_rightun projet Java qui sera testé automatiquement avec JNEWS
  • subdirectory_arrow_rightune page html de compte rendu du travail réalisé.

Pour participer à ces TP il faut d'abord vous identifier par votre nom (en CAPITALES de préférence) et votre numéro d'inscription d'auditeur CNAM (qui vous servira de password, matricule,
votre nom vous identifiera pour les points de bonus), ou à défaut un mot de passe de votre choix.

subdirectory_arrow_rightN'attendez pas l'inscription officielle pour vous inscrire aux outils et commencer les TPs

Les TP seront réalisés avec BlueJ, dont la dernière version inclut le JDK.

event_available Infos pratiques
Cours Cours les mardis, à partir de 18h15
Emploi du temps CNAM

Visio Teams ici
Exercices dirigés Exercices dirigés les vendredis
18h30-20h30

Visio Teams ici
Travaux pratiques Plus d'informations sur la page
Travaux pratiques

subdirectory_arrow_rightN'attendez pas l'inscription officielle pour vous inscrire aux outils et commencer les TPs

menu_book Ressources

subdirectory_arrow_rightExemples utilisés en exercices dirigés, pendant et après le cours, corrections partielles de certains TP

subdirectory_arrow_right Annales


school Programme NFP121
2021 - 2022, plan prévisionnel
  1. 28/09/21 Introduction, vocable, les essentiels
    Classes, instances,
    visibilité, héritage,
    spécialisation, surcharge
  2. 05/10/21 Une Classe et les aspects impératifs du langage
    Classes abstraites, interfaces, classes internes, classes anonymes,
    méthodes, passage de paramètres,
    instructions, exceptions, assertions
  3. 12/10/21 Interfaces, plusieurs Classes, introduction au "Design Pattern"
    Héritage, liaison dynamique, paquetages,
    Design Pattern : les fondamentaux, les patrons Adaptateur et Procuration
  4. 19/10/21 Quelques Patrons et programmation événementielle
    Les patrons Observateur/Observé, Stratégie, présentation du Composite
    Modèle Vue Contrôleur, MVC
  5. 19/10/21 Swing (uniquement les diapositives 56 à 72)
    IHM, MVC
  6. 26/10/21 Collections
    Les Collections : traitement de manière uniforme de tous les agrégats d'éléments
    Quelques patrons : Itérateur, Template Méthode, Fabrique Méthode et Fabrique abstraite
  7. 02/11/21 Synthèse des premiers cours et Généricité
    Une architecture du tp3 question2 inspirée des collections et une revue des patrons Adaptateur, Template Méthode, Itérateur, Proxy, Stratégie
    Généricité : vers un typage plus rigoureux.
  8. 9/11/21 Structures de données et Patterns de conception
    Les patrons : Composite, Visiteur, Interpréteur
  9. 16/11/21 Patterns de conception suite
    Un assemblage de patrons pour une application: Memento, Command, Template Method, Composite, Visiteur...
  10. 23/11/21 Introspection et réflexivité en Java
    La classe Class, introduction aux Java Beans, l'outil BeanBox, les patrons Visiteur, Stratégie et Procuration avec introspection
  11. 30/11/21 Injection de dépendances
    A la recherche du couplage faible, les patrons Inversion de contrôle et Injection de dépendances (cf. Martin Fowler)
  12. 07/12/21 Patterns de conception suite
    Le patron Décorateur : Pré,Post assertions, invariant de classe et le Patron Chaîne de responsabilités
  13. 14/12/21 XML et JAVA
    Le patron Décorateur, persistance en Java, en XML avec SAX et/ou JDOM, le patron DAO
  14. 04/01/22 Injection de patrons de conception.
    Quelques patrons de conception et un outil d'injection des dépendances.
    Notion de variabilité du logiciel.
  15. 11/01/22 Synthèse et conclusion
    En détail quelques énoncés d'examen cf. les annales
    Février2018,    Janvier2019,    Février2020,    Février2021
    Février2021, Avril2021 et Février2020 se présentent comme un TP et ses tests JNEWS.

trending_up Aller plus loin...
Une suite Design pattern/Java possible au Cnam :
NSY102 Conception de logiciels intranet : patrons et canevas FOD
GLG203 Architectures Logicielles Java(1) & GLG204 Architectures Logicielles Java(2) HTT
NSY208 Architecture, Patterns, et Intégration : systèmes embarqués et mobiles en Java et Android (1) & NSY209 Architecture, Patterns, et Intégration : systèmes embarqués et mobiles en Java et Android (2) FOD

Un certificat de Compétences Intégrateur d'applications mobiles est au catalogue pour lequel les 2 premières UEs sur 6 à acquérir sont NFP121 et NSY102...

folder_open Archives
2019 - 2020
  1. 24/09/19 Introduction, vocable, les essentiels
    Classes, instances,
    visibilité, héritage,
    spécialisation, surcharge
  2. 01/10/19 Une Classe et les aspects impératifs du langage
    Classes abstraites, interfaces, classes internes, classes anonymes,
    méthodes, passage de paramètres,
    instructions, exceptions, assertions
  3. 08/10/19 Interfaces, plusieurs Classes, introduction au "Design Pattern"
    Héritage, liaison dynamique, paquetages,
    Design Pattern : les fondamentaux, les patrons Adaptateur et Procuration
  4. 15/10/19 Quelques Patrons et programmation événementielle
    Les patrons Observateur/Observé, Stratégie, présentation du Composite
    Modèle Vue Contrôleur, MVC
  5. 15/10/19 Swing (uniquement les diapositives 56 à 72)
    IHM, JApplet, MVC
  6. 22/10/19 Collections
    Les Collections : traitement de manière uniforme de tous les agrégats d'éléments
    Quelques patrons : Itérateur, Template Méthode, Fabrique Méthode et Fabrique abstraite
  7. 05/11/19 Synthèse des premiers cours et Généricité
    Une architecture du tp3 question2 inspirée des collections et une revue des patrons Adaptateur, Template Méthode, Itérateur, Proxy, Stratégie
    Généricité : vers un typage plus rigoureux.
  8. 12/11/19 Structures de données et Patterns de conception
    Les patrons : Composite, Visiteur, Interpréteur
  9. 19/11/19 Patterns de conception suite
    Un assemblage de patrons pour une application: Memento, Command, Template Method, Composite, Visiteur...
  10. 26/11/19 Introspection et réflexivité en Java
    La classe Class, introduction aux Java Beans, l'outil BeanBox, les patrons Visiteur et Procuration avec introspection
  11. 03/12/19 Injection de dépendances
    A la recherche du couplage faible, les patrons Inversion de contrôle et Injection de dépendances (cf. Martin Fowler)
  12. 10/12/19 Patterns de conception suite
    Le patron Décorateur : Pré,Post assertions, invariant de classe
  13. 17/12/19 XML et JAVA
    Le patron Décorateur, persistance en Java, en XML avec SAX et/ou JDOM, le patron DAO
  14. 17/12/19 Synthèse au 4/5 de l'unité
    Les patrons, l'injection de dépendances ... et en détail l'examen de février 2016
  15. 07/01/20 Injection de dépendances et Design Pattern
    Séparation configuration/utilisation, notion de variabilité du logiciel, patrons Décorateur, Commande, Stratégie ...
  16. 14/01/20 Synthèse et conclusion
2013 - 2014
  1. 21/01/2014 Programmation par Contrats ou séance de révisions (la dernière séance)
  2. xx/xx/13 La machine Virtuelle Java
    Architecture, jeu d'instructions, WhileL : le couple Composite/Visiteur appliqué à la génération de code
  3. xx/xx/13 Programmation Concurrente
    La classe Thread, l'instruction synchronized
  4. xx/xx/13 Programmation Concurrente
    java.util.concurrent en cours d'élaboration
  5. xx/xx/13 Séance de révisions, dernière séance
2012 - 2013
  1. 15/01/2013 Programmation Concurrente
    Les variables conditions, les méthodes wait et notify, le patron Singleton revisité
  2. 22/01/13 Programmation par contrats
  3. xx/xx/13 Expressions Régulières
    La méthode split, la classe Scanner, les opérateurs avides, réticents et possessifs
  4. xx/xx/13 Révisions en Web Conférence
    Parcours des patrons vus en cours et/ou en ED, échantillon de questions ...
2010 - 2012
  1. Programmation Concurrente
    Serveurs au protocole TCP
  2. Programmation par contrats
    Pré et post assertions, héritage, usage de Jass et jass-modern (annotations), syntaxe JML
  3. OCL
    Tranparents : 1 par feuille, 2 par feuille
  4. Expressions Régulières
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
  5. JVM (Java Virtual Machine)
  6. Révisions
  7. MVC, IHM et swing
    MVC
    IHM Swing, JApplet
2009 - 2010
  1. Structure des applications objets avec JAVA et UML
    Transparents : 1/page , 2/page , 3/page
    packages, classes, instances,
    visibilité, héritage,
    spécialisation, surcharge
  2. Types primitifs, aspects impératifs du langage
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille, pas de nouveaux exercices proposés (cf. 1)
    Sémantique de l'égalité,
    méthodes, passage de paramètres,
    instructions, exceptions
  3. Assert, Interfaces, Types et Classes
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
    Assert,
    introduction aux structures de données récursives,
    classes abstraites, interfaces, classes internes, classes anonymes.
  4. Programmation évènementielle
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
    Pattern Observateur/Observé
    IHM Awt et Swing,
    application des classes internes, anonymes et des adapteurs
  5. Généricité et Collections
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
    Un petit QUIZ sur la généricité JAVA depuis 1.5
    Les Collections : traiter de manière uniforme tous les agrégats d'éléments
    Généricité : typage plus rigoureux
  6. Structures de données et Patterns de conception
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
    Les patterns : composite, itérateur, visiteur, ...
  7. Introspection et réflexivité
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
    Typage dynamique, Atelier Java Beans
  8. Programmation des Entrées/Sorties
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
    Les Apis I/O et le Pattern Décorateur
  9. XML et JAVA
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
    SAX et JDOM
  10. JVM (Java Virtual Machine)
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
  11. Programmation concurrente
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille
  12. OCL
    Tranparents : 1 par feuille, 2 par feuille
  13. Expressions Régulières
    Tranparents : 1 par feuille, 2 par feuille, 3 par feuille, 4 par feuille, 6 par feuille