2 P RINCIPES ET MECANISMES DE BASE
2.1 M ECANISMES DE CLASSIFICATION ET DE PROPAGATION
La définition de la partie commune d un groupe d éléments peut être considérée comme le type
des éléments, car elle spécifie les propriétés communes de ceux-ci. Un élément est alors une instance,
et peut à son tour être la définition de la partie commune d un autre groupe d éléments : il peut être
instance et type à la fois Cette double facette d un objet est peu habituelle pour le monde de la
programmation o‘ il n existe généralement que deux niveaux : type et instance ; par exemple, un objet Java ne peut pas être une classe Java. Toutefois, plusieurs langages, comme Ruby61 ou Phython62, permettent de définir des classes (des métaclasses) dont les instances sont des classes.
59Unified Modeling Language 60Model Driven Architecture 61http://www.ruby-lang.org/ 62http://www.python.org/
Certaines approches de modélisation proposent des mécanismes de classification et de
propagation d attributs afin de résoudre le problème de multiples niveaux d abstraction et de
conformité.
La matérialisation [79], [80] est un patron qui définit une relation, appelée relation de
matérialisation entre une classe de catégories et une classe d éléments plus concrets Une relation de
matérialisation est représentée par une ligne directe avec une étoile du côté de la classe plus concrète. La Figure 41 montre un exemple qui modélise des éléments d une pièce de théâtre et définit une relation de matérialisation entre les classes Pièce_de_théâtre et Mise_en_scène indiquant que toute mise en scène est une réalisation concrète (une matérialisation) d une pièce de théâtre donnée de laquelle elle « hérite » dun certain nombre de propriétés de plusieurs façons.
Une matérialisation possède deux facettes disjointes : instance et type. Chaque facette instance est une instance de la classe abstraite, tandis que la facette type associée est une sous -classe de la classe
concrète Dans l exemple de la Figure 41, Hamlet est une facette instance de Pièce_de_théâtre, et
Mise_en_scène_Hamlet est la facette type associée qui définit toutes les instances de Mise_en_scène de la pièce de théâtre Hamlet.
Figure 41. Matérialisation
Une facette type hérite des attributs de la classe concrète par un mécanisme d héritage classique
et « hérite aussi des attributs de la classe abstraite par des mécanismes de propagation d attributs
Dans la Figure 41, nous illustrons les mécanismes de propagation T1 et T3. Le mécanisme T1 propage
la valeur d un attribut (mono- ou multivalué) d une facette instance à la facette type associée comme un attribut de classe : les valeurs des attributs title et author (annotés T1) sont propagées de la facette instance Hamlet à la facette type Mise_en_scène_Hamlet, et seront donc héritées par toutes les instances de cette dernière. Le mécanisme T3 concerne des attributs multivalués (ensemble de strings) de la
classe abstraite Chaque élément dans l ensemble des valeurs d un attribut annoté T d une facette instance génère une nouvelle instance d attribut en la facette type l attribut roles de Pièce_de_théâtre
est propagé avec T3 à Mise_en_scène ; sa valeur {hamlet, claudius, gertrude} de la facette instance
Hamlet génère trois instances d attributs hamlet, claudius et gertrude, dans la facette type associée
Mise_en_scène_Hamlet. Ainsi, la mise en scène France-1994 est une matérialisation de la pièce de théâtre Hamlet et possède donc les valeurs propagées de linstance Hamlet.
2.P
RINCIPES ET MECANISMES DE BASELes matérialisations peuvent participer dans des compositions o‘ la classe concrète d une matérialisation est à son tour la classe abstraite d une autre classe : la classe Mise_en_scène peut être la
classe abstraite d une classe Réprésentation par exemple. De plus, une classe abstraite peut avoir plusieurs relations de matérialisation vers des classes concrètes différentes.
L approche d instanciation profonde [81] cherche à répondre aux problèmes liés à la modélisation à multiples niveaux d abstraction : classification ambiguë, réplication de concepts. Pour cela, cette approche considère que tout élément est potentiellement un type qui peut être instancié. Linstanciation des attributs des éléments est retardée en utilisant un nombre entier appelé potency. Le nombre potency associé à chaque attribut d un type d élément définit le nombre de niveaux
d instanciation nécessaires avant de donner une valeur à chaque attribut Une instance hérite d une définition d attribut si potency est positif et instancie l attribut si potency est égal à zéro (voir la Figure 42). Ce mécanisme d instanciation permet ainsi de définir les facettes d instance et de type des
éléments.
Figure 42. Instanciation profonde
Le concept de powertype [82], [83], défini par le langage de modélisation UML, permet de créer des sous-types dynamiquement. Un powertype est un type dont les instances sont des sous-types d un
autre type, nommé type partitionné. Un powertype et un type partitionné sont liés indirectement par des entités qui sont des instances du premier (facette instance) et des sous-types du second (facette type) les instances d un powertype sont en même temps des objets et des types (nommés clabjets).
Dans l exemple de la Figure 43, Hamlet est une instance de Pièce_de_théâtre (le powertype) est un sous-type de Mise_en_scène (le type partitionné), héritant ainsi des déclarations d attributs de ce dernière
Toutes ces approches redéfinissent la sémantique de l instanciation Elles présentent des avantages mais aussi des inconvénients par rapport à nos besoins (récapitulés dans le Tableau 8)63.
Avantages Limitations
Matérialisation Divers types de propagation
d attributs/valeurs sont proposés. Le nombre de niveaux de
classification est illimité.
Un objet résulte de l assemblage des deux
objets avec des identités distinctes.
Chaque facette type est sous-type direct de la
classe concrète d une matérialisation
Ajouter des niveaux intermédiaires dans la hiérarchie de matérialisation requiert la modification des types de propagation utilisés.
Instanciation profonde
Le nombre de niveaux de classification est illimité.
Ajouter des niveaux intermédiaires dans la hiérarchie de classification requiert la modification des potency.
Powertypes Le nombre de niveaux de classification est illimité.
Chaque instance d un powertype est un
sous-type direct d un sous-type partitionné Considérer plus de deux niveaux d abstraction du type partitionné requiert donc la modélisation de types et de relations additionnels.
Tableau 8. Approches de classification et de propagation d attributs
La limitation principale de ces approches du moins pour l usage que nous en faisons se présente
lorsqu on souhaite utiliser des sous-types d un type participant à la classification. Considérons par exemple un sous-type de Mise_en_scène nommé Classique. Italy-1995 est une mise en scène (une instance) de Hamlet. Toutefois, elle est une mise en scène de type classique et est donc une instance du sous-type Classique. Cette situation n est pas possible dexprimer avec des powertypes (voir la Figure 44) : une instance de Pièce_de_théâtre ne peut être qu un sous-type direct de Mise_en_scène. Or, il peut être intéressant de spécialiser aussi les types de mise en scène (classique, moderne,
Figure 44. Sous-typage du type partitionné d unpowertype
63 Dans [90], les approches de matérialisation, instanciation profonde, powertypes et objets multi-niveaux ont été comparées par rapport à différentes critères : compacité, extensibilité, flexibilité de requête, modélisation de relations à multiples niveaux.