Représentation graphique des objets et sous-typage



Documents pareils
Exprimer ce coefficient de proportionnalité sous forme de pourcentage : 3,5 %

Principe de symétrisation pour la construction d un test adaptatif

Exo7. Limites de fonctions. 1 Théorie. 2 Calculs

Limites finies en un point

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Algèbre binaire et Circuits logiques ( )

Resolution limit in community detection

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Une méthode d apprentissage pour la composition de services web

Modèle de troncature gauche : Comparaison par simulation sur données indépendantes et dépendantes

Vers une approche Adaptative pour la Découverte et la Composition Dynamique des Services

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Vérification de programmes et de preuves Première partie. décrire des algorithmes

O, i, ) ln x. (ln x)2

CH.6 Propriétés des langages non contextuels

Modélisation géostatistique des débits le long des cours d eau.

La mesure de Lebesgue sur la droite réelle

Cours (7) de statistiques à distance, élaboré par Zarrouk Fayçal, ISSEP Ksar-Said, LES STATISTIQUES INFERENTIELLES

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Université Paris-Dauphine DUMI2E 1ère année, Applications

Les capitalistes sociaux sur Twitter : détection via des mesures de similarité

Le produit semi-direct

Exemple 4.4. Continuons l exemple précédent. Maintenant on travaille sur les quaternions et on a alors les décompositions

Partie II Cours 3 (suite) : Sécurité de bases de données

Construction d un cercle tangent à deux cercles donnés.

Chapitre 2 Le problème de l unicité des solutions

DÉRIVÉES. I Nombre dérivé - Tangente. Exercice 01 (voir réponses et correction) ( voir animation )

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Utilisation des tableaux sémantiques dans les logiques de description

Analyse fonctionnelle Théorie des représentations du groupe quantique compact libre O(n) Teodor Banica Résumé - On trouve, pour chaque n 2, la classe

SUR CERTAINS SYSTEMES D EQUATIONS AVEC CONTRAINTES DANS UN GROUPE LIBRE (*)

Programmation en Caml pour Débutants

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Planche n o 22. Fonctions de plusieurs variables. Corrigé

Développements limités, équivalents et calculs de limites

chapitre 4 Nombres de Catalan

Les deux points les plus proches

ÉTUDE DE L EFFICACITÉ DE GÉOGRILLES POUR PRÉVENIR L EFFONDREMENT LOCAL D UNE CHAUSSÉE

Rappels et compléments, première partie : Nombres complexes et applications à la géométrie

FONCTION EXPONENTIELLE ( ) 2 = 0.

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

FIMA, 7 juillet 2005

Développer, factoriser pour résoudre

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

Calcul fonctionnel holomorphe dans les algèbres de Banach

Compression Compression par dictionnaires

TRS: Sélection des sous-graphes représentants par l intermédiaire des attributs topologiques et K-medoïdes

Introduction à la théorie des graphes. Solutions des exercices

Le théorème de Thalès et sa réciproque

Encryptions, compression et partitionnement des données

0DWKpPDWLTXHVGHO DUJHQW. édité par Mr. G.Moumoulidis (OTE)

Les simulations dans l enseignement des sondages Avec le logiciel GENESIS sous SAS et la bibliothèque Sondages sous R

Continuité et dérivabilité d une fonction

Chapitre VI- La validation de la composition.

Critères de qualité des projets

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Rappels sur les suites - Algorithme

Modélisation et Simulation

Grammaires d unification

3. Conditionnement P (B)

10 leçon 2. Leçon n 2 : Contact entre deux solides. Frottement de glissement. Exemples. (PC ou 1 er CU)

Le Langage SQL version Oracle

Comparaison de fonctions Développements limités. Chapitre 10

Continuité d une fonction de plusieurs variables

Correction de l examen de la première session

La médiatrice d un segment

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Sur certaines séries entières particulières

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Groupoïdes quantiques mesurés : axiomatique, étude, dualité, exemples

L ANALYSE EN COMPOSANTES PRINCIPALES (A.C.P.) Pierre-Louis GONZALEZ

MATHÉMATIQUES FINANCIÈRES I

Théorie de la Mesure et Intégration

Cours de Probabilités et de Statistique

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Cours de mathématiques Première année. Exo7

Nom de l application

Un dictionnaire électronique pour apprenant de l'arabe (langue seconde) basé sur corpus

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Les Bases de Données et l Objet Introduction

MIS 102 Initiation à l Informatique

Modèles et Méthodes de Réservation

La fonction exponentielle

VISUALISATION DE NUAGES DE POINTS

LE PROBLEME DU PLUS COURT CHEMIN

données en connaissance et en actions?

Une forme générale de la conjecture abc

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Initiation à la Programmation en Logique avec SISCtus Prolog

Introduction à la théorie des files d'attente. Claude Chaudet

Moments des variables aléatoires réelles

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Continuité en un point

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Cours de Programmation 2

Une méthode formelle pour la vérification de la consistance temporelle et la gestion prédictive de la Qualité de service pour la présentation des

Chapitre 6. Fonction réelle d une variable réelle

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Transcription:

