Topic outline

  • Fiche descriptive du cours

    Lien BBB pour le cours :

    https://bbb.ensicaen.fr/b/clo-nhm-2kd

    Fiche de description du cours : Cours 2I1AC3

    La programmation de logiciels avec un langage à objet va au-delà du simple codage avec des classes. Cela introduit une nouvelle façon d'analyser et de concevoir les logiciels.

    L'objectif pédagogique de ce cours est une sensibilisation aux paradigmes avancés de l'analyse et de la conception par objets qui s'appuie sur un ensemble de principes, de règles et de patrons de conception (design patterns). Cela passe aussi par la spécification de quelques principes d'organisation du code en paquets.

    Ce cours aborde les points suivants :

    • Les principes SOLID de conception orientée objet.
    • La réutilisabilité en conception logicielle.
    • Les patrons de conception de la "bande des quatre".
    • Les patrons d'architecture.
    • L'organisation du code en paquets.
    • La programmation orientée aspect.

  • Syllabus

    Séance 1 : Chapitre 1 : Introduction
    Séance 2 : Chapitre 2 : Principes avancés de conception objet (diapo 28 avant la réutilisation)
    Séance 3 : Chapitre 2 : Réutilisation + Chapitre 3 : GOF Design Pattern (Adaptateur, Fabrique, Fabrique abstraite)
    Séance 4 : Chapitre 3 : GOF Design Pattern (Composite, Itérateur, Visiteur)
    Séance 5 : Chapitre 3 : GOF Design Pattern (Décorateur, Procuration, Observateur)
    Séance 6 : Chapitre 4 : Patrons d'architecture
    Séance 7 : Chapitre 3 : GOF Design Pattern (Commande, Stratégie, État, Buiilder)
    Séance 8 : Chapitre 3 :  Résumé GOF Design Pattern
    Séance 9 : Chapitre 5 : Organisation en paquets
  • Supports de cours

    Polycopié  Diapositives Objectif du chapitre
    Chapitre 1. Limites du paradigme objet pour la conception Diapositives Se rendre compte que les concepts du paradigme de conception orientée objet ne sont pas suffisants pour produire des logiciels robustes, maintenables et réutilisables.
    Chapitre 2. Principes avancés de conception objet Diapositives
    Savoir produire des logiciels robustes, maintenables et réutilisables en s'appuyant sur des :
    - principes de conception (SOLID),
    - règles de conception,
    - patrons de conception.
    Chapitre 3. Patrons de conception de la bande des quatre Diapositives

    Conclusion du chapitre
    Connaître le détail des 23 patrons de conception de la bande des quatre "Gang of Four" et savoir les utiliser dans ses propres développements.
    Chapitre 4. Patrons d'architecture Diapositives Connaître les patrons d'architecture de base.
    Chapitre 5. Principes de conception en paquets Diapositives
    Savoir organiser les sources d'un projet en paquets afin de favoriser le développement, la maintenance et la réutilisabilité de projet.
    Annexe. Programmation orientée aspect Diapositives Avoir connaissance du paradigme de programmation orientée aspect qui s'inscrit au-dessus du paradigme de programmation orientée objet.

  • Travaux Dirigés

  • Coding dojo

    • Des petits exercices pour pratiquer l'implémentation en Java de patrons de conception.
    • Un problème un peu plus complet qui mixte plusieurs patrons de conception.
    Ces exercices peuvent être réalisés à plusieurs sous la forme de randori.

    Modalités :
    1. Téléchargez l'archive zip de l'exercice s'il existe
    2. Ouvrez le dans Intellij IDEA (ou VSCode) ou créez un nouveau projet quand il n'y a pas d'archive zip.
    3. Répondez aux différents exercices de l'énoncé.
  • Travaux Pratiques de Git

  • Travaux Pratiques : ressources pour le projet


  • Références bibliographiques

    • E. Gamma, R. Helm, R. Johnson, J. Vlissides. "Design Patterns Catalogue de modèles de conception réutilisables", Addison-Wesley, 1995/1999. (Le livre référence)
    • A. Shalloway, J. R. Trott. "Design Patterns par la pratique", 2002. (Les patrons abordés par l'aspect pratique).
    • F. Bushmann, R. Meunier, H. Rohnert, M. Stal, "Pattern-oriented software architecture: a system of patterns", Wiley & Sons, 1996.
    • B. Bates, E. Freeman, E. Freeman, K. Sierra, "Head First Design Patterns", O'Reilly Media, 2004. (Très didactique)
    • Robert Martin, "Agile software development: principles, patterns, and practices.", Pearson Education, 2002. (Une référence dans le domaine)
    • Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy Stafford, "Patterns of Enterprise Application Architecture.", Addison-Wesley, 2002. (Une autre référence dans le domaine)
  • Sites Web