Conception Objet

 

Resources sur le Web

Les fiches du cours

Les principes importants

L'OCP, Open-Closed Principle est le principe à bien comprendre pour des développements évolutifs. Le LSP et le DIP viennent compléter l'OCP en donnant un cadre plus précis permettant d'appliquer l'OCP. Le LSP permet d'expliciter la notion d'héritage et comment bien l'utiliser. Le DIP complète le LSP en expliquant pourquoi il est préférable d'associer des abstractions.

Patrons de conception

Un patron de conception est une solution particulière de conception, considérée comme bonne par la communauté, qui permet de résoudre un type de problème dans un contexte donné:

  • un patron de conception est donc un exemple qu'on adapte et à son propre problème
  • pour bien appliquer un patron de conception, il faut bien comprendre le type de problème qu'il permet de résoudre et son contexte.

Et attention !

Lisez ce billet de Stuart Halloway, les patrons de conception ne sont pas des recettes.

Tout d'abord, le langage de mise en oeuvre a son importance. En d'autres termes, certains patrons ont du sens en C++ ou Java alors qu'ils peuvent être superflus ou inappropriés en Smalltalk ou en Lisp.

Les patrons de conception ne sont pas des recettes à appliquer sans discernement. Ils sont précieux pour indiquer des point de vus plus généraux, illustrer des solutions considérées comme de bonne qualité.

Présentation des patrons

Un patron de conception est toujours présenté de la même manière et comprend quatre éléments essentiels:

  • Un nom : il est en choisi de manière de manière très précise; une fois qu'on a bien bien compris la conception, il est utilisé comme l'identifiant de cette conception pour soi même mais aussi pour communiquer avec ses collègues, il fait donc partie du vocabulaire métier que vous pouvez employer dans vos documentations;
  • Un problème : il est très important de comprendre le problème que le patron vise à résoudre et le contexte de ce problème pour éviter une mauvaise interprétation et des mauvaise utilisations; 
  • Une solution : elle décrit les éléments structuraux (entités, relations entre entités) et comportementaux (les responsabilités des entités) de la conception; cette solution doit être adapté à votre problème pour être utile dans vos développements;
  • Des conséquences : une solution n'est jamais bonne ou mauvaise mais a des conséquences positives et aussi négatives; il faut bien comprendre les conséquences pour juger de l'utilité et de l'adéquation d'un patron de conception et finalement décider de l'appliquer ou non.

​Voici une classification complète des patrons du GoF. Chaque nom de patron fondamental peut être cliqué pour accéder à une description de qualité sur le web:

  Objectif
Créateurs Structuraux Comportementaux
Portée Classe Factory Method Adapter Interpreter (243)
Template Method (325)
Instance Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge (151)
Composite (163)
Decorator
Facade (185)
Proxy (207)
Chain of Responsibility (223)
Command (233)
Iterator (257)
Mediator (273)
Memento (283)
Flyweight (195)
Observer
State (305)
Strategy
Visitor

Quelques fiches pour le cours

Ces fiches décrivent des exemples de problèmes et des solutions envisageables pour les résoudre. Les solutions sont critiquées en cours. L'idée est de converger vers l'application d'un patron connu. Pour une description complète et structurée des patrons, il est conseillé de consulter les ressources pédagogiques ou de cliquer sur le tableau de classification.

TP

Exemples pour Pharo

Le "one click" Pharo complet

Package Machine a cafe 

Package Fichier/Dossier

Package SimulationSatelliteBalise - version pour débuter