Représentation graphique des objets et sous-tpage Cong-Cong Xg * Boumediene Belkhouche ** * Dept of Mathematics and Computer Science Nicholls State Universit, Thibodau, LA 70310, USA cmps-c@nicholls.edu ** EECS Department, Tulane Universit, New Orleans, LA 70118, USA bb@eecs.tulane.edu RÉSUMÉ. Les dépendances ernes parmi les propriétés des objets caractérisent leurs comportements et les différencient des enregistrements. Des problèmes fondamentau de tpage/soustpage persistent encore dans les sstèmes de tpes d objets parce que les erdépendances parmi ces propriétés ne sont pas prises en compte. Dans ce papier, nous proposons une nouvelle méthode de tpage des langages orientés objet qu on appelera graphe tpe pour objets (OTG). Les tpes des objets sont représentés par des graphes orientés et colorés. Les erdépendances parmi les propriétés sont formalisées par des liens égrés dans les tpes mêmes. Asi, nous démontrons que les problèmes qui eistent dans les sstèmes traditionnels de tpes peuvent être facilement résolus sous OTG. ABSTRACT. Internal dependencies among object components characterize the behaviors of objects and differentiate them from records. Fundamental tpg/subtpg shortcomgs still persist current object tpe sstems due to the overlook of such object component erdependencies. In this paper, we propose object tpe graphs (OTG) as a new approach to the tpg of object-oriented languages. Under OTG, object tpes are represented as colored directed graphs and object component erdependancies are formalized as computable lks and egrated o object tpes. We show how problems conventional object tpe sstems can be easil resolved under OTG. MOTS-CLÉS : variance, sous-tpage, erdépendance, lien. KEYWORDS: variance, subtpg, erdependenc, lk. RSTI - L objet 11/2005. LMO 05, pages 191 à 206

192 RSTI - L objet 11/2005. LMO 05 1. Introduction Dans le cadre de la théorie des tpes des langages orientés objet, il eiste deu grandes lignes de recherche : (1) le ς-calculus de Abadi et Cardelli [ABA 96] ; (2) le lambda calcul des objets de Fisher et Mitchell (et ses etensions) [FIS 94, LIQ 96, LIQ 98, BON 95]. Les deu sstèmes sont conventionnels dans le sens suivant : la distction fondamentale entre objets et enregistrements (c est-à-dire, les objets peuvent avoir des erdépendances entre leurs composants alors que les enregistrements n en ont pas) n est pas saisie dans les deu calculs. La dépendance erne des comportements est un dicateur critique qui différencie les objets des enregistrements. Asi, ne pas eprimer cette erdépendance signifie que deu tpes d objets dont les comportements sont différents peuvent avoir le même tpe. Par eemple, soient les objets a = [ = 1, = 2] et b = [ = 1, = ς(s : Self )(s.+1)], où ς est le liant, s est la variable dont le tpe est Self, et s. est un appel. Dans a, et sont dépendants, alors que dans b, (la valeur de) dépend de (la valeur de). La différence dans le comportement de a et de b se voit dans les résultats des appels à chaque avant et après la mise à jour de chaque. Par eemple, a. = 2, (a. 2). = 2, b. = 2, mais (b. 2). = 3, où est une opération de mise à jour des composants. Nous constatons que le comportement de a ne change pas avant et après l opération de mise à jour, alors que le comportement de b est modifié une fois que l opération de mise à jour est appliquée à b. Ce désaccord n est pas signalé dans les sstèmes conventionnels de tpes pour objets. Par conséquent, a et b sont du même tpe [ :, : ] et peuvent asi être utilisées de façon erchangeable dans n importe quel contete de programme où un objet de tpe [ :, : ] est utilisable. Des erreurs subtiles de programmation deviennent évitables, spécialement lorsque l on considère le sous-tpage et la subsomption. Dans ce papier, nous roduisons une nouvelle méthode pour représenter les tpes d objets qu on appellera graphe tpe pour objets (OTG). Cette représentation nous permet d eprimer les erdépendances. L organisation du papier est comme suit. Dans la section suivante, nous roduisons le problème de variance et de sous-tpage des enregistrements et des objets. Dans la section 3, nous traitons l eemple du po mobile pour signaler certas problèmes de sous-tpage. Dans la section 4, nous défissons un simple langage orienté objet (TOOL). Dans la section 5, nous défissons la représentation graphique OTG. Dans la section 6, nous défissons le sous-tpage des objets dans le cadre OTG. Plusieurs eemples de sous-tpage sont présentés. Enf, dans la section 7, nous présentons nos conclusions. 2. La variance du sous-tpage des objets En règle générale, on utilise l opérateur <: pour diquer que le sous-tpage des objets est appliqué selon les composants respectifs de ces objets. C est-à-dire, étant donnés deu tpes d objet A = [l 1 : t 1,..., l n : t n ] et B = [l 1 : s 1,..., l m : s m ], la relation A <: B dépend des relations de sous-tpage entre t i et s i pour chaque

