Interface - Définition d'un type interface

Syntaxe...
Description...
Exemple...
Voir aussi...
Traduction...

Instruction. Définition d'une nouvelle interface.

Interface NomDeLInterface ParametrageDuType HeritageDeLInterface
InflexionInterface
ListeDeComposantsDUnType
Fin Interface

Interface NomDeLInterface Recursif;

Revenir en haut de la page...

L'instruction Interface permet de définir un type de données servant d'interface entre deux parties du programme. Une interface peut être vue comme un contrat passé entre ces deux parties du programme. Concernant les interfaces, il y a trois acteurs : Le principe est de définir par avance des services utilisables par des clients sans pour autant connaître le ou les serveurs. Des serveurs pourront être ajoutés ultérieurement, voire être remodeler sans que cela ait une quelconque incidence pour le client. La seule contrainte est que les serveurs respectent toujours l'interface, ce dont Up ! Application System est garant.

L'éditeur, le client, le serveur peuvent être dans le même composant, mais cela n'est pas le plus intéressant. Le mieux est de répartir les clients et les serveurs dans des modules séparés et de charger les modules implémentant les interfaces dynamiquement.

Une fois définie, l'interface se comporte comme un type défini par l'instruction Type, si ce n'est que tous les objets déclarés de ce type doivent être précédés de Nul Ou. En effet, le type implémentant l'interface n'étant pas à priori connu, il est impossible d'invoquer son constructeur implicite pour l'initialisation des objets.

Un type implémente une interface au moyen de l'instruction Implemente. En ce cas, toutes les méthodes de l'interface doivent être présentes dans la définition du type, avec les mêmes prototypes et les mêmes droit d'accès.

Revenir en haut de la page...

Public :

/* Interface définissant le comportement d'un objet à dessiner. */
Protege :
Public :
Fin Interface

ImporterModule M1(<M1.upi>);

Public :
Type TCercle Implemente M1.IObjetADessiner
/* Un cercle est un objet à dessiner particulier. */
Public :

Fin Type

Procedure TCercle.Selectionner(S:Booleen)
/* Sélection du cercle. */
Debut
...
Fin Procedure

Fonction TCercle.Deplacer(PX : Entier, PY : Entier) Retourner Booleen
/* Déplacement du cercle. */
Debut ...
Fin Fonction

Fonction TCercle.Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen
/* Agrandissement du cercle. */
Debut
...
Fin Fonction

Procedure Dessiner()
/* Dessin du cercle. */
Debut
...
Fin Procedure

ImporterModule M1(<M1.upi>);

Public :
Type TCarre Implemente M1.IObjetADessiner
/* Un carré est un objet à dessiner particulier. */
Public :

Fin Type

Procedure TCarre.Selectionner(S:Booleen)
/* Sélection du carré. */
Debut
...
Fin Procedure

Fonction TCarre.Deplacer(PX : Entier, PY : Entier) Retourner Booleen
/* Déplacement du carré. */
Debut
...
Fin Fonction

Fonction TCarre.Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen
/* Agrandissement du carré. */
Debut
...
Fin Fonction

Procedure TCarre.Dessiner()
/* Dessin du carré. */
Debut
...
Fin Procedure

Principal
Variable

Debut M=Module("M2");
/* Le module M2 contenant le serveur 'cercle' est chargé dynamiquement. */
A=M.NouvelObjet(IObjetADessiner);
/* Création d'un objet à dessiner. Pour ce serveur, il s'agit d'un cercle. */
A.Dessiner();
/* Dessin du cercle. */
M=Nul;
/* Déchargement du serveur 'cercle'. */
...
M=Module("M3");
/* Le module M3 contenant le serveur 'carré' est chargé dynamiquement. */
A=M.NouvelObjet(IObjetADessiner);
/* Création d'un objet à dessiner. Pour ce serveur, il s'agit d'un carré. */
A.Dessiner();
/* Dessin du carré. */
M=Nul;
/* Déchargement du serveur 'carré'. */
Fin Principal

Revenir en haut de la page...
Type pour définir un type.

Metier pour définir un type métier.

Revenir en haut de la page...

SchnittstelleInterface界面Interfaz----

Revenir en haut de la page...