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

C# Discussion :

utilisation des méthodes partielle [Débutant]


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut utilisation des méthodes partielle
    bonjours tous le monde !!
    j ai un gros problème de compréhension de mot clef partiale avec les methode
    ,il me semble par fois après la lecture de quelque article dans MSDN que en peut
    implémenter la méthode plusieurs fois dans différente partie mai j ai fait la même chose (implémenter la methode(2 >=fois)) mais rien a signaler (MESSAGE : une méthode partiale ne peut pas être implémenter plusieurs fois) .
    laissons sa a part !! un autre problème de compréhension de l utilisation des méthode partiale alors il est citer (ou je me suis tromper) dans MSDN qu on peut poser l definition ou la signature de la méthode dans une partie de la classe partiale et l implémenter dans une autre partie après avoir tester une condition sur laquelle en prend la decision si en l implémenté ou pas ,mais a ce point la je suis totalement perdu.
    alors est ce qu il y a quel qu un qui peut m aider a comprendre comment manipuler des méthode partiale et c est quoi leur utilité sachant que c est ma première participation et merci d avance.

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Les méthodes partielles sont utilisées par les générateurs de code. Le problème des fichiers générés est que tu ne peux pas modifier le code sous peine qu'il soit écrasé à la prochaine génération. Les méthodes partielles permettent de "personnaliser" le code généré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    partial void OnBeforeTest();
    public void Test()
    {
        OnBeforeTest();
        // plein de code utile
    }
    Dans certains cas cela peut être utile d'implémenter la méthode OnBeforeTest. Dans d'autre cas cela n'a aucun intérêt.

  3. #3
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Les méthodes partielles sont utilisées par les générateurs de code.
    Oui, mais pas que. Il est possible d'utiliser les classes partielles pour découper une classe en plusieurs morceaux.

    Ainsi on peut avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    partial class Users
    {
        public string GetUserName(int userId)
        {
            //....
        }
    }
    Et dans un autre fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    partial class Users
    {
        public bool IsUserChuckNorris(int userId)
        {
            return GetUserName(userId) == "Norris";
        }
    }

    Et on peut donc utiliser la class Users comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Program
    {
        public void Main()
        {
            var users = new Users();
     
            var username = users.GetUserName(10);
            var isChuckNorris = users.IsUserChuckNorris(10);
        }
    }
    Les classes partielles sont très pratiques pour découper une classe en plusieurs fichiers.

    Etanne
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  4. #4
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Oui, mais pas que. Il est possible d'utiliser les classes partielles pour découper une classe en plusieurs morceaux.
    Sa question ne portait pas sur les classes partielles mais sur les méthodes partielles, si j'ai bien déchiffré la question (c'est pas facile sans les apostrophes et les nombreuses fautes d'orthographe).
    En effet les classes partielles peuvent être utilisées même sans générateur de code.

  5. #5
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Effectivement après déchiffrage...
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  6. #6
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Citation Envoyé par ay-escoba Voir le message
    c est quoi leur utilité sachant que c est ma première participation et merci d avance.
    L'utilité des classes partielles...

    Disons que C# a décidé que les .h (C++ natif), ça ne servait à rien. Les extensions C# sont .cs, et l'on peut mettre tout le code d'une classe à l'intérieur (déclaration/implémentation). La philosophie du truc, c'est, j'ai tout le code dans un seul fichier, ni de .h ni de .cpp.

    Le principe n'est pas mauvais, mais c'était mal connaître l'expérience du C++ natif.

    Et donc ils sont rendus compte que tout le code dans un même fichier, c'est parfois compliqué, les #pragma region n'y faisant rien. Il fallait bien séparer le code du designer et le code du développeur, sous peine d'arrachage de cheveux. Je fais du C++/Cli, il n'y a pas de partial class, c'est l'horreur.

    Alors ils ont implémenté les partial class/method. Oui parce que mettre toutes les méthodes dans un seul fichier, c'est problématique pour l'ergonomie. C'est déjà problématique avec le designer. Et pour faire un peu comme le C++ natif, au lieu d'utiliser un .h, ils inventent les "partial method". C'est juste pour avoir une souplesse d'organisation dans les fichers.

    Bref les méthodes partielles, c'est comme en C++ natif. Tu déclares dans un .h et tu implémentes dans un .cpp. En C# tu déclares dans un .cs, et tu implémentes dans un autre .cs. C'est juste pour une organisation de code.

    Dans le cas du C#, l'explorateur de classe prend tout son sens.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    je crois que la vision est encore flou !!
    alors je repose ma question une autre fois en attendant des repenses bien détaillés :
    + comment implémenter une methode partielle deviser sur plusieurs partie d une classe partielle (2<nombre de partie) . ou d une manier général comment utiliser une methode partielle.
    + et simplement pourquoi les utilités .
    et merci d avance a tout les participants !!!!

  8. #8
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Utilisation des méthodes partielles
    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
     
        public partial class Test
        {
            partial void OnBeforeA();
            partial void OnAfterA();
     
            void A()
            {
                OnBeforeA();
     
                Console.WriteLine("A");
     
                OnAfterA();
            }
        }
     
        public partial class Test
        {
            partial void OnBeforeA()
            {
                Console.WriteLine("BeforeA");
            }
        }
    Utilité : seulement pour le code généré. Autrement ca n'a aucun intérêt.
    Imagine que la première classe soit une classe générée, il est impossible de la modifier sous peine que les modifications soient écrasées à la prochaine génération du code.
    Les méthodes partielles permettent au générateur de code de laisser des points de modification du code généré. Dans l'exemple tu peux par exemple ajouter un comportement personnalisé au début de la méthode A et à la fin de la méthode A si nécessaire.

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

Discussions similaires

  1. BCB C++ / Utilisation des méthodes privées
    Par a_lincoln54 dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/06/2008, 17h11
  2. Réponses: 14
    Dernier message: 08/04/2008, 16h42
  3. Réponses: 5
    Dernier message: 25/03/2008, 11h31
  4. Utilisation des méthodes de classe dans une autre classe
    Par ChriGoLioNaDor dans le forum C++
    Réponses: 4
    Dernier message: 28/07/2007, 15h10
  5. Réponses: 1
    Dernier message: 09/03/2006, 18h15

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