Sous-tpage des objets 193 1 i m(n, m). Asi, il a trois formes de sous-tpage : contravariance, covariance, et variance. Un sous-tpage est appelé contravariant (covariant, variant, respectivement) si : A <: B si et seulement si s i <: t i (t i <: s i, t i = s i, respectivement) pour chaque i. Les sous-tpages contravariant et covariant présentent de sérieu problèmes et sont à rejeter en faveur du sous-tpage variant [ABA 96, BON 95, CAS 95, LIQ 96]. Cependant, le sous-tpage variant lui-même est restrictif lorsqu on considère les enregistrements et les objets. En effet, les enregistrements sont un cas spécial d objets sans erdépendances parmi les composants [CAR 91]. Pour illustrer, considerons l ensemble des identificateurs de domaes S = {α, β}, et l ensemble des opérateurs Σ = {<:} où <: a pour tpe α α β, et les représentations Re = (Re α, Re β ) = (Re, {t, f}) et Ob = (Ob α, Ob β ) = (Ob, {t, f}). Aussi, soit f <: une function de Re Re à {t, f} qui fait correspondre deu enregistrements r 1, r 2 à t si le tpe de r 1 est un sous-tpe du tpe de r 2, et à f autrement. g <: est une function de Ob Ob à {t, f} ie de la même manière pour les objets. Asi, Re Ob = (Re, f <: ), = (Ob, g <: ) sont deu Σ-algèbres. En plus, soit h : Re Ob, h α : Re α Ob α, and h β : Re β Ob β ies asi : h = (h α, h β ) = (h, id). Alors, h devrait être un Σ-homomorphisme de Re à Ob, étant donné que h est une clusion naturelle de Re à Ob. C est-à-dire, h(f <: (r 1, r 2 )) = g <: (h(r 1 ), h(r 2 )) devrait être vraie pour t enregistrement r 1, r 2 Re. Le diagramme suivant est commutatif. Re Re h 2 Ob Ob f <: g <: {t, f} id {t, f} Figure 1. Homomorphisme de Re à Ob Malheureusement, le sous-tpage variant ne permet pas cette commutativité. Par eemple, soient les enregistrements suivants : r 1 = = 1, = 2 et r 2 = = 1.0, = 2.0, qui ont pour tpes t 1 = :, : et t 2 = :, :,

194 RSTI - L objet 11/2005. LMO 05 respectivement. Alors, t 1 <: t 2 Cependant, quand r 1 et r 2 sont considérés comme des objets, nous avons o 1 = [ = 1, = 2] et o 2 = [ = 1.0, = 2.0], aant pour tpes T 1 = [ :, : ] et T 2 = [ :, : ]. Le sous-tpage espéré T 1 <: T 2 n est pas conservé à cause de l variance. Il faut remarquer qu il a une bonne raison de vouloir le sous-tpage T 1 <: T 2. Les deu objets o 1 et o 2 sont dans un sens dégénérés. Les objets o 1 et o 2 devraient être consistants avec les enregistrements r 1 et r 2, et la nécessité d avoir T 1 <: T 2 suit de t 1 <: t 2. Il est clair que les trois méthodes de sous-tpage ne sont pas satisfaisantes. Dans ce papier, nous défirons une méthode de sous-tpage ( variance-par-nécessité ) capable de recouvrir les cas de sous-tpage variant qui sont perdus dans le sous-tpage variant traditionnel. 3. Distance d un po mobile Les pos avec des attributs supplémentaires (pos colorés [BRU 94, COO 90, HIC 02], pos mobiles [ABA 96, BON 95, HIC 02]) présentent des cas éressants dans l étude des langages orientés objet. Nous traitons ici un nouveau problème associé avec les pos mobiles. Soit un po en une dimension : p 1 = = 1.0 mv = ς(s:self )λ(i:)(s. s. + i) dist = ς(s:self )s. où mv déplace le po vers une position nouvelle sur l ae des et dist retourne la distance de l orige à la position actuelle du po. Dans les sstèmes conventionnels de tpes le tpe de p 1 est : P 1 = : mv : Self dist : Soit une autre fonction (m1d) qui prend un po appartenant à P 1, le déplace d une unité le long de l ae des, puis retourne sa distance de l orige. À cause du soustpage et de la subsomption, m1d prendra aussi comme paramètres des pos de dimension plus élevée qui sont des sous-tpes de P 1. Dans ce cas, cette fonction déplacerait les pos appartenant à ces sous-tpes le long de l ae des et garderait les autres coordonnées constantes. Naturellement, m1d pourrait être écrite asi : m1d = λ(p:p 1 )(p.mv(1)).dist Comme prévu, nous obtenons m1d(p 1 ) = 2.0. Maenant défissons un po à deu dimensions comme suit : = 1.0 = 1.0 p 2 = mv = ς(s:self )λ(i:)(s. s. + i) mv = ς(s:self )λ(i: )(s. s. + i) dist = ς(s:self ) (s.) 2 + (s.) 2

