Présentation du design
- Rappel des notions fondamentales de la programmation OO et d'UML. Les diagrammes de la notation UML. Ses apports pour la conception.
- Les enjeux de la conception.
- La réutilisation par l'héritage.
Principes fondamentaux en conception objet
- La stratégie d'évolution avec le principe d'ouverture/fermeture (OCP).
- Le principe de substitution de Liskov (LSP).
- Le concept de polymorphisme.
- L'impact de la conception objet sur le cycle de vie des projets.
Travaux pratiques
Illustration du découpage des responsabilités entre les classes.
Principes d'organisation en packages
- Le package comme unité de conception avec les principes d'équivalence livraison/réutilisation (REP) et de réutilisation commune (CRP).
- Le découpage des packages grâce au principe de fermeture commune (CCP).
- L'organisation entre packages : principes des dépendances acycliques (ADP) et de relation dépendance/stabilité (SDP).
Travaux pratiques
Construction et hiérarchisation des packages.
Principes de construction des classes
- La gestion raisonnée des dépendances avec l'inversion de dépendance (DIP).
- La réduction de la complexité apparente par la séparation des interfaces (ISP).
- La répartition des responsabilités avec le principe de GRASP.
Principes des design patterns
- Les principes techniques de la conception d'une application objet.
- Origine et portée des patterns.
- Les avantages et les limites des design patterns.
- Résoudre des problèmes récurrents et assurer la pérennité des développements.
Les patterns fondateurs de Gamma et Gof
- Le catalogue de patterns de la "bande des quatre".
- Les objectifs et les avantages.
- Isoler la création des objets de leur utilisation.
- Affiner l'affectation des responsabilités grâce aux patterns comportementaux.
- Améliorer la structuration des classes.
Travaux pratiques
Exemple de conception et programmation avec des patterns GoF.