Académique Documents
Professionnel Documents
Culture Documents
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
-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
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.
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.
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
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.
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.
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.
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.
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.
-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
III - Conclusion
Nous venons de voir à travers ce document comment déclarer une classe 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/