52 lines
2.2 KiB
Plaintext
52 lines
2.2 KiB
Plaintext
|
La programmation modulaire
|
||
|
==========================
|
||
|
|
||
|
Structuration d'un programme
|
||
|
-----------------------------
|
||
|
|
||
|
La réalisation d'applications importantes oblige le programmeur ou l'équipe de
|
||
|
développement à se poser des questions d'organisation et de structuration.
|
||
|
Aujourd'hui, on dispose de deux grands modèles d'organisation dont les avantages et les
|
||
|
particularités sont distincts.
|
||
|
|
||
|
La modularité
|
||
|
~~~~~~~~~~~~~
|
||
|
|
||
|
Les données et les traitements sont regroupés au sein d'une même entité à deux
|
||
|
facettes : d'un côté le code proprement dit, de l'autre son interface. La
|
||
|
communication entre modules s'effectue via leur interface. La description d'un
|
||
|
type peut être masquée en n'apparaissant pas dans l'interface du module. Ces
|
||
|
types de données abstraits facilitent les modifications d'implantation à
|
||
|
l'intérieur d'un module sans affecter les autres modules qui s'en servent. De
|
||
|
plus, les modules peuvent être paramétrés par d'autres modules augmentant
|
||
|
ainsi leur réutilisabilité.
|
||
|
|
||
|
Le paradigme objet
|
||
|
~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
Les descriptions des traitements et des données sont regroupées dans des
|
||
|
entités appelées **classes**; un objet est une instance (valeur) d'une classe.
|
||
|
La communication entre objets est réalisée par envoi de message, l'objet
|
||
|
receveur détermine à l'exécution (liaison retardée) le traitement
|
||
|
correspondant au message. En cela, la programmation objet est dirigée par
|
||
|
les données. La structuration d'un programme provient des relations entre
|
||
|
classes, en particulier l'héritage permet de définir une classe par extension
|
||
|
d'une autre.
|
||
|
|
||
|
Comparaison entre les deux paradigmes
|
||
|
-------------------------------------
|
||
|
|
||
|
Il y a dualité entre ces deux modèles.
|
||
|
|
||
|
- On ne peut pas augmenter les composants d'un type dans un module (pas
|
||
|
d'extensibilité des données), mais on peut ajouter de nouveaux traitements
|
||
|
(extensibilité des traitements) sur ces données.
|
||
|
|
||
|
- En objet, on peut ajouter des sous-classes à une classe (extensibilité des
|
||
|
données) pour traiter des nouveaux cas, mais on ne peut pas ajouter de nouveaux
|
||
|
traitements visibles de la classe ancêtre (pas d'extensibilité des traitements).
|
||
|
|
||
|
**La combinaison des deux paradigmes offre de nouvelles extensibilités pour les
|
||
|
traitements et les données.**
|
||
|
|