Vous êtes sur la page 1sur 2

Types de données abstraites

I. Introduction
Dans les chapitres précédents, nous nous sommes penchés sur les méthodes de calcul et le rôle
des procédures dans la construction des programmes.
Nous avons vu comment employer des données primitives (les nombres) et des opérateurs
primitifs (les opérateurs arithmétiques) et comment combiner des procédures pour former de
nouvelles procédures par composition, branchements conditionnels et emploi de paramètres.
Nous avons vu qu’une procédure peut être considérée comme un modèle local décrivant
l’évolution d’un processus et avons classé, étudié et effectué des analyses algorithmiques
simples de quelques modèles courant de processus incarnés par des procédures. Nous avons vu
que les procédures d’ordre supérieur élèvent le niveau de notre langage en nous rendant capable
de manipuler et, par là-même, de raisonner en termes de méthodes générales de calcul (ex :
calcul de l’intégrale d’une fonction).
Nous allons à présent nous intéresser à l’étude de données plus complexes. La plupart des
programmes opéraient sur des données numériques (ou autres) simples. Or les données simples
ne sont pas suffisantes pour de nombreux problèmes que nous voudrions traiter par ordinateur.
Les programmes sont généralement conçus pour modéliser des phénomènes complexes, et le
plus souvent, nous devons construire des objets de calculs composés de plusieurs parties afin
de modéliser des phénomènes du monde matériel ayant plusieurs aspects. Aussi, tandis que
notre objectif, dans les précédentes parties, était la construction d’abstractions en combinant
des procédures pour former des programmes composés, nous envisageons dans ce qui suit, un
autre point clé du langage de programmation : les ressources qu’il offre pour construire des
modèles abstraits en combinant des objets-données pour former des données composées.
Pourquoi composer des données dans un langage de programmation ?
Pour les mêmes raisons qui nous ont conduits à composer des procédures : élever le niveau des
concepts qui nous permettent de concevoir nos programmes, accroître la modularité de nos
modèles et augmenter le pouvoir d’expression de notre langage. De même que la possibilité de
définir des procédures nous permet de traiter des processus à un niveau plus élevé que celui des
opérateurs primitifs du langage, de même la possibilité de construire des objets-données
composés nous permet de traiter des données à un niveau plus élevé que celui des objets-donnée
primitifs du langage.
II. Abstraction des données et des procédures :
Considérons la conception d’un système permettant les calculs arithmétiques avec les nombres
rationnels. Nous pourrions imaginer un opérateur rationnel +rat qui prenne deux nombres
rationnels comme arguments et calcule leur somme.
Décomposé en données plus simples, un nombre rationnel peut être vu comme un couple
d’entiers : un numérateur et un dénominateur. Ainsi nous pourrions concevoir un programme
dans lequel chaque nombre rationnel serait représenté par deux entiers (un numérateur et un
dénominateur) et où +rat serait réalisé par deux procédures (l’une produisant le numérateur de
la somme et l’autre produisant le dénominateur).
Mais ceci serait maladroit car il nous faudrait garder en mémoire quels numérateurs sont
associés à quels dénominateurs.
Dans un système devant effectuer de nombreuses opérations sur un grand nombre de rationnels,
la multiplication de ces détails encombrerait substantiellement le programme, sans parler des
conséquences fâcheuses qu’elle aurait sur notre compréhension.
Il serait préférable de « coller ensemble » un numérateur et un dénominateur pour former un
couple – un objet-donnée composé – que nos programmes pourraient manipuler d’une manière
compatible avec notre idée de nombre rationnel, comme une seule unité conceptuelle.
L’utilisation de données composées nous permet aussi d’accroître la modularité de nos
programmes. Si nous pouvons manipuler les nombres rationnels directement comme des objets
à part entière, alors nous pouvons séparer la partie de notre programme qui traite des nombres
rationnels eux-mêmes, de la façon dont les nombres rationnels sont représentés par des couples
d’entiers ; La technique générale qui consiste à séparer les parties d’un programme définissant
la représentation des objets-donnée de celle exprimant leurs utilisations est une méthode
puissante de construction appelée abstraction des données.

Vous aimerez peut-être aussi