Identification PIC

Pseudo
Pass

Classes ZC

PIC O.E. 0.1

Méthode de programmation avec zcobj — Document — 05/06/2004 15:59:33

Concepts généraux


Lors de la réalisation d'un logiciel, il est possible d'avoir différentes approches.
Cependant on a toujours une décomposition du logiciels en sous éléments (modules, classes, procédures, sections ..).
Les questions qu'il faut se poser sont:
  • Quels éléments peut on décomposer ? quels sont les éléments de base ? (fonctionnalités, modules..)
  • Comment construire le logiciel à partir d'éléments (certains existant, certains non)

  • Pour la première question, il n'y a pas de réponse stricte mais on peut faire quelque recommandations:
  • Si un élément semble complexe (à créer, à gérer ..) alors il est probable qu'il faille le décomposer.
  • Les éléments bien définis (bien nommés, réprésentant un concept maîtrisé) sont préférables à des éléments aux concepts obscurs: avant d'avancer de nouveaux concepts il faut vérifier qu'ils sont utiles (non doublons) et pratiques (compréhensibles) et qu'il apportent un vrai plus.
  • Les éléments doivent être réutilisables, si un élément est spécialisé (non réutilisable tel quel) il faut en isoler autant que possible la partie spécialisée.

  • Quand il s'agit d'utiliser les éléments pour un faire une application complète il y a généralement 2 approches :
  • la mauvaise qui consiste à concevoir les éléments, puis essayer de les assembler (méthode puzzle ou lego) en créant au besoin de quoi faire tenir le tout,
  • la bonne qui consiste à mettre en place une architecture (squelette) de l'application ainsi qu'à définir des règles d'interaction des éléments, puis de greffer les éléments dans cette structure.

  • Structurer une application avec zcobj


    zcobj a hérité de zcxml la structure en arborescence inspiré du XML:
    Le programme est organisé en arbre, la racine est la classe principale du programme, elle assure le fonctionnement général du programme (boucle principale ..).
    Chaque branche est une classe (héritant de zObj) gérant un aspect de plus en plus précis du programme : par exemple "main"/"connexions réseau"/"connexions de type FTP"/ ... ou encore "main"/"configuration"/"configuration des utilisateurs"/...

    Cette méthode à pour avantage de permettre un rangement naturel des classes et de permettre différents traitement sur toute une branche: pour sauvegarder la configuration il suffit de sauvegarder toute la branche configuration (format XML), la suppression d'une classe assure la suppression de toutes ses sous-branches etc..

    zcobj ajoute de nouveaux concepts à l'architecture par arbre simple, en particulier le système de liens entre branches :
    Il est souvent utile de lier deux classes situées dans des branches éloignées (ex: "configuration des connexions" et "connexions actives"), pour cela zcobj propose un mécanisme qui permet de lier ces branches. (un lien est coupé automatiquement si l' une des classes est supprimée).

    Pour simplifier la création d'une classe principal, un programme basé sur zcobj peut utilisé zcmain. Cette classe gère une instance de zcselect (gestion de sockets et timers) et s'occupe d'une liste d'objet à effacer (un objet ne pouvant pas s'effacer lui-même).
    La fonction Loop qui gère ces fonctionnalités, constitue une base pour une boucle principale de programme (celle-ci peut effectuer d'autres travaux mais dans de nombreux cas on peut se limiter à cette fonction).