Next: Héritage
Up: Du Statique vers le
Previous: Du Statique vers le
- Définition III :
- Attributs Statiques et Dynamiques
On considère maintenant que les valeurs des attributs peuvent être :
- soit statiques - voir la définition II ;
- soit dynamiques, i.e. les valeurs des attributs sont obtenues à la
suite de l'évaluation d'une fonction que l'on appelle straight-line
function.
- Définition III bis :
- Straight-line Functions
Une straight-line function est un mso qui est défini
récursivement par :
- une : obj.attribute ;
- un appel de : f(args(s)) ;
- les opérateurs fonctionnels suivants :
-
l'opérateur de Condition :
-
qui correspond à l'opérateur C :
cond ? trueValue : falseValue.
-
l'opérateur d'Itération :
-
qui permet de créer une liste d'expressions en substituant
dans l'ensemble Index par Expr les valeurs :
firstValue,
,lastValue
-
l'opérateur Séquentiel :
-
L'expression de la séquence est évaluée de la gauche vers la droite et
le résultat est la dernière expression.
-
l'opérateur Map :
-
La fonction Map applique l'opérateur à chaque élément de la liste.
-
les opérateurs usuelles :
-
`+`, `*`, `-`, `/`, `%`, `&`, `|`, `¡, `=`, `<>`, `<`,
`>`, `<=`, ...etc
Les straight-line functions peuvent être définies de manière :
- non-récursive : dans ce cas, ces fonctions ont comme propriétés :
- d'avoir un temps d'exécution prédictif constant. Ce temps
d'exécution est une fonction déterministe de la taille des
données en entrée.
- de ne pas produire de boucle infinie ni d'exception, comme celles
dûes à des erreurs de gestion de la mémoire.
- de pouvoir être implémentées par un morceau de code dédié
uniquement aux calculs, appelé aussi straight-line
program ou SLP, le code étant écrit en utilisant un langage
C-restreint.
- récursive : dans ce cas, ces fonctions ont comme propriétés :
- de correspondre à des fonctions de complexité quelconque ;
- de permettre un style de programmation "fonctionnelle" élégant.
De ces définitions, on peut faire les remarques suivantes :
- les objets symboliques ou mso n'ont pas besoin de
définir de "méthodes" comme c'est le cas dans l'approche objet classique.
Ce sont les attributs dynamiques qui feront office de méthodes à travers
le mécanisme d'évaluation des valeurs des attributs.
- les attributs dynamiques sont stockés dans une facette Eval.
- tous les objets peuvent être référencés, par convention,
par un attribut unique appelé Name. Cette étiquette est globale
pour un environnement donné ce qui implique que l'on devra utiliser
des règles de nommage automatiques.
- on peut aussi envisager, pour ces attributs dynamiques, une
implémentation sous forme de call-back C.
Next: Héritage
Up: Du Statique vers le
Previous: Du Statique vers le
Soraya Arias
Mon Aug 5 17:38:44 MET DST 1996