Tout ensemble de connexions doit obéir aux trois contraintes suivantes:
entrée donné. Ceci implique notamment que les connexions multiples sur
un slot d'entrée sont interdits, ainsi que les connexions redondantes.
Hormis les contraintes énumérés précédemment, toute connexion est autorisée indépendamment des types des slots. Cependant, notre modèle de connexion est typé et différencie les connexions compatibles des connexions incompatibles.
La figure A.2 représente le graphe de types que nous utilisons
dans notre implémentation en Java, avec les relations de sous-typage. Les
différents types de slots sont les int (nombres entiers), boolean
(booléens), double (nombres flottants), string (chaînes de
caractères), et object (objets). À cela s'ajoutent les types spéciaux
any (qui représente tous les types possibles) et null (qui ne
représente aucun type). Ce graphe, comportant notamment le type object,
est adapté à un langage à objets tel que Java.
Notre modèle ne nécessite pas la définition explicite d'un graphe de types. Au
lieu de cela, il suppose qu'il existe un graphe de types avec à son sommet le
type any, et à sa base le type null, et définit sur ce graphe les
relations et opérations suivantes:
Nous dirons que
est un sous-type de
(relation notée
) ssi
est successeur inclusif de
dans le graphe, c'est-à-dire ssi
ou
est successeur direct
ou indirect de
. De même, nous nommerons union de plusieurs
types leur premier prédécesseur inclusif commun dans le graphe, et
intersection de plusieurs types leur premier successeur
inclusif commun dans ce même graphe. Les opérations d'union et d'intersection
seront respectivement notées
et
.
Nous nommons attribut dérivé un attribut d'un objet dont la valeur est
fonction de celle des autres attributs de cet objet ou de ses objets
accessibles (objets-fils ou objets référencés). Ils seront précédés d'un
triangle
. Ces attributs n'apportent
pas d'information supplémentaire mais peuvent néanmoins servir à introduire des
définitions utiles. Nous verrons également que lorsque la valeur de certains
attributs est fixée dans un objet, d'autres attributs initialement libres
peuvent devenir des attributs dérivés.
Les connexions comportent des caractéristiques de compatibilité, ainsi que d'autres attributs dérivés dont les valeurs sont fonction de leurs slots d'entrée et de sortie. Nous décrivons ces attributs, résumés dans le tableau A.3.3, en introduisant de nouveaux termes ainsi que leurs définitions.
#1 :externe=faux) à un slot externe
(slot pour lequel externe=vrai). Une connexion non externe, ou
connexion de dispositifs est une connexion reliant deux slots de
dispositifs. Une connexion ne peut relier deux slots externes.
#1 :#1 :La compatibilité de types n'entre pas en ligne de compte dans les contraintes de connexion vues précédemment car, comme nous le verrons dans l'annexe B, une connexion compatible peut très bien devenir incompatible au cours de l'édition et vice-versa. La compatibilité statique décrit cependant les évolutions possibles de cette compatibilité, et il est tout à fait possible (bien que nous ne le faisions pas) de refuser les connexions statiquement incompatibles.
De même que les slots induisent un certain nombre de propriétés sur les connexions, certaines propriétés caractérisent les slots en fonction des connexions existantes. Nous décrirons ces attributs dérivés tout en introduisant de nouveaux termes qui nous seront utiles dans les deux prochaines annexes. Ces attributs sont résumées dans le tableau A.3.4.
#1 :
#1 :
#1 :
#1 :any s'il n'est pas
connecté. Le type connecté d'un slot d'entrée est le type de son slot
connecté, ou null s'il n'est pas connecté.
![]() |
Les connexions de dispositifs sont des arcs orientés reliant deux slots qui ont chacun un dispositif pour parent. Il est donc possible, à partir d'un ensemble de connexions de dispositifs, de construire un graphe orienté exprimant des dépendances entre les dispositifs (figure A.4). Ce graphe nous permet d'introduire les deux relations suivantes sur les dispositifs:
Un dispositif
est successeur direct d'un dispositif
ssi il existe un arc
dans le graphe de
dépendances.
Un dispositif
est successeur indirect d'un dispositif
ssi il existe un chemin qui va de
à
dans le graphe de
dépendances. Cette relation
Un dispositif composite est entièrement défini par sa configuration fille.
Hormis l'attribut parent, l'ensemble de ses attributs (précédés d'une
flèche dans la liste ci-dessous) est fonction des attributs de cette
configuration fille:
#1 :null.
#1 :#1 :#1 :index. Chaque slot du dispositif composite
hérite des attributs du slot externe qui lui est associé.
#1 :#1 :vrai.
#1 :faux.
#1 :
![]() |
Nous appellerons connexion inter-niveaux toute paire de connexions reliant deux slots par l'intermédiaire d'un slot externe et de son slot de dispositif composite associé. Si cette connexion passe par le slot du dispositif composite puis par le slot externe, nous sommes dans le cas d'une connexion inter-niveaux descendante; dans le cas contraire, il s'agit d'une connexion inter-niveaux ascendante (figure A.7). Dans les deux cas, la connexion inter-niveaux est équivalente du point de vue de l'exécution à une connexion directe entre le deux slots.
![]() |
Des opérations de composition et de décomposition permettent de
construire des structurations alternatives de l'arbre des configurations. La
figure A.8 montre un exemple de composition ajoutant un
niveau de configuration. Les dispositifs
,
et
sont regroupés au
sein d'un dispositif composite, qui peut ensuite être aplati pour redonner la
configuration initiale.
La composition d'un ensemble de dispositifs
dans une configuration
s'obtient par l'algorithme A.1. L'opération inverse,
consistant à décomposer un dispositif composite
dans
s'obtient
par l'algorithme A.1. Ces algorithmes emploient la
factorisation des connexions multiples sur un slot de sortie (figure
A.9).
Enfin, la décomposition totale d'une configuration
, utilisée pour le
calcul des dépendances cycliques, s'obtient en appliquant récursivement
l'algorithme A.1 sur l'ensemble des dispositifs de la
configuration
.
Il est utile d'introduire une définition alternative de la connexion, la
i-connexion, qui ne prend en compte que les connexions effectives
(éventuellement inter-niveaux) entre slots de dispositifs. Nous dirons ainsi
qu'un slot de dispositif
est i-connecté à un slot de dispositif
si
est relié à
soit par une connexion, soit par une ou plusieurs
connexions inter-niveaux successives.
Soit un slot
appartenant à un dispositif dans une configuration
. Soit
la racine de l'arbre de configurations dont fait partie
.
Le slot
est i-connecté à
ssi
est connecté à
dans la décomposition totale de
.
L'ensemble des slots i-connectés à
est l'ensemble des
slots connectés à
dans la décomposition totale de
.