Interface
NomDeLInterface ParametrageDuType HeritageDeLInterfaceFin Interface
Interface
NomDeLInterface Recursif
;
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 :
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.
Public :
Interface IObjetADessiner
/***********************/
/* Interface définissant le comportement d'un objet à dessiner. */
Protege :
X : Entier Lecture Public;
Y : Entier Lecture Public;
Largeur : Entier Lecture Public;
Hauteur : Entier Lecture Public;
Public :
Procedure Selectionner(S:Booleen);
Fonction Deplacer(X : Entier, Y : Entier) Retourner Booleen;
Fonction Agrandir(X : Entier, Y : Entier, Largeur : Entier, Hauteur : Entier) Retourner Booleen;
Procedure Dessiner();
Fin Interface
ImporterModule M1(<M1.upi>);
Public :
Type TCercle Implemente M1.IObjetADessiner
/****************************************/
/* Un cercle est un objet à dessiner particulier. */
Public :
Constructeur();
Procedure Selectionner(S:Booleen);
Fonction Deplacer(PX : Entier, PY : Entier) Retourner Booleen;
Fonction Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen;
Procedure Dessiner();
Fin Type
/****************************************************************/
Procedure TCercle.Selectionner(S : Booleen)
/* Objet : Methode de selection du cercle. */
/****************************************************************/
Debut
...
Fin Procedure
/****************************************************************/
Fonction TCercle.Deplacer(PX : Entier, PY : Entier) Retourner Booleen
/* Objet : Methode de deplacement du cercle. */
/****************************************************************/
Debut
...
Fin Fonction
/****************************************************************/
Fonction TCercle.Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen
/* Objet : Methode d'agrandissement du cercle. */
/****************************************************************/
Debut
...
Fin Fonction
/****************************************************************/
Procedure TCercle.Dessiner()
/* Objet : Methode de dessin du cercle. */
/****************************************************************/
Debut
...
Fin Procedure
ImporterModule M1(<M1.upi>);
Public :
Type TCarre Implemente M1.IObjetADessiner
/***************************************/
/* Un carré est un objet à dessiner particulier. */
Public :
Constructeur();
Procedure Selectionner(S:Booleen);
Fonction Deplacer(PX : Entier, PY : Entier) Retourner Booleen;
Fonction Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen;
Procedure Dessiner();
Fin Type
/****************************************************************/
Procedure TCarre.Selectionner(S : Booleen)
/* Objet : Methode de selection du carre. */
/****************************************************************/
Debut
...
Fin Procedure
/****************************************************************/
Fonction TCarre.Deplacer(PX : Entier, PY : Entier) Retourner Booleen
/* Objet : Methode de deplacement du carre. */
/****************************************************************/
Debut
...
Fin Fonction
/****************************************************************/
Fonction TCarre.Agrandir(PX : Entier, PY : Entier, PLargeur : Entier, PHauteur : Entier) Retourner Booleen
/* Objet : Methode d'agrandissement du carre. */
/****************************************************************/
Debut
...
Fin Fonction
/****************************************************************/
Procedure TCarre.Dessiner()
/* Objet : Methode de dessin du carre. */
/****************************************************************/
Debut
...
Fin Procedure
Principal
/*******/
Variable
/******/
A : Nul Ou IObjetADessiner;
M : Nul Ou Module;
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
Metier pour définir un type métier.
- | - | - | - | - | - | - | - | - |