La POO - Le code

12/03/2013 10:00

Maintenant que nous avons décrit les modèles et leurs héritages il faut implémenter le code dans les modèles et dans les fenêtres.

 

Voici le shéma des modèles : Modele_Base --> Modele_Traitement --> Fenetre_Cloture

Les deux modèles et la fenêtre vont être attachés à une classe.

 

Création de la classe de base :

 

Voici la classe ClasseFenetreBase permettant de gérer le modele Modele_Base :

Etant donné que c'est la classe du modèle de base, elle n'hérite de rien, c'est le niveau le plus élevé de la hiérachie de classe. Cette classe possède juste une méthode vQuitte(). Cette méthode sera appelée lorsque l'on cliquera sur le bouton "Quitter".

 

Implémentation du code dans le modèle :

 

Remarquez la syntaxe un peu différente d'une déclaration "classique" d'instance de classe, c'est à dire sous forme : objFenetre est un objet ClasseFenetreBase

 

Pourquoi ?

 

Et bien parce que dans les déclarations des modèles et des fenêtres dérivées il y aura une syntaxe qui permettra de réallouer l'objet objFenetre à un autre type de classe. Voici ce que ça donne :

    

 

Noter qu'on travaille toujours sur l'objet objFenetre

 

Implémentation des méthodes de la classe dans les objets du modèle :

 

Dans notre modèle de base, seul le bouton "Quitter" sera codé (c'est d'ailleurs la seule action possible sur ce modèle)

NOTE : le "petit vé' devant le nom de la méthode permet de savoir quel type de valeur sera retourné par la fonction. Dans ce cas cette fonction ne retourne rien  ("v" pour Void ... vieille culture C). De même une méthode retournant un booléen pourrait être préfixée par "b", "s" pour une chaine, etc... Je préfixe "x" lorsque le type retourné peut être différent selon le cas (variant par exemple).

 

Si on exécute la fenêtre FenetreCloture et qu'on clique sur le bouton "Quitter" la méthode vQuitte() de la classe de base sera exécutée. Toutes les fenêtres dérivées de Modele_Base auront ce comportement.

 

Notez l'avantage considérable en terme d'homogénéité et de temps passé !

 

Shéma pour éclaircir le fonctionnement :

 

Lorsque l'utilisateur clique sur le bouton "Quitter" de la fenêtre FenetreCloture le code exécuté est celui  de la classe de base car cette méthode vQuitte() n'est pas implémenté dans les classes dérivées.

 

Ajout d'une méthode vQuitte() dans la classe ClasseTraitement :

 

On a décidé de changer le libellé du message de fermeture de fenêtre pour les traitements.

Lorsqu'on cliquera sur le bouton "Quitter" le code exécuté sera celui de la classe la plus proche dans la hiérarchie des classes, donc celui de la classe ClasseTraitement :

 

NOTE : dans la déclaration de la méthode le mot VIRTUELLE indique que le méthode peut être surchargée, c'est à dire qu'elle peut être écrite dans une classe dérivée.

 

 

Ajout d'une méthode vQuitte() dans la classe ClasseCloture :

 

Fonctionne exactement de la même manière, à savoir qu'on peut à nouveau surcharger la méthode vQuitte, par exemple pour afficher un message encore plus spécialisé, tel que : "Annuler la cloture ?".

 

 

A suivre ...