• Aucun résultat trouvé

3.2 LES ATTRIBUTS

3.2.5 Les relations sémantiques

grade : un Chaine)

nom_classe = Personne pré_declarés = (grade) attributs = (nom : un Chaine)

nom_classe = Enseignants attributs = (nom : un Chaine

...

grade : un Chaine)

nom_classe = Enseignants_Chercheurs attributs = (nom : un Chaine

...

grade : un Chaine)

Pré_déclaration de l'attribut grade

Définition de l'attribut

L' attribut est hérité une seule fois

Figure 3-10 : Un attribut pré-déclaré.

Dans la figure ci-dessus, l'attribut personne.grade est pré-déclaré dans la classe Personne. Ceci permet de "fixer" sa sémantique. Il s'agit du même attribut qui est ensuite défini dans les classes Enseignants et Chercheurs puis hérité dans Enseignants_chercheurs. Sans la pré-déclaration, il aurait fallu définir l'attribut dans la classe Personne alors que cet attribut n'est pas une caractéristique pertinente de toutes les personnes. Par exemple, la classe Parents, sous-classe de Personne en hériterait, même si l'on juge inutile sa valuation pour les instances de cette classe.

Les attributs pré-déclarés permettent, entre autre, de résoudre les cas de conflits d'héritage d'attribut lorsque l'attribut ne doit pas être instancié dans les super-classes communes aux classes en conflit. Les attributs pré-déclarés permettent aussi de maintenir la cohérence de la base quand, par exemple, on élimine la définition d'un attribut de sa classe d'origine. Celui-ci devient alors un attribut pré-déclaré.

3.2.5 Les relations sémantiques

Généralement, dans un modèle orienté objet, la notion d'attribut permet de définir la structure d'un objet ; les attributs ont tous la même sémantique. En représentation de connaissances, il est parfois nécessaire d'exprimer une sémantique sur un attribut [Bobrow77]. Dans ce cas,

sont indépendants pour pouvoir exprimer des liens de dépendance sur un attribut non-composite.

Nous présentons dans la suite les définitions sur les notions de lien de dépendance et de composition [Djeraba93b].

3.2.5.1 Lien de composition

Le lien de composition est plus connu dans la littérature sous le nom "est_partie_de" [Kim89]. Il permet de lier des objets appelés composants à un objet appelé composite. Un objet composite est un objet qui contient un ou plusieurs composants et donc un ou plusieurs liens de composition. Un graphe de composition est un graphe dont chaque arc est un lien de composition et dont chaque noeud est soit un objet composite, soit un objet composant, soit les deux à la fois. Exemple: Une voiture est composée de portes, d'un moteur, etc., et un moteur est composé d'un bloc-moteur, d'un démarreur, d'un alternateur, etc.

Voiture

Moteur Portes

Bloc-moteur Démarreur Alternateur

... Est composé de

Figure 3-11 : Décomposition de la voiture

Le graphe de composition n'est pas forcément un arbre. Un composant peut être référencé par deux objets composites différents. Exemple : un chapitre peut être composant de deux livres distincts.

3.2.5.2 Liens de dépendance

Le lien de dépendance définit une sémantique descriptive et comportementale sur la relation entre deux objets. Entre autres, il peut caractériser le lien de composition décrit ci-dessus. La spécification d'un lien de dépendance entre deux objets permet d'exprimer une sémantique de partage, d'exclusivité, d'existence, etc. Ces différents types de dépendance ont des sémantiques qui interviennent dans la création, la suppression, le changement de lien, la duplication et enfin la consultation et la recherche des objets.

Une ou plusieurs dépendances peuvent être associées à chaque attribut lors de sa définition dans une classe. Un lien de dépendance peut être défini de manière générique (dans la classe), il sera alors valable pour toutes les instances de cette classe, de même qu'il est possible de le définir, de manière spécifique, pour une instance donnée.

Llien de dépendance partagé

Un objet (émetteur) peut être référencé par plusieurs objets (récepteurs) à travers des attributs de dépendance partagé. L'objet partagé (émetteur) a une représentation unique, il n'est pas dupliqué. Que ce soit du point de vue utilisateur ou système, il s'agit d'un seul objet. Les récepteurs peuvent appartenir à la même classe ou à des classes différentes. Exemple : un livre est composé d'un ensemble de chapitres et de références bibliographiques. Une même référence bibliographique peut appartenir à deux livres différents. Par conséquent, la suppression ou la modification de la référence bibliographique "bibliographie1" se trouvant dans le livre1 implique respectivement la suppression ou la modification de la même référence bibliographique "bibliographie1" se trouvant dans le livre2.

Lien de dépendance exclusif

Si un objet (récepteur) référence un objet (émetteur) à travers un lien de dépendance exclusif, alors l'émetteur ne peut pas être référencé par un autre objet. Seul l'objet (récepteur) est le propriétaire au sens commun du terme de l'objet (émetteur). L'émetteur ne peut pas être valeur d'autres attributs qui sont en mode exclusif ou partagé. Exemple : il n'est pas concevable de considérer un moteur donné comme un composant de deux voitures. Par conséquent, le moteur ne peut être composant que d’une seule voiture. On dit alors que le moteur est lié à la voiture par un lien de dépendance exclusif.

Lien de dépendance existentiel

Le lien de dépendance existentiel met l'accent sur l'idée d'existence d'un objet (récepteur/émetteur) conditionnée par l'existence d'un autre objet (récepteur/émetteur). On peut avoir un lien de dépendance existentiel soit dans le sens émetteur-récepteur (existentiel_e_r) soit dans le sens récepteur-émetteur (existentiel_r_e).

Dans le cas d'un lien existentiel_r_e (resp. existentiel_e_r), la suppression d'un objet récepteur (resp. émetteur) implique la suppression de la valeur d'un de ses attributs émetteur (resp. récepteur). Cette suppression aura lieu même si l'émetteur (resp. récepteur) est référencé par un autre objet, que ce soit en mode partagé ou non partagé.

3.3 LES METHODES