Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Classes abstraites en Windev

WinDev est un EDI édité par la société française PC Soft et conçu pour développer des applications. Il propose son propre langage appelé le WLangage. Plus d'informations sur le site officiel. Dans cet article, nous allons voir comment déclarer une classe abstraite en WinDev.

1 commentaire Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Qu'est-ce qu'une classe abstraite ?

En programmation orientée objet (POO), une classe abstraite est une classe qui ne peut être instanciée. Elle ne peut être utilisée que comme classe de base dans une relation d 'héritage. En général, dans ce genre de classe, seules les déclarations de méthodes sont définies, et il faudra écrire le contenu des méthodes dans les classes dérivées. Une classe abstraite permet aussi de définir les caractéristiques communes à plusieurs classes.

II. WinDev et les classes abstraites

Depuis les dernières versions WinDev a amélioré la possibilité de programmer en objet. Avant la version 19, on ne pouvait pas définir si elle est publique ou abstraite. Nous pouvons pallier cela en changeant l'accès du constructeur. Cette astuce permettra de créer une classe non instanciable et donc abstraite. Nous allons découvrir cette possibilité à l'aide d'un exemple et nous verrons comment délcarer une classe abstraite depuis la version 19.

II-A. Définition des classes

Nous allons définir 2 classes :

  • ac_document : représente un objet de type document.

    Elle est composée de 3 attributs :

  • ls_auteur : auteur du document.

  • ls_titre : titre du document.

  • ls_reference : référence du livre.

    Ces 3 attributs possèdent des propriétés en lecture et en écriture.

  • pc_livre : représente un livre et hérite de ac_document.

Elle hérite des 3 attributs de ac_document et on y ajoute un attribut

li_nbPage : nombre de pages du livre.

L'attribut possède des propriétés en lecture/écriture.

Code de la classe ac_document
TéléchargerSélectionnez
ac_document est une Classe
PRIVÉE 
    ls_auteur est une chaîne
    ls_titre est une chaîne
    ls_reference est une chaîne
FIN

PROCEDURE auteur()
RENVOYER :ls_auteur
PROCEDURE auteur(ps_auteur est une chaîne)
:ls_auteur = ps_auteur

PROCEDURE Titre()
RENVOYER :ls_titre
PROCEDURE Titre(ps_titre est une chaîne)
:ls_titre = ps_titre

PROCEDURE Reference()
RENVOYER :ls_reference
PROCEDURE Reference(ps_reference est une chaîne)
:ls_reference = ps_reference
PROCEDURE PUBLIC Constructeur()
//Pas de code
Code de la classe pc_livre
TéléchargerSélectionnez
pc_livre est une Classe
    hérite de ac_document
PRIVÉE
    li_nbPage est un entier
FIN

PROCEDURE NbPages()
RENVOYER :li_nbPage
PROCEDURE NbPages(pi_nbPages est un entier)
:li_nbPage = pi_nbPages

PROCEDURE Constructeur()
Ancêtre:Constructeur()

Nous laissons l'accès des constructeurs public pour visualiser le comportement de WinDev, ensuite nous changerons celui de la classe ac_document.

II-B. Instanciation des classes

Les classes étant créées, je vais les instancier dans le code d'initialisation d'une fenêtre.

Code de la fenêtre
TéléchargerSélectionnez
lo_document est un ac_document()
lo_livre est un pc_livre()

WinDev ne génère pas d'erreur de compilation, il nous laisse la possibilité d'instancier un objet de type ac_document.

II-C. Avant la version 19

Dans ce paragraphe nous allons voir comment contourner l'absence de notion de classe abstraite avant la version 19. Pour pourvoir introduire une « notion » de classe abstraite dans notre projet, nous allons modifier l'accès du constructeur « ac_document ». L'accès devient protégé. Maintenant retournons à notre code où sont instanciés les objets. WinDev a généré une erreur de compilation.

Avec le message suivant :

Erreur :Le support des constructeurs privés est disponible à partir de la version 16 (permet de réaliser des classes abstraites, des interfaces, ou des "factory").

Le constructeur de la classe 'ac_document' n'est pas public, la création d'une instance de 'ac_document' est interdite.

EXPRESS_Fenêtre1, Initialisation, ligne 1, colonne 20

II-D. Depuis la version 19

Depuis la version 19 WinDev introduit un nouveau mot clé « abstraite » permettant de déclarer une classe abstraite, voyons cela avec une mise en application.

Exemple d'utilisation du mot clé abstraite
Sélectionnez
ac_document est une Classe, abstraite
PRIVÉE 
ls_auteur est une chaîne
ls_titre est une chaîne
ls_reference est une chaîne
FIN

III. Conclusion

Nous venons de voir à travers ce document comment déclarer une classe abstraite

- avant la version 19 ou WinDev ne gérait pas explicitement les classes abstraites ;

- après la version 19, avec l'introduction du mot clé « abstraite ».

EDIT : 19/03/2016, mise à jour de l'article initiale pour prendre en compte la nouveauté de la version 19.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 dsr57. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.