IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Implements pour de l'héritage?


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Par défaut Implements pour de l'héritage?
    Bonjour,

    J'aimerais faire quelque chose qui se rapproche de l'héritage POO, mais apparemment c'est plus compliqué qu'en Java ou C++.

    Pour s'en rapprocher, j'ai cru comprendre qu'il fallait utiliser Implements mais d'une je suis pas sûr et de deux j'ai l'erreur du "object module needs implements PropriétéClasseMère for interface ClasseMère" dans la classe fille.

    J'ai chercher sur le net et lu tout le forum sur héritage/polymorphisme mais ça n'a pas résolu mes erreurs de syntaxe.

    Dans ma classe mère,Piece j'ai une liste de propriétés (je n'en ai mises que 2 pour simplifier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Explicit
     
    Public Ref As Integer
    Public Typ As String
    Déjà là je ne sais pas si je suis obligé de mettre des méthodes Get et Set vu qu'on que MaPiece.Ref renvoie renoie la valeur de Ref et que MaPiece.Ref = blahblah attribue blahblah à Ref. On peut bien faire comme ça ?

    et dans ma classe fille,Cremaillere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Explicit
     
    Implements Piece
    Le message d'erreur me dit "object module needs implements Ref for interface Piece".
    J'ai essayé de rajouter des methodes Get et Set mais il y a toujours l'erreur...

    Autre question, si j'ai bien compris toutes les méthodes, fonctions, procédures,etc de la classe mère doivent être définies dans la classe fille en rajoutant devant le nom de la fonction,méthode,etc... un NomDeClasseMère_ ?

    Merci de m'éclairer

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    en fait c'est dans la classe fille que tu dois définir les méthodes Property Get et Porperty Let (Property Set est pour les variables Objets) pour que l'implémentation soit correcte, tant qu'il manque est une deux procédures tu auras une erreur.
    Dès lors que tu as utilisé le mot clé Implements. Tu verras dans le combobox de la classe fille(au-dessus de la fenêtre de code) , le nom de la classe mère parmi la liste des classes disponibles, et dans le combobox de droite, l'ensemble des méthodes à implémenter.

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,
    à toute fin utile, le cours sur les modules de classe : http://sinarf.developpez.com/access/vbaclass/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Par défaut
    jpcheck: Merci pour ce lien, ça m'a éclairci les idées

    ilank: Merci, plus d'erreur de compilation

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut Une modélisation proche de l'héritage en VBA: procédures polymorphes + interface
    Bonjour à tous, et plus particulièrement dalmasma !

    Puisque la notion d'héritage n'existe pas en programmation objet VBA, voilà une méthode simple pour s'en approcher.
    En guise de précaution, je vous dis tout de suite que cette vision est réductrice et qu'elle ne revendique pas le terme "héritage".

    Admettons que l'objectif de l'héritage est double:
    (1) réutiliser des méthodes,
    (2) décrire une hiérarchie de classes dont le "comportement" est hérité, mais peut être adapté à la classe par redéfinition de méthodes (polymorphisme).

    Habituellement, dans les langages de programmation objet ces deux aspects sont plus ou moins combinés au sein d'une hiérarchie de classes.

    En VBA qui ne permet pas l'héritage, pour obtenir une modélisation qui s'approche de l'héritage, je propose de bien séparer ces deux aspects en utilisant:
    (1) d'une part des "procédures polymorphes", pour la réutilisation de code générique (qui n'est pas spécifiquement lié à une classe),
    (2) et d'autre part, des classes qui implémentent une "classe-interface", pour la redéfinition de méthodes.
    (3) En plus, on peut encapsuler une "classe de base" dans une "classe dérivée", en vue de réutiliser les méthodes spécifiques de la classe de base.

    Bien entendu, les "procédures polymorphes" se basent sur le type "classe-interface".

    Au final, cette modélisation dichotomique peut s'avérer suffisamment satisfaisante pour quiconque aurait besoin de mettre en œuvre un pseudo héritage.

    En revanche, je ne vois pas comment définir une hiérarchie de classes de façon simple.

    Pour plus de détails, on peut relire la discussion Polymorphisme avec VBA: implémentation d'interface.
    _

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Par défaut
    Bonjour JBO,

    Tu veux dire quoi par
    je propose de bien séparer ces deux aspects
    (entre parenthèse après ta dernière modif tu as oublié de remplacer "deux" par "trois")

    On regroupe bien tous ces aspects dans chaque sous classe, non ?

    En revanche, je ne vois pas comment définir une hiérarchie de classes de façon simple.
    Ce n'est pas le but d' ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 22
    Dernier message: 31/07/2015, 10h28
  2. Règles pour utiliser l'héritage
    Par wafiwafi dans le forum UML
    Réponses: 1
    Dernier message: 22/07/2012, 20h09
  3. Quelle implementation pour stocker des données
    Par jfouche dans le forum C++
    Réponses: 2
    Dernier message: 11/08/2010, 21h07
  4. [information]implementation pour une heap
    Par trolldom dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 16/11/2006, 20h03
  5. [RMI] Probleme pour retrouver la classe implementée.
    Par Koko22 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/09/2004, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo