menu
  Home  ==>  articles  ==>  uml_design_patterns  ==>  gof_design_patterns   

Gof Design Patterns - John COLIBRI

           english text

1 - GOF

Cet article a uniquement pour but de fournir le code Delphi des Design Patterns du livre GOF. GOF est l'abréviation de Gang Of Four, qui est le surnom donné aux auteurs du livre qui a lancé les Design Patterns:

Erich GAMMA, Richard HELM, Ralph JOHNSON, John VLISSIDES
Design Patterns
    Elements of Reusable Object-Oriented Software
Addison Wesley - 1994 - ISBN 0-201-63361-2
 
http://www.amazon.fr
    recherchez "design patterns": c'est le premier présenté

2 - Le codage Delphi

Pour ces 23 programmes
  • nous avons essayé de respecter au mieux la syntaxe et les examples du livre
  • les programmes, comme ceux du livre, n'ont pas pour but de fournir des applications ayant une utilité immédiate. La plupart ne calculent et n'affichent rien (il aurait fallu que toutes les classes soient initialisées et que le code comporte des message d'affichage). Certaines classes sont même incomplètes (pas de constructeur, ou même de méthodes)
  • en revanche tous les programmes sont compilables:
    • il ne manque aucune définition ou aucune classe
    • la syntaxe Delphi est respectée
  • nous n'avons pas utilisé les attributs de visibilité (PUBLIC, PROTECTED, PRIVATE) bien que gof les utilisent. En revanche nous avons utilisé le préfix "_" pour désigner des membre ou méthodes PRIVATE ou PROTECTED.
  • notre code n'est pas "minimal": certaines classes ont un CONSTRUCTOR qui se contente d'appeler INHERITED: nous pourrions le supprimer
  • nous n'avons présenté ni schéma UML, ni définition, ni explication de chaque pattern: voyez le livre "Design Patterns - Gof"
  • le découpage de chaque exemple en une ou plusieurs UNITés Delphi est de notre choix: le livre ne spécifie pas de répartition par fichier. Nous aurions pu placer chaque pattern dans un seul et même fichier (un .DPR en mode CONSOLE, par exemple), mais souvent le découpage en UNITés fait mieux comprendre les dépendances entre les diverses classes.
  • le petit interprète d'expression utilisé dans les patterns "facade" et "interpreter" est une goforisation de notre article interprète d'expressions.
  • chaque fichier comporte le Copyright mentionnant le titre du livre, les auteurs et l'éditeur.
  • mentionnons aussi que vous trouverez sur le Web d'autres sites présentant le code des patterns Gof, plus ou moins adaptés par leurs auteurs, en C, CPP, Java ou autre C#. Les codes sont soit dans les pages .HTML, soit téléchargeables en .ZIP. Les codes présentés dans nos .ZIP ont été tapés directement à partir du texte du livre.
  • Gof a aussi publié "Design Patterns CD". Ce CD contient, semble-t-il:
    • le livre consultable électroniquement en hyper texte
    • des programmes en C++ et Smalltalk
    Voyez AMAZON et recherchez "VLISSIDES" ou un des trois autres auteurs.
Quel est alors finalement l'intérêt de nos .ZIP ?
  • ils permettent de suivre les explications du Gof sur des exemples codés en DELPHI.
  • ils peuvent servir de point de départ à des exemples DELPHI plus étoffés
Mais il est certain que nos .ZIP seuls, sans le livre, sont sans grand intérêt: achetez le livre et lisez le !

Quant aux conventions de codage:

  • nous avons respecté les catégories Gof (créationnel, structurel, comportemental)
  • le livre gof présente certaines classes comme des "classes abstraites". Les exemples du livre ne font aucune distinctions entre les classe abstraites et les classes d'implémentation. Nous avons donc suivi cette option. Toutefois nous avons ajouté le commentaire "// -- abstract" pour les classes décrites par gof comme abstraites. Et si ces classes ne comportent aucun code nous avons rendues toutes leurs méthodes VIRTUAL; ABSTRACT;. Mentionnons que nous aurions pu utiliser des INTERFACE COM, ce qui nous aurait éloigné du livre (dont les exemples sont en CPP, pas en Microsoft).
  • les CLASS FUNCTIONs n'ont été utilisées que pour "Singleton"
  • pour que chaque pattern soit autonome, certains fichiers sont dupliqués (par exemple U_MAZE.PAS). Aucune tentative de regroupement ou factorisation n'ont été tentés. Pour éviter de confondre les versions des fichiers répétés, nous les avons numérotés (MAZE_1.PAS pour abstract factory, MAZE_2 pour builder etc)
  • le livre utilise un appendice pour définir les listes d'objets et quelques types géométriques (le point etc). Nous avons utilisé à la place WINDOWS.PAS (qui contient tPoint), TYPES.PAS (qui contient la fonction Point) et CLASSES.PAS (qui contient tList)
  • pour chacun des 23 exemples
    • un répertoire "_xxx\" a été créé (xxx est l'un des 23 noms Gof: "factory", "visitor" etc)
    • chaque projet est nommé P_GOF_XXX.DPR U_GOF_XXX.PA U_GOF_XXX.DFM
    • le code des classes Gof est dans l'unité (ou les unités) placées dans le sous répertoire "GOF\UNITS\".
    Chaque projet est contenu dans un .ZIP contenant tous les fichiers nécessaires. Les fichiers sont indépendants de l'endroit où ils sont dézippés. Par conséquent:
    • téléchargez le .ZIP
    • placez-le dans le répertoire de votre choix. Par exemple C:\GOF\
    • décompactez le tout
    • chargez le .DPR
    • compilez si vous souhaitez vérifier que tout est complet

3 - Téléchargez les sources

La liste des patterns est la suivante:

Commentaires

Comme d'habitude:
  • nous vous remercions de nous signaler toute erreur, inexactitude ou problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
  • tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
  • plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
    Nom :
    E-mail :
    Commentaires * :
     

  • et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.
Created: jan-04. Last updated: mar-2020 - 250 articles, 620 .ZIP sources, 3303 figures
Contact : John COLIBRI - Tel: 01.42.83.69.36 / 06.87.88.23.91 - email:jcolibri@jcolibri.com
Copyright © J.Colibri   http://www.jcolibri.com - 2001 - 2020
Retour:  Home  Articles  Formations  Développement Delphi  Livres  Pascalissime  Liens  Download
l'Institut Pascal

John COLIBRI

+ Home
  + articles_avec_sources
    + bases_de_donnees
    + web_internet_sockets
    + services_web_
    + prog_objet_composants
    + office_com_automation
    + colibri_utilities
    + uml_design_patterns
      – gof_design_pattern
      – uml_avec_delphi
      – diagramme_de_classe
    + graphique
    + delphi
    + outils
    + firemonkey
    + vcl_rtl
    + colibri_helpers
    + colibri_skelettons
    + admin
  + formations
  + developpement_delphi
  + présentations
  + pascalissime
  + livres
  + entre_nous
  – télécharger

contacts
plan_du_site
– chercher :

RSS feed  
Blog