“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 233 — #243
i
i
i
i
i
i
i
i
5.4 L’abstraction de données
233
deux axes supplémentaires, l’agrégation et l’état explicite. L’agrégation est un concept
fondamental qui a été observé en 1975 par John Reynolds [16, 34, 78]. Chaque axe a
deux choix, ce qui donne huit manières en tout d’organiser une abstraction de données.
Certaines sont rarement utilisées. D’autres sont plus populaires. Mais chacune présente
des avantages et des inconvénients. Nous expliquerons brièvement chaque axe avec
quelques exemples dans lesquels nous choisirons à chaque fois la plus appropriée des
huit manières.
L’ouverture et la sécurité
Une abstraction de données est sécurisée si le langage fait respecter son encapsulation.
Sinon elle est ouverte. Pour une abstraction ouverte, c’est la discipline du programmeur
qui doit faire respecter l’encapsulation. À proprement parler, si l’encapsulation n’est
pas imposée par le langage, l’abstraction de données ne sera plus une abstraction.
Nous l’appellerons toujours une abstraction parce qu’elle pourra toujours être utilisée
comme telle. La seule différence sera le responsable de l’encapsulation : le langage
ou le programmeur.
L’agrégation
Une abstraction de données est non agrégée si elle définit deux sortes d’entités, appelées valeurs et opérations. Les valeurs sont passées comme arguments aux opérations
et renvoyées comme résultats. Une abstraction de données non agrégée s’appelle
généralement un type abstrait de données ou ADT. Elle peut être sécurisée avec
une « clé ». La clé est une autorisation pour accéder aux données internes d’une
valeur abstraite (et la modifier si la valeur a un état). Toutes les opérations de l’ADT
connaissent la clé. Le reste du programme ne la connaît pas. La clé peut être un nom,
qui est une constante infalsifiable (voir la documentation de Mozart [23]).
Le langage le mieux connu basé sur les ADT est probablement CLU, conçu et
implémenté dans les années 1970 par Barbara Liskov et ses étudiants [61]. CLU a
le mérite d’être le premier langage implémenté avec un soutien linguistique pour les
ADT.
Une abstraction de données est agrégée si elle définit une seule sorte d’entité,
appelée agrégat ou objet, qui combine les notions de valeur et d’opération. Une
abstraction de données agrégée est parfois appelée abstraction de données procédurale
ou PDA (« Procedural Data Abstraction »). Pour faire une opération, on appelle
l’objet en l’informant de l’opération qu’il doit faire. C’est souvent appelé « envoyer
un message à l’objet », mais l’appel est synchrone comme l’appel d’une procédure. Il
retourne quand l’opération est complètement terminée.
Le style objet est devenu très populaire car il présente d’importants avantages par
rapport à la modularité et à la structure de programme, grâce à la facilité avec laquelle
il soutient le polymorphisme et l’héritage. Le polymorphisme est expliqué plus loin.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 248/370

Suivant