Vous êtes sur la page 1sur 5

Classes abstraites en Windev

Par v. Formet - Dsr57

Date de publication : 4 octobre 2013

Durée : 15 minutes

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

Commentez
Classes abstraites en Windev par v. Formet - Dsr57

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


II - WinDev et les classes abstraites...........................................................................................................................3
II-A - Définition des classes................................................................................................................................... 3
II-B - Instanciation des classes.............................................................................................................................. 4
II-C - Avant la version 19.......................................................................................................................................4
II-D - Depuis la version 19.....................................................................................................................................4
III - Conclusion.............................................................................................................................................................5

-2-
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.
https://vformet.developpez.com/tutoriels/windev/2013/
Classes abstraites en Windev par v. Formet - Dsr57

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éclarer une classe abstraite depuis la version 19.

II-A - Définition des classes

Nous allons définir deux classes :

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


Elle est composée de trois attributs :

• ls_auteur : auteur du document,


• ls_titre : titre du document,
• ls_reference : référence du livre.

Ces trois 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 trois 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


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()

-3-
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.
https://vformet.developpez.com/tutoriels/windev/2013/
Classes abstraites en Windev par v. Formet - Dsr57

Code de la classe ac_document


//Pas de code

Code de la classe pc_livre


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
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 pouvoir 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


ac_document est une Classe, abstraite

-4-
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.
https://vformet.developpez.com/tutoriels/windev/2013/
Classes abstraites en Windev par v. Formet - Dsr57

Exemple d'utilisation du mot clé 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.

-5-
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.
https://vformet.developpez.com/tutoriels/windev/2013/

Vous aimerez peut-être aussi