Sous-tpage des objets 195 Le tpe de p 2 est : P 2 = : : mv : Self mv : Self dist : La relation P 2 <: P 1 est facilement déduite. La position actuelle du po p 2 est (1, 1). Après application de m1d(p 2 ), p 2 se déplace de (1, 1) à (2, 1) La distance est 5 comme prévu. Défissons un autre po à deu dimensions comme suit : = 1.0 p = ς(s:self )s. 2 = mv = ς(s:self )λ(i:)(s. s. + i) mv = ς(s:self )λ(i: )(s. s. + i) dist = ς(s:self ) (s.) 2 + (s.) 2 Dans les sstèmes conventionnels de tpes, p 2 et p 2 ont le même tpe P 2 et tous les deu représentent le même po (1, 1) avec eactement les mêmes opérations (mv, mv, et dist). Le résultat retourné par m1d(p 2 ) est 2 2. Le problème apparent est que lorsque la coordonnée de p 2 devient 2, la coordonnée devient implicitement 2, à cause de l erdépendance entre et ( = s.). Asi, m1d(p 2 ) retourne la distance de l orige à (2, 2) au lieu de (2, 1). Nous constatons que l erdépendance entre les composants des objets est importante vis-à-vis des comportements des objets. Le tpe de l objet devrait saisir cette erdépendance et distguer entre p 2 et p 2. 4. Un langage tpé orienté objet (TOOL) Les termes de tpes de TOOL sont défis comme suit. T ermes M ::= λ(:σ).m M 1 M 2 M.l M.l ς(:σ)m [l i = ς(:s(a))m i ] n i=1 T pes σ ::= κ t σ 1 σ 2 µ(t)σ A S(A) A ::= ι(t)[l i (L i ):σ i ] n i=1 L i {l 1,..., l n } pour chaque i [l i = ς( : S(A))M i ] n i=1 représente un objet qui possède n méthodes, avec comme nom l i et corps M i pour chaque i. ς est un auto-liant (). M.l ς( : σ)m est

196 RSTI - L objet 11/2005. LMO 05 l opération de mise à jour qui a pour effet de remplacer le corps de la méthode l dans M par M. κ, t, σ 1 σ 2, et µ(t)σ sont respectivement les tpes de base, les variables, les tpes de fonction, et les tpes récursifs. Les tpes d objets sont représentés par ι(t)[l i (L i ):σ i ] n i=1 où chaque méthode l i a pour tpe σ i. L i est l ensemble des liens de l i. ι est un tpe auto-liant utilisé pour signifier que chaque occurrence de t dans chaque σ i représente l auto-tpe associé au tpe de l objet. Une autre façon d écrire l autotpe est S(A) qui signifie l auto-tpe associé au tpe de l objet A. Les deu notations se défissent entre elles comme suit : A = ι(t)[l i (L i ) : σ i (t)] n i=1 si et seulement si A = [l i (L i ):σ i (S(A))] n i=1. L eemple suivant sert à illustrer la notation. Soit le tpe A = ι(t) l 1({l 2, l 3 }) : t l 2 ( ) :. l 3 ({l 2 }) : Il spécifie que l 1, l 2, et l 3 sont respectivement un auto-tpe,, et. L ensemble des liens pour l 1 et l 3 sont {l 2, l 3 } et {l 2 }. l 2 n a pas de liens. Un eemple d objet de tpe A est : a = l 1 = ς(s:s(a))s l 2 = ς(s:s(a))1. l 3 = ς(s:s(a))λ(: )( + s.l 2 ) Liens Dans le tpe d objet ι(t)[l i (L i ):σ i ] n i=1, les étiquettes L i suivant chaque l i forment l ensemble des liens de l i. Cet ensemble est utilisé pour eprimer les dépendances entre les composants des objets. C est-à-dire, l j L i signifie que la méthode l i dépend (partiellement) de la valeur de la méthode l j. Ce mécanisme différencie les tpes d objet de TOOL des tpes d objet des sstèmes conventionnels de tpes. Eemple 1 Étant donné l objet a et le tpe A (défis plus haut), les liens dans a sont : L a (s) = {l 1, l 2, l 3 } {l 1 } = {l 2, l 3 } L a (1) = L a (λ(:)( + s.l 2 )) = L a ( + s.l 2 ) = L a () L a (s.l 2 ) = {l 2 } = {l 2 } Défition 1 (Liens) Étant donné un objet a = [l i = ς(s:s(a))m i ] n i=1, (1) on dit que l i est dépendant de l j (i j) s il eiste un M tel que a.l i et (a.l j ς(s:σ)m).l i donnent des résultats différents ; (2) on dit que l i est directement dépendant de l j (i j) si (a) l i est dépendant de l j, et (b) si tous les l k (i k, j k) où l i est dépendant

