L'encapsulation

--ooOoo--

"L'encapsulation", qu'es acò :

En informatique, l'encapsulation est la technique qui consiste à exécuter, dans un programme, des modules externes déjà écrits et prêts à l'emploi pour en exploiter les résultats.

          C'est une caractéristique de l'exécution orientée objet par analogie à la programmation orientée objet mise à disposition, au niveau de l'écriture des programmes, par certains compilateurs comme le C++ par exemple.

          Pour illustrer cette définition et avant de décrire le développement, voici, ci-après, une petite illustration du dernier jet de la réponse que j'ai donnée au professeur de mathématiques. Il est incomplet et j'attends de voir si cette démarche répond à ses besoins pour septembre 2009. Le programme encapsulé qui affiche cette image s'appelle "lissajous.f" (source ici) . Il est écrit en Fortran mais tout langage peut être utilisé. Seule contrainte pour la communication avec le programme encapsuleur : n'utiliser que les entrées et sorties standard "stdin" et "stdout".

          Lancé directement dans la console, le programme "lissajous.f" affichera toutes les commandes telles qu'elles ont été codées dans les ordres READ et WRITE comme le montre l'image ci-dessous pour les compilations, les constructions des exécutables et les sorties des tests d'encapsulation qui sont décrits plus précisément dans la page Les "pseudo-terminaux".

          Très nombreuses sont celles qui correspondent aux deux tracés de la courbe (clé "$trace:"). Cette sortie standard a toutes les caractéristiques d'une "liste-image" analogue à celles que sortent les logiciels de dessins dans leurs propres codages ".dxf", ".hpgl", ".plt", "cgm", etc... Je ne me suis pas appuyer sur l'un d'entre eux car ils travaillent directement sur le support, le graphique et à un seul niveau. J'ai préféré introduire la notion d'"image logique" pour faciliter la composition.

          Maintenant, le programme "lissajous" exécuté sous le contrôle de la commande "lpgrp" produit l'image ci-dessous par interprétation des sorties préfixées du caractère "$" de la liste-image ci-dessus en lançant la commande :

--> lpgrp lissajous

          Ce programme "lissajous.f" aurait pu être écrit par un élève dans le langage de son choix. Il calcule les points d'une courbe de Lissajous dont il saisit les paramètres sur le clavier. Il n'y a que des "READ (*,....) ...." et des "WRITE (*,...) ..." où le caractère "*" indique l'entrée ou la sortie standard (stdin et stdout).
           C'est le programme encapsulé. 

          L'image qui suit est le compte rendu du traitement effectué par la commande encapsulatrice "lpgrp". Cette manière simplifiée et condensée de traiter le graphique a pour but de donner à l'élève la possibilité d'acquérir rapidement des notions dans l'usage de la technique graphique et d'effectuer par là même des dessins sans avoir recours à une formation spécifique sur les bibliothèques fournies avec le système, hors programme scolaire.

          Bien sûr, une étape intermédiaire lui avait été proposée. Elle ne comportait pas l'aspect interactif de la console car, j'étais alors en train d'étudier les "curses" du système avant d'expérimenter les miennes "jprs".

          Pour pouvoir intercepter les entrées et les sorties standard du programme encapsulé, le programme encapsuleur fait appel à un outil système Unix :

Les "pseudo-terminaux"

--ooOoo--