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

WinDev Discussion :

Besoin d’aide pour développer un composant WinDev (.WDC) orienté objet (CLASSE)


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Aooka
    Homme Profil pro
    Scripting Powershell & Wlangage
    Inscrit en
    Juillet 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Scripting Powershell & Wlangage

    Informations forums :
    Inscription : Juillet 2015
    Messages : 231
    Par défaut Besoin d’aide pour développer un composant WinDev (.WDC) orienté objet (CLASSE)
    Bonjour à tous,

    Je suis en train de me lancer dans mon tout premier projet en programmation orientée objet (POO) sous WinDev, et j’aimerais avoir un peu d’aide pour bien démarrer.
    L’objectif principal de ce projet est d’apprendre les bases de la POO (les classes) ainsi que la création et l’utilisation de composants .WDC.

    Mon projet :
    Je souhaite développer un petit composant qui permettra de manipuler plusieurs types de fichiers (CSV, JSON, XML, HTML).
    Cependant, pour commencer, je vais me concentrer uniquement sur les fichiers CSV afin de rester simple.

    Mon but est de travailler exclusivement avec des classes (et pas de procédures globales), pour respecter au maximum les principes de la POO.

    Voici ce que je veux mettre en place :

    • Une structure orientée objet

    • Une classe parente abstraite appelée CFileAccess.
    • Une classe enfant appelée CFileAccess_CSV qui implémentera les fonctionnalités spécifiques aux fichiers CSV.

    • Membres des classes

    • m_ouvre: Permet d’ouvrir un fichier en prenant comme argument le chemin du fichier.
    • m_ferme: Ferme le fichier ouvert.
    • m_remplace: Remplace une chaîne de caractères par une autre dans le fichier. Arguments :
    • La chaîne à remplacer.
    • Le texte à mettre à la place.
    • m_recherche: Recherche une chaîne dans le fichier. Argument :
    • La chaîne à chercher.

    Mon problème est global

    Je ne sais pas trop par où commencer pour structurer ce projet :

    • Dois-je d’abord créer mes classes avec des membres vides pour tester ?
    • Quels sont les points importants à respecter pour que le composant soit modulaire et réutilisable ?
    • Y a-t-il des pièges à éviter en créant ce genre de composant ?

    Je suis preneur de :

    • Tutoriels, guides ou ressources (même basiques) pour comprendre les principes de la POO dans WinDev.
    • Exemples de code qui pourraient ressembler à ce que je veux réaliser.
    • Conseils pour bien structurer mon composant dès le départ.


    Je précise que c’est mon premier projet orienté objet sous WinDev, donc mon objectif est d’apprendre les bonnes pratiques en POO tout en découvrant la création de composants .WDC.

    Merci d’avance à tous ceux qui prendront le temps de m’aider !
    Toute contribution, qu’elle soit technique ou pédagogique, sera grandement appréciée. 😊

    En vous remerciant tous par avance,
    Bonne journée,

    Aooka

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 68
    Par défaut
    Très bonne initiative et intéressante d'un point de vue pédagogique.

    Pour le début, il faut commencer simple et se faire s'approprier la méthode.

    WinDev est intéressant pour faire de l'objet, même si c'est peu rependu.

    Commence par ta classe abstraite, et implémente les méthodes dans ta classe dérivée.

    Apres, il ne reste qu'a remplir les méthodes.

    Bon courage

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 949
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Dans un premier temps, le concept objet inclus la "redistrbuabilité" des classes,la "famille" de ta classe (i.e. les classes ayant trait au même concept) e.g. Les classes ayant trait à la théorie des graphes. Dans le cas d'une classe unique, la création d'un composant est inutile, une simple importation depuis le GDS fera l'affaire
    Dans un deuxième temps, m_ouvre, m_ferme, m_remplacec et m_recherche ne sont pas des membres mais des méthodes.

    Règle n° 1 l'utilisateur ne doit avoir accès qu'aux membres qui lui sont nécessaires.
    Corolaire : les membres déclarés PRIVE (sauf dans le cas des classes ancêtres où les membres utiles aux classes héritées seront PROTEGE.
    L'accès aux membres se fera via des getters (récupération des valeurs) et des setters (affectation des valeurs), propriétés en WD.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    CFichier est une Classe
    PROTÉGÉ
    	m_saChemin est une chaîne		//Chemin du fichier
    	m_nOuverture est entier			//Mode d(ouverture)
    	m_ptrHandle est entier système	//Handle du fichier obtenu via fOuvre
    FIN
     
    PROCÉDURE Constructeur() //1/2
    :m_nOuverture est entier=foLectureEcriture
     
    PROCÉDURE Constructeur(saChemin est chaîne,nOuverture est entier=foLectureEcriture) //2/2
    //Surcharge du constructeur
    :m_saChemin=saChemin
    :m_nOuverture=nOuverture
     
     
    PROCÉDURE Destructeur()
     
     
    PROCÉDURE PUBLIQUE p_Chemin(saChemin est une chaîne)
    m_saChemin=saChemin
     
    PROCÉDURE PUBLIQUE p_Ouverture() : entier
    //Getter
    RENVOYER m_nOuverture
     
    PROCÉDURE PUBLIQUE p_Ouverture(nValeur est un entier)
    //Setter
    m_nOuverture=nValeur
     
     
    PROCÉDURE Ouvrir()
    m_ptrHandle=fOuvre(:m_saChemin,:m_nOuverture)

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 72
    Par défaut
    Bonjour Aooka,

    Très bonne initiative !
    Je te conseille une lecture très utile : Design Patterns Tête la première

    C'est un outil sous forme d'apprentissage avec des épreuves en fin de chapitre et solution

    Un petit résumé par Grock
    Introduction aux Design Patterns :
    Le livre commence par expliquer ce que sont les design patterns, pourquoi ils sont utiles, et comment ils peuvent être appliqués pour résoudre des problèmes communs dans la conception de logiciels.

    Patterns Spécifiques :
    Il couvre plusieurs des design patterns les plus connus du "Gang of Four" (GoF), tels que :
    > Singleton : Assure qu'une classe n'a qu'une seule instance et fournit un point d'accès global à cette instance.
    > Strategy : Définit une famille d'algorithmes, encapsule chacun d'eux et les rend interchangeables.
    > Observer : Définit une dépendance un-à-plusieurs entre objets de sorte que lorsqu'un objet change d'état, tous ses dépendants sont notifiés et mis à jour automatiquement.
    > Factory Method : Définit une interface pour créer un objet, mais laisse les sous-classes décider quelle classe instancier.
    > Decorator : Ajoute des responsabilités à un objet dynamiquement.
    Et beaucoup d'autres comme Adapter, Facade, Template Method, etc.

    Exemples Pratiques et Scénarios :
    Chaque pattern est illustré par des exemples concrets, souvent basés sur des situations de la vie réelle ou des cas d'utilisation dans le développement logiciel.

    Conseils et Anti-Patterns :
    Le livre ne se contente pas de présenter les patterns mais donne aussi des conseils sur quand utiliser un pattern, quand l'éviter, et discute des "anti-patterns" ou pratiques à éviter.
    ...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Par défaut
    Bonjour

    Je vous propose une bonne base de travail avec les classes cFichier et cFichierTexte de Betula : https://wlplus.org/betula/fic/

    Bon dev !

Discussions similaires

  1. [XL-MAC 2016] Besoin daide pour changement de couleur case
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2017, 09h27
  2. besoins daide pour couper chaine
    Par dknafoweb dans le forum Langage
    Réponses: 1
    Dernier message: 09/09/2014, 16h21
  3. Réponses: 0
    Dernier message: 28/05/2014, 10h34
  4. Réponses: 13
    Dernier message: 29/04/2014, 23h27

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