Sous-tpage des objets 197 de l k et l k est dépendant de l j, sont détachés de a, l i demeure toujours dépendant de l j ; (3) L ensemble des liens de l i (ou bien de M i par rapport à l objet a), dénoté par L(l i ) (ou bien b L a (M i )), contient eactement tous les l j dont l i est directement dépendant. 5. Graphes tpe pour objets (OTG) Nous roduisons ici une représentation graphique des tpes d objet. Les OTG sont basés sur les graphes orientés colorés. Les graphes complees sont construits à partir des graphes tpe de base, graphes tpe de fonctions, et les graphe tpe d objets. Nous commençons par quelques défitions. Défition 2 (Graphe Orienté Coloré) Un graphe orienté coloré G est un quadruplet (G N, G A, C, c) composé de : (1) un ensemble de sommets G N ; (2) un ensemble d arcs G A ; (3) un ensemble de couleurs C ; (4) une fonction couleur c : G N G A C, qui retourne la couleur d un arc ou d un sommet. En plus, nous défissons une fonction source sc : G A G N, et une fonction destation t : G A G N, qui génèrent respectivement la source et la destation d un arc. Un graphe tpe de base G est un graphe coloré aant un seul sommet. Sa couleur est un tpe de base. Les graphes tpe de base et les graphes tpe fonction forment les éléments de base pour construire des graphes complees. Défition 3 (Graphe Tpe Fonction) Un graphe tpe fonction G = (s, G 1, G 2 ) est un graphe orienté coloré qui consiste en un sommet s, appelé sommet race, et de deu sous-graphes G 1 et G 2, tels que : (1) c(s) = ; (2) il a deu arcs associés au sommet race s, l arc gauche l et l arc droit r, tels que c(l) =, c(r) = ; l lie G 1 à s par sc(l) = s G1, t(l) = s, et r lie s à G 2 par sc(r) = s, t(r) = s G2, où s G1 et s G2 sont les sommets race de G 1 et G 2, respectivement ; (3) G 1 et G 2 sont disjos ; (4) s il eiste un arc a dans G avec c(a) = rec, alors sc(a) = s Gi, t(a) = s, c(s Gi ) =, i = 1, 2. G 1 est le graphe tpe de l argument de la fonction et G 2 est le graphe tpe du résultat. Le graphe tpe fonction est formé par un sommet race s lié à G 1 par un arc de couleur et à G 2 par un arc de couleur. Défition 4 (Graphe Tpe Objet) Un graphe tpe objet O = (s, A, R, L, S) est un graphe coloré aant un sommet race s, un ensemble A d arcs méthode, un ensemble R d arcs colorés avec rec, un ensemble L d arcs lien, et un ensemble S de graphes tpe, tels que : (1) c(s) =. (2) a A, sc(a) = s, t(a) = s F pour un certa graphe tpe F S, et c(a) = m pour une certae couleur de méthode m ; c(a) c(b) pour a, b A, a b. (3) r R, c(r) = rec, t(r) = s, sc(r) = s F pour un certa F S, et c(s F ) =. (4) l L, sc(l) = s F, t(l) = s G pour un certa F, G S, et c(l) = bm pour une certae couleur d une méthode m.

