next up previous contents index
Next: Compilation séparée Up: No Title Previous: Files

Modularité

      

Une des exigences de l'ingénierie du logiciel est la production de composants assemblables et utilisables dans plusieurs réalisations, comme dans toute autre activité industrielle. La mise en \oe 
uvre de cette exigence dans un langage de programmation est permise par la notion de module . Plusieurs langages, notamment Modula 2 et Ada, ont été conçus autour de cette notion. L'idée est qu'un programme est formé à partir de plusieurs modules ; les objets définis dans chaque module sont classifiés, soit publics , soit privés ; les objets publics d'un module sont déclarés dans son interface et sont exportables vers les autres modules, lesquels déclarent dans leurs interfaces les objets qu'ils importent .

C ne dispose pas d'une vraie notion de module, mais permet de réaliser la distinction public/privé de façon très simple et rudimentaire. C++ dispose également de mécanismes de modularité qui sont basés sur la notion de classe ; Java offre à la fois des classes et des packages . Le langage disposant actuellement de la meilleure notion de module semble être Standard ML.

   

Rappelons qu'un nom local n'est connu qu'à l'intérieur de la fonction où il est défini. Par contre, un nom global est connu dans un fichier à partir du point où une déclaration de ce nom est faite : un nom global est donc a priori public. Pour le rendre privé, c'est-à-dire pour limiter l'accès à un objet global au fichier où il est défini, on fait précéder sa définition par le mot-clé static :

static int t[10];
static double f(double t[]) { ... }

En C, l'unité de modularité est ainsi le fichier . Un fichier comporte donc une suite de définitions d'objets ; celles qui sont désignées static sont privées, les autres sont publiques (donc exportables). Ce mécanisme impose une contrainte d'organisation : toutes les fonctions utilisant un même objet global privé (fonction, variable ou tableau) doivent figurer dans le même fichier.


next up previous contents index
Next: Compilation séparée Up: No Title Previous: Files
R.Lalement (Cermics)