Interfaces (model)

De Wiki1000
(Différences entre les versions)
(Représentation dans les diagrammes)
Ligne 7 : Ligne 7 :
 
{{#images:image1.png|dsm/modele/interface}}
 
{{#images:image1.png|dsm/modele/interface}}
  
Une interface n’étant pas une classe, il n’existe pas d’objet d’une interface.
+
{{info|Une interface n’étant pas une classe, il n’existe pas d’objet d’une interface.}}
  
 
===Interfaces supportées par une classe===
 
===Interfaces supportées par une classe===
Ligne 22 : Ligne 22 :
 
Lors de la validation du dialogue, les attributs et les opérations présents dans l’interface seront automatiquement ajoutés à la classe.
 
Lors de la validation du dialogue, les attributs et les opérations présents dans l’interface seront automatiquement ajoutés à la classe.
  
Il peut se produire des conflits lorsque les attributs ou les opérations d’une interface sont déjà définis au niveau de la classe.
+
{{warning|
 +
Il peut se produire des conflits lorsque les attributs ou les opérations d’une interface sont déjà définis au niveau de la classe.
  
Il ni a pas de mécanisme qui s'assure que les classes supportant une interface restent cohérentes lorsque l'interface est modifiée.
+
Il ni a pas de mécanisme qui s'assure que les classes supportant une interface restent cohérentes lorsque l'interface est modifiée.}}
  
 
===Fabrique d'interface===
 
===Fabrique d'interface===
Ligne 31 : Ligne 32 :
 
Exemple  
 
Exemple  
  
<pre>
+
<source lang='delphi'>
 
procedure foo();
 
procedure foo();
 
var intf:IUneChaine;
 
var intf:IUneChaine;
Ligne 39 : Ligne 40 :
 
   ...
 
   ...
 
end;
 
end;
</pre>
+
</source>
  
C'est une erreur de définir plusieurs fabriques pour une interface à l'intérieur d'une Application
+
{{info|C'est une erreur de définir plusieurs fabriques pour une interface à l'intérieur d'une Application.}}
  
 
La case à cocher disponible sur la ligne de l'interface permet d'indiquer que la classe est une factory de l'interface.
 
La case à cocher disponible sur la ligne de l'interface permet d'indiquer que la classe est une factory de l'interface.
Ligne 52 : Ligne 53 :
 
Définir une relation entre une classe et une interface sous entend que la relation peut contenir des objet de classes différentes.
 
Définir une relation entre une classe et une interface sous entend que la relation peut contenir des objet de classes différentes.
  
Lorsque une relation est définie sur une interface il n’y a pas de clé étrangère créée dans la base de données.
+
{{info|Lorsque une relation est définie sur une interface il n’y a pas de clé étrangère créée dans la base de données.}}
  
 
===Représentation dans les diagrammes===
 
===Représentation dans les diagrammes===
Ligne 65 : Ligne 66 :
 
La combo box propose les classes supportant l’interface dans toutes les bases de données associées à l’application, toutefois il n’est pas possible d’afficher simultanément tous les objets sélectionnables de toutes les classes dans la même liste.
 
La combo box propose les classes supportant l’interface dans toutes les bases de données associées à l’application, toutefois il n’est pas possible d’afficher simultanément tous les objets sélectionnables de toutes les classes dans la même liste.
  
 +
{{Footer|Modèle}}
 
[[category:Modèle]]
 
[[category:Modèle]]

Version du 16 juillet 2009 à 15:45

Sommaire

Introduction

Une interface définit un ensemble de services supportés par une classe. Une interface est supportée par une classe lorsque la classe implémente l’ensemble des services définis dans l’interface.

Définition d’interfaces

Une interface est définie exactement comme une classe, elle comporte des attributs, des méthodes et des relations avec d’autre interfaces.

image1.png

Info-20px.png Note : Une interface n’étant pas une classe, il n’existe pas d’objet d’une interface.

Interfaces supportées par une classe

Une classe supporte une interface si elle implémente exactement les éléments de l’interface. Une classe peut supporter plusieurs interfaces.

Pour définir les interfaces supportées par une classe :

Dans le dialogue de propriété d'un classe, sur l'onglet Interface

  1. Cliquer sur le bouton Ajouter
  2. Sélectionner l'interface souhaitée.

image1.png

Lors de la validation du dialogue, les attributs et les opérations présents dans l’interface seront automatiquement ajoutés à la classe.

Exclam-20px.png Attention :

Il peut se produire des conflits lorsque les attributs ou les opérations d’une interface sont déjà définis au niveau de la classe.

Il ni a pas de mécanisme qui s'assure que les classes supportant une interface restent cohérentes lorsque l'interface est modifiée.

Fabrique d'interface

Une fabrique d'interface est une classe supportant l'interface pour laquelle ont défini qu'elle constitue une fabrique (factory). Lorsqu'une fabrique d'interface est définie il est alors possible de créer une instance de l'interface : c'est une instance de la classe fabrique qui est créée.

Exemple

procedure foo();
var intf:IUneChaine;
begin
  // crée une instance de la factory de l'interface
  intf := IUneChaine.Create;
  ...
end;
Info-20px.png Note : C'est une erreur de définir plusieurs fabriques pour une interface à l'intérieur d'une Application.

La case à cocher disponible sur la ligne de l'interface permet d'indiquer que la classe est une factory de l'interface.

Utilisation dans les relations

Les interfaces sont utilisables dans les relations à la place des classes, une classe peut naviguer vers une interface mais une interface ne peut pas naviguer vers une classe

Les relations de classes vers interfaces sont nécessairement des références de multiplicité 0..1 ou 1. Il n’est pas possible de définir des relations listes ou associations entre une classe et une interface.

Définir une relation entre une classe et une interface sous entend que la relation peut contenir des objet de classes différentes.

Info-20px.png Note : Lorsque une relation est définie sur une interface il n’y a pas de clé étrangère créée dans la base de données.

Représentation dans les diagrammes

image3.png

Utilisation des interfaces à l’exécution

A l’exécution un objet peut être ajouté a un rôle défini sur une interface si sa classe supporte l’interface.

Dans l’interface utilisateur (IHM), lorsque le rôle est défini sur une interface, l’utilisateur a la possibilité de sélectionner la classe des objets à associer sur les combo box :

La combo box propose les classes supportant l’interface dans toutes les bases de données associées à l’application, toutefois il n’est pas possible d’afficher simultanément tous les objets sélectionnables de toutes les classes dans la même liste.

ModèleDéveloppement DSM

Outils personnels