198 RSTI - L objet 11/2005. LMO 05 Donc, un graphe tpe objet est formé par un sommet race et un ensemble S de graphes tpe avec chaque graphe tpe F S lié à s par un arc méthode allant de s à F. La couleur du sommet race est. Les erdépendances entre les méthodes sont spécifiées par les arcs de L. Si L(m) est l ensemble des liens de la méthode m, alors pour chaque l L(m) il eiste un arc coloré avec bm. Les tpes récursifs sont diqués par des arc appartenant à R. Eemples de graphes tpe objet Eemple 2 Dans la Figure 2, A, B, et C sont des graphes tpe pour les tpes de base,, et bool, respectivement. D est un graphe tpe pour un tpe fonction. E est le graphe tpe pour ( ) ( ). Eemple 3 Dans la Figure 3, le graphe A dénote l objet de tpe [ :, : ], où les méthodes et sont dépendantes l une de l autre. Le graphe B dénote le tpe [ :, ({}) : ] où dépend de. Notons que la direction des liens dans B va de à ce qui signifie que les modifications de la méthode affectent (l évaluation de). Le graphe C représente le tpe objet µ(t)ι(s)[a :, b : t, c : s] où les deu tpes objet récursif et les auto-tpes participent. La méthode a retourne une valeur de tpe ; la méthode b est de tpe objet récursif et retourne un objet de tpe C. La méthode c est de tpe auto-tpe duit par le tpe objet C. Ceci est diqué par la boucle partant du sommet s vers lui-même. Notons les différences structurelles entre les tpes objet récursifs et les auto-tpes. Le graphe D représente le tpe d un po mobile en une dimension [ = 1, mv = ς(s : S(D))λ(i : )s. s. + i]. Le fait que mv dépende de et retourne une version modifiée de lui-même est diqué par l arc coloré avec et l arc coloré par dans le graphe tpe D. Eemple 4 Deu graphes tpe objet sont eposés dans la Figure 4. Ils représentent d autres variations de tpes de pos. Le graphe A est le tpe de l objet : = 1, m 1 = ς(s:s(a)λ(i:)p m 2 = ς(s:s(a)λ(i:)s où p est un po de tpe A. Le graphe B est le tpe de l objet = 1 = 2 d = ς(s:s(b))(s. + s.)/2 e 1 = ς(s:s(b))λ(p:b)(p. = s. et. p. = s.) e 2 = ς(s:s(b))λ(p:s(b))(p. = s. et p. = s.)

Sous-tpage des objets 199 bool A B C D E Figure 2. Graphes Tpe de Base et Graphes Tpe Fonction s s a b c rec s mv A B C D Figure 3. Graphes Tpe Objet m1 m2 rec bm1 bool b d b e1 e2 b rec bool A B Figure 4. Graphes Tpe Objet

200 RSTI - L objet 11/2005. LMO 05 6. Défitions du sous-tpage des objets Nous adoptons la théorie algébrique des grammaires [EHR 73] pour défir les notions de prémorphisme, base, fermuture des bases, et sous-tpage. Défition 5 (Prémorphisme de Graphe Tpe) Soit Φ l ensemble de tpes de base. Soient deu graphes orientés colorés G =(G N, G A, C, c) et G =(G N, G A, C, c ), un prémorphisme de graphe tpe f : G G est une paire de transformations (f N :G N G N, f A :G A G A ), telles que (1) a G A, f N (sc(a)) = sc (f A (a)), f N (t(a)) = t (f A (a)), et c(a) = c (f A (a)) ; (2) v G N, si c(v) Φ, alors c (f N (v)) Φ ; autrement c(v) = c (f N (v)). Ces prémorphismes préservent les directions et les couleurs des arcs et préservent les couleurs des sommets jusqu au tpes de base. G, dénotée par Ba(G), est le graphe (s, A, t(a), L) où t(a) = {t(a) a A}. Une sous-base de G est un sous-graphe (s, A, t(a ), L ) de Ba(G) où A A, L L, t(a ) = {t(a) a A }, et pour chaque l L il eiste a 1, a 2 A tels que sc(l) = t(a 1 ) et t(l) = t(a 2 ). La fermeture de la sous-base D = (s, A, t(a ), L ) d un graphe tpe objet G = (s, A, R, L, S), dénotée par Cl(D), est l union D E 1 E 2 où (1) E 1 = {l L a 1, a 2 A avec t(a 1 ) = sc(l), t(a 2 ) = t(l)}, et (2) E 2 = {l, h, a, t(l) l, h L, a A, a A, t(l) = sc(h) = t(a), et a 1, a 2 A tel que t(a 1 ) = sc(l), t(a 2 ) = t(h)}. Un eemple de base, sous-base, et fermeture est eposé dans la Figure 5. Le comportement d une méthode dans une sous-base peut non seulement affecter d autres méthodes dans la sous-base mais aussi affecter des méthodes en dehors. L idée de fermeture permet d eprimer le comportement total de la sous-base en cluant les méthodes, les liens, et les possibilités de dépendance directe ou directe. Une sous-base D est fermée si D = Cl(D). La fermeture est utilisée pour vérifier la spécification structurelle lors de la comparaison de deu graphes tpe objet dans le cas de sous-tpage. L autre spécification concernant le sous-tpage des objets est la variance. Étant donné un graphe tpe objet G = (s, A, R, L, S), pour chaque v t(a), si v n est pas cident à aucun par-arc ( b-arcs ) ou si v est un sommet destation d un par-arc, mais n est pas le sommet source d un par-arc, alors v est covariant ; autrement, v est variant. À la différence des sstèmes conventionnels de tpes qui prédéfissent la variance (c est soit variant, soit variant), la variance dans OTG est détermée par les erdépendances des méthodes. Un objet peut contenir des méthodes covariantes aussi bien qu variantes. Ceci nous amène à roduire ce nouveau sous-tpage ( variance-par-nécessité ) dans lequel le sous-tpage covariant et le sous-tpage variant co-eistent dans le même cas. Nous commençons par défir le sous-tpage des objets par les défitions des sous-tpages des objets de base et des fonctions. Soient deu graphes tpe de base G et F, F <: G si et seulement si c(s F ) <: c(s G ), où s F et s G sont des sommets simples dans F et G respectivement. Soient deu graphes tpe fonction G = (s G, G 1, G 2 ) et F = (s F, F 1, F 2 ), F <: G si et seulement si G 1 <: F 1 et F 2 <: G 2.

Sous-tpage des objets 201 n m u z u z b bz b bz (a) G (b) Ba(G) u b u (c) D (d) Cl(D) Figure 5. (a) Graphe Tpe Objet G ; (b) La Base Ba(G) de G ; (c) Une sous-base D de G ; (d) La Fermeture Cl(D) Défition 6 (Sous-tpage des objets) Soient deu graphes tpe objet G = (s G, A G,, L G, S G ) et F =(s F, A F,, L F, S F ). F <: G si et seulement si les conditions suivantes sont satisfaites : (1) il eiste un préisomorphisme f de la base Ba(G) à la base Ba(F ) tel que f(ba(g)) = Cl(f(Ba(G))) (c est-à-dire, f(ba(g)) est fermée) ; (2) Pour chaque sommet v dans f(ba(g)), soient u son pré-image dans Ba(G) sous f, F v S F le graphe tpe avec v pour sommet race, et G u S G le graphe tpe avec u pour sommet race : (i) si v est variant, alors F v = Gu ; (ii) si v est covariant, alors F v <: G u. L idée prcipale ici est que F <: G si (a) F possède tes les méthodes que G a ; (b) les erdépendances entre les méthodes de G sont les mêmes que celles entre les méthodes de F qui leur correspondent (ceci est assuré par le prémorphisme f et la propriété de fermeture de l image de la base de G sous f) ; (c) les tpes de méthodes de G sont comparés récursivement au tpes des méthodes correspondantes de F. La comparaison peut être variante, variante, ou une combaison des deu selon la variance de chaque méthode. Dans le cas des tpes récursifs, le dépliage des graphes est nécessaire pour pouvoir effectuer le sous-tpage.

202 RSTI - L objet 11/2005. LMO 05 l l 1 2 g l1 l 2 v v 1 2 T 2 1 T Figure 6. Graphes Tpe de o 1 et o 2 Pour illustrer nos défitions, nous présentons ici plusieurs eemples. Dans notre discussion, nous comparons OTG au autres sstèmes de tpes en soulignant les avantages de OTG. Nous commençons par montrer la simplicité de OTG en adressant les problèmes du sstème conventionnel. Eemple 5 Le premier problème est que dans les sstèmes conventionnels de tpes, le tpage covariant des enregistrements est perdu quand les enregistrements sont considérés en tant qu objets. Ceci crée un trou dans la théorie des objets. L homomorphisme de Re à Ob ne peut pas être établi. Sous OTG, cette covariance est maenue. Les enregistrements sont des cas spéciau d objets sans erdépendance parmi leurs méthodes. Asi, les graphes tpe n ont pas de liens et chaque méthode est covariante dans le sous-tpage. Par eemple, soient les enregistrements r 1 = l 1 = 1, l 2 = 2 et r 2 = l 1 = 1.0, l 2 = 2.0 transformés en objets o 1 = [l 1 = 1, l 2 = 2], o 2 = [l 1 = 1.0, l 2 = 2.0]. Les graphes tpe de o 1 et o 2 sont illustrés dans la Figure 6 par T 1 et T 2. Il eiste un prémorphisme g de T 2 à T 1 et les deu sommets v 1 et v 2 sont covariants parce qu ils ne sont pas cidents à aucun par-arc (b-arc). Asi, T 1 <: T 2 est facilement établie (nous supposons <: ). Le cas général peut être démontré de façon similaire en analsant les graphes tpe. Le sous-tpage sous OTG implante l homomorphisme et assure la commutativité du diagramme 1. Eemple 6 Le deuième problème est la fonction m1d. Cette fonction est construite dans OTG de façon fiable. Les tpes de p 1, p 2, et p 2 sont Q 1, Q 2, et Q 2, respectivement (Figure 7). La fonction m1d est : m1d = λ(p : Q 1 )((p.mv(1)).dist) Dans OTG, vérifier que Q 2 <: Q 1 est très simple. Ceci implique que le tpage de m1d(p 2 ) est correct. Mais Q 2 : Q 1 parce que l image f(ba(q 1 )) de la base de

Sous-tpage des objets 203 dist mv b dist mv mv b dist b mv mv b Q1 Q 2 Q 2 Figure 7. Q 1, Q 2, et Q 2 sont les tpes de p 1, p 2, et p 2 respectivement Q 1 sous le prémorphisme f de Ba(Q 1 ) à Ba(Q 2 ) n est pas fermée (f(ba(q 1)) Cl(f(Ba(Q 1 )))). Par conséquent, la possibilité pour m1d de prendre le po p 2 :Q 2 est élimée, évitant asi des résultats erronés. Eemple 7 Dans le cas de l eemple 5, nous observons que OTG relae le soustpage variant permettant asi le sous-tpage covariant. L eemple suivant montre que l variance est adoptée par OTG lorsque c est nécessaire. Soit l objet : a = [ ] = 1 = ς(s:s(a))( s. )! où et! sont les fonctions valeur absolue et factorielle. Le tpe de cet objet est représenté par le graphe A dans la Figure 8(a). Notons l eistence du par-arc (b-arc) allant de u à v. Donc, le noeud u est variant ce qui signifie que la méthode est variante. Pour apprécier la nécessité de cette variance, supposons que u est covariant, alors le tpe de A serait un sous-tpe de B (Figure 8(b)) et a:b par subsomption. La méthode de a peut être mise à jour avec une valeur réelle (1.2 par eemple) pour produire un autre objet : b = [ ] = 1.2. = ς(s:s(a))( s. )! Cependant, une erreur du calcul b. = ( 1.2 )! s ensuit parce que la valeur de l objet n appartient pas au domae de la fonction. Ceci est la raison prcipale qui motive l utilisation de sous-tpage variant dans les sstèmes conventionnels [ABA 96]. Dans le sous-tpage de OTG, la propriété de variance de chaque méthode est détermée par les liens. Le sous-tpage est déduit conformément. Dans cet eemple, la méthode est variante et la méthode est covariante. Discussion Soient deu méthodes et dans un graphe tpe objet. Nous avons à considérer quatre cas de dépendance entre et : (a) il n eiste aucun lien entre elles ; (b) il a un lien de à, mais pas de lien de à ( dépend de mais ne dépend pas de ) ; (c) il a un lien de à, mais pas de lien de à ( dépend de

204 RSTI - L objet 11/2005. LMO 05 A B u v (a) (b) Figure 8. (a) Le tpe de a. (b) Un tpe ne pouvant pas être un supertpe de A A B C D Figure 9. Cas prcipau des liens mais ne dépend pas de ) ; (d) il a un lien de à et un lien de à. ( et dépendent l un de l autre). Ces cas sont représentés dans la Figure 9 par les graphes tpe A, B, C, et D respectivement. Nous démontrons que chaque cas est différent des autres. Si B est considéré comme le même tpe (ou un sous-tpe de) A, alors on roduirait une erreur dans l eemple des pos mobiles. Proposition 1 Soit un graphe tpe objet A dans lequel il a un lien entre deu méthodes et. Soit le graphe tpe objet B obtenu de A en supprimant tous les liens dans A. On ne peut avoir ni A = B ni A <: B. Si nous considérons A comme le même tpe (sous-tpe) que B, alors nous offrons la possibilité à un objet dont les composants sont dépendants les uns des autres d être

Sous-tpage des objets 205 vu comme un objet dont les composants sont dépendants. Comme précédemment, ce cas donnera des résultats erronés. Par eemple, soit : ed 1 = dall = code for dall button = ς(s:s(e 1 ))s.dall ed 2 = dall = code for dall button = ς(s:s(e 2 ))s.dall s.dall ed 3 = dall = code for dall button = ς(s:s(e 3 ))() ed 4 = dall = code for dall button = ς(s:s(e 4 ))() () ce = λ(:e 1 ).button où ed i :E i sont des objets d un éditeur, et ce est une fonction qui prend un objet d un éditeur et vide sa mémoire tampon. Pour tous les ed i, dall est une méthode privée qui appelle des services ernes pour supprimer tous les dépouillements de la mémoire tampon. La suppression se faisant par effet secondaire, nous supposons que le résultat retourné par dall est () avec tpe unit (comme en ML). De plus, nous supposons qu il a une opération addition associée à l unité () telle que () () donne comme valeur (). La méthode button dans tous les objets est publique, et une fois qu on appuie sur le bon, elle est supposée appeler dall pour effectuer la suppression. Notons que la méthode button est implantée de façon différente dans chacun des quatre objets : dans ed 1 et ed 2, le bon (button) appelle dall une fois et deu fois respectivement ; dans ed 3 et ed 4, le bon n appelle pas dall. En ce qui concerne les liens, il a un lien de dall à button dans ed 1 et ed 2, mais aucun lien n eiste dans ed 3 et ed 4. Évidemment, ce(ed 1 ) et ce(ed 2 ) nettoient les mémoires tampon de ed 1 et ed 2 comme prévu (si on permet E 2 <: E 1 ), mais ce(ed 3 ) et ce(ed 4 ) ne réussiront pas à accomplir cette tâche (si on permet E 3 <: E 1 et E 4 <: E 1 ) produisant asi une erreur. Ceci nous force à ne pas prendre E 3 et E 4 comme sous-tpes de E 1, et à énoncer la proposition suivante. Proposition 2 Soit un graphe tpe objet A dans lequel il a un lien entre deu méthodes et. Soit le graphe tpe objet B obtenu de A en supprimant tous les liens dans A. On ne peut avoir ni A = B ni B <: A. Les autres cas (Figure 9) peuvent être adressés facilement en utilisant les deu propositions. 7. Conclusion T sstème de tpes devrait traiter les enregistrements et les objets de façon uniforme t en tenant compte des erdépendances parmi les composants des objets.

206 RSTI - L objet 11/2005. LMO 05 Ceci n est pas le cas des sstèmes conventionnels, ce qui mène soit à des erreurs, soit à des restrictions de la variance. Pour éviter ces erreurs et ces restrictions, nous avons défi le sstème de tpes OTG. OTG est basé sur la théorie des graphes et permet d eprimer les erdépendances à l aide de liens. Asi les relations entre deu tpes sont détermées par les tpes de leurs composants et les liens parmi leurs méthodes. Dans ce sstème nous avons discuté les différentes formes de sous-tpage. En comparant OTG avec les sstèmes conventionnels, nous avons démontré que le tpage sous OTG est non seulement sûr, mais aussi plus fleible. 8. Bibliographie [ABA 96] ABADI M., CARDELLI L., A Theor of Objects, Sprger-Verlag, New York, 1996. [BON 95] BONO V., LIQUORI L., «A Subtpg for the Fisher-Honsell-Mitchell Lambda Calculus of Objects», Proc. of CSL, International Conference of Computer Science Logic, n o 933 Lecture Notes Computer Science, p. 16-30, Srger Verlag, 1995. [BRU 94] BRUCE K., «A paradigmatic Object-Oriented Programmg Language : Design, Static Tpg and Semantics», Journal of Functional Programmg, vol. 4, n o 2, 1994, p. 127 206. [CAR 91] CARDELLI L., MITCHELL J., «Operations of Records», Mathematical Structures Computer Science, vol. 1, n o 1, 1991, p. 3 48. [CAS 95] CASTGNA G., «Covariance and Contravariance : Conflict with a Cause», ACM TOPLAS, vol. 17, 1995, p. 431 447. [COO 90] COOK W., HILL W., CANNING P., «Inheritance is not Subtpg», Proceedgs of the 17the Annual ACM Smposium on Prciples of Programmg Languages, 1990, p. 12 135. [EHR 73] EHRIG H., PFENDER M., SCHNEIDER H. J., «Graph grammars : An algebraic approach», IEEE Conference of Automata and Switchg Theor, 1973, p. 167 180. [FIS 94] FISHER K., HONSELL F., MITCHELL J., «A Lambda Calculus of Objects and Method Specialization», Nordic Journal of Computg, vol. 1, 1994, p. 3 37. [HIC 02] HICKEY J., Introduction to O Caml, http ://caml.ria.fr/tutorials-eng.html, 2002. [LIQ 96] LIQUORI L., CASTAGNA G., «A Tped Lambda Calculus of Objects», N o 1179 Lecture Notes Computer Science, p. 129 141, Srger Verlag, 1996. [LIQ 98] LIQUORI L., «On Object Etension», ECOOP 98 Object-oriented Programmg, n o 1445 Lecture Notes Computer Science, p. 498 522, Srger Verlag, 1998.