• Aucun résultat trouvé

M ECANISMES DE CLASSIFICATION ET DE PROPAGATION

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 BASE

Les 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.

2.P

RINCIPES ET MECANISMES DE BASE