Interfaces (model)

De Wiki1000

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

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.

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

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.

Outils personnels