“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 226 — #236
i
i
i
i
i
i
i
i
226
5
• La programmation avec état explicite
peut faire un effet de bord, c’est-à-dire qu’elle modifie un état qui est visible par le
reste du programme. Les effets de bord compliquent énormément le raisonnement sur
un programme. Introduire l’encapsulation est une manière de retrouver un raisonnement simple parce qu’avec l’encapsulation, les systèmes à état peuvent être conçus de
façon à ce qu’une propriété bien définie, qui s’appelle invariant, soit toujours vraie
quand on voit le système de l’extérieur. Le raisonnement sur le système devient de
nouveau indépendant du raisonnement sur son environnement. Nous retrouvons en
partie une des propriétés attirantes de la programmation déclarative.
Même avec les invariants, la programmation avec état n’est pas aussi simple que
la programmation déclarative. Nous trouvons qu’une bonne règle empirique pour les
systèmes complexes est de maintenir un maximum de composants déclaratifs. L’état
ne doit pas être « étalé » sur beaucoup de composants. Il doit être concentré dans
quelques composants bien choisis.
5.2.2 La programmation par composants
Les trois propriétés, l’encapsulation, la compositionnalité et l’instanciation, définissent
la programmation par composants (voir section 5.6). Un composant spécifie un fragment de programme avec un intérieur et un extérieur et une interface bien définie entre
les deux. L’intérieur est caché de l’extérieur, sauf pour ce qui est permis par l’interface.
Les composants peuvent être composés pour faire de nouveaux composants. Un composant peut être instancié, ce qui crée une nouvelle instance dont les liens sont édités
dans l’environnement du système. Les composants sont un concept omniprésent. Nous
les avons déjà vus sous plusieurs apparences :
– Les procédures (l’abstraction procédurale). Nous avons vu un premier exemple
de composants dans le modèle de calcul déclaratif. Le composant est appelé
une définition de procédure et son instance, une invocation de procédure. L’abstraction procédurale est à la base des modèles plus avancés de composants qui
viennent après.
– Les foncteurs (les unités de compilation). Un genre de composant particulièrement utile est une unité de compilation, qui peut être compilée indépendamment
des autres composants. Ces composants sont appelés foncteurs et leurs instances,
modules.
– Les objets à flots. Un système avec des entités indépendantes qui interagissent par
des flots peut être vu comme un graphe de composants concurrents qui s’envoient
des messages.
Dans la programmation par composants, le moyen naturel d’étendre un composant
est la composition : construire un nouveau composant qui contient l’ancien. Le nouveau composant offre une nouvelle fonctionnalité et utilise l’ancien composant pour
l’implémenter.
Précédent

- 241/370

Suivant