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 :

Surcharge de méthodes


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Surcharge de méthodes
    Bonjour,

    Je développe un projet pour mon entreprise et je reste bloqué sur des problèmes de surcharge de méthodes.

    Explication du problème :

    J'ai une classe mère qui contient une méthode init.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     public virtual void init(string nom_Site, string nom_Lieu, string adr_Lieu, string cp_Lieu, string ville_Lieu, string ursaff, string siret, string titre_Signataire,string nom_Signataire, string prenom_Signataire, string fonction_Signataire, string nom_Salarie, string prenom_Salarie, string titre_Salarie, string adr_Salarie, string cp_Salarie, string ville_Salarie, string nationalite, string identification, string date_naissance_Salarie, string ville_naissance_Salarie, string date_embauche, string horaire_embauche, string date_signature, string periode_essai,string salaire, string nombre_Points, string valeur_Points, string date_Points)
    J'ai recopié cette méthode pour ses classes héritées en surchargeant la méthode afin de rajouter des valeurs dont j'avais besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public override void init(string nom_Site, string nom_Lieu, string adr_Lieu, string cp_Lieu, string ville_Lieu, string ursaff, string siret, string titre_Signataire, string nom_Signataire, string prenom_Signataire,string fonction_Signataire, string nom_Salarie, string prenom_Salarie, string titre_Salarie, string adr_Salarie, string cp_Salarie, string ville_Salarie, string nationalite,string identification, string date_naissance_Salarie, string ville_naissance_Salarie,string date_embauche, string horaire_embauche, string date_signature, string periode_essai, string salaire, string nombre_Points, string valeur_Points, string date_Points,string fonction_Salarie, string fonction_Hiérarchique, string nombre_Jour_Contrat,string appointement_Minimal, string annee_Fin_Periode_Acquisition_CP, string cadre_Position)
    Malheureusement, ma solution ne marche pas et je ne comprend pas comment faire pour arriver à surchargé ma méthode.

    Pouvez-vous m'aider svp ?
    Merci.

  2. #2
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Override, c'est pour redéfinir une méthode dans une classe fille. Toi, tu veux créer une surcharge (overload en anglais) avec des paramètres en plus.
    Il faut utiliser le mot-clef new !

    Au passage, tu n'as aps d'objets "personnes" ou un truc du genre ? sinon, plutôt que de t'encombrer d'un milliard de paramètres, passes directement des objets (des pointeurs plutôt que des valeurs) c'est plus performant.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse !

    Mais par contre pourrais tu me donner un exemple d'utilisation parce que je ne vois pas comment ça marche.

    Je me suis renseigné et regardé des exemples d'utilisation mais aucun ne corresponde à ce que je veux.

    Le problème c'est que cette méthode est définit ds la classe mère avec environ 15 paramètres et cette même méthode est définit dans la classe fille avec 15 paramètres + 5 surcharges string.

    Voici un exemple de mes classes

    Classe Contrat
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace WindowsFormsApplication1
    {
        class Contrat
        {
            //Site
            private string nom_Site;
     
            //Lieu de travail
            private string nom_Lieu;
            private string adr_Lieu;
            private string cp_Lieu;
            private string ville_Lieu;
            private string ursaff;
            private string siret;
     
            //Signataire
            private string titre_Signataire;
            private string nom_Signataire;
            private string prenom_Signataire;
            private string fonction_Signataire;
     
            //Salarié
            private string nom_Salarie;
            private string prenom_Salarie;
            private string titre_Salarie;
            private string adr_Salarie;
            private string cp_Salarie;
            private string ville_Salarie;
            private string nationalite;
            private string identification;
            private string date_naissance_Salarie;
            private string ville_naissance_Salarie;
     
            //Salaire
            private string salaire;
            private string nombre_Points;
            private string valeur_Points;
            private string date_Points;
     
            //Divers
            private string date_embauche;
            private string horaire_embauche;
            private string date_signature;
            private string periode_essai;
     
            //Initialisation de la classe
            public virtual void init(string nom_Site, string nom_Lieu, string adr_Lieu, string cp_Lieu, string ville_Lieu,
                string ursaff, string siret, string titre_Signataire,string nom_Signataire, string prenom_Signataire,
                string fonction_Signataire, string nom_Salarie, string prenom_Salarie, string titre_Salarie,
                string adr_Salarie, string cp_Salarie, string ville_Salarie, string nationalite,
                string identification, string date_naissance_Salarie, string ville_naissance_Salarie,
                string date_embauche, string horaire_embauche, string date_signature, string periode_essai,
                string salaire, string nombre_Points, string valeur_Points, string date_Points)
            {
                //Site
                this.nom_Site = nom_Site;
     
                //Lieu de travail
                this.nom_Lieu = nom_Lieu;
                this.adr_Lieu = adr_Lieu;
                this.cp_Lieu = cp_Lieu;
                this.ville_Lieu = ville_Lieu;
                this.ursaff = ursaff;
                this.siret = siret;
     
                //Signataire
                this.titre_Signataire = titre_Signataire;
                this.nom_Signataire = nom_Signataire;
                this.prenom_Signataire = prenom_Signataire;
                this.fonction_Signataire = fonction_Signataire;
     
                //Salarié
                this.nom_Salarie = nom_Salarie;
                this.prenom_Salarie = prenom_Salarie;
                this.titre_Salarie = titre_Salarie;
                this.adr_Salarie = adr_Salarie;
                this.cp_Salarie = cp_Salarie;
                this.ville_Salarie = ville_Salarie;
                this.nationalite = nationalite;
                this.identification = identification;
                this.date_naissance_Salarie = date_naissance_Salarie;
                this.ville_naissance_Salarie = ville_naissance_Salarie;
     
                //Salaire
                this.salaire = salaire;
                this.nombre_Points = nombre_Points;
                this.valeur_Points = valeur_Points;
                this.date_Points = date_Points;
     
                //Divers
                this.date_embauche = date_embauche;
                this.horaire_embauche = horaire_embauche;
                this.date_signature = date_signature;
                this.periode_essai = periode_essai;
            }
     
     
            //Site
            public string getSite()
            {
                return this.nom_Site;
            }
     
     
            //Signataire
            public string getNomSignataire()
            {
                return this.titre_Signataire + " " + this.prenom_Signataire + " " + this.nom_Signataire;
            }
     
            public string getFonctionSignataire()
            {
                return this.fonction_Signataire;
            }
     
     
            //Lieu de travail
            public string getLieu()
            {
                return this.nom_Lieu + ", " + this.adr_Lieu + ", " + this.cp_Lieu + " " + this.ville_Lieu + " - (n° siret : " + this.siret + ")";
            }
     
            public string getURSAFF()
            {
                return this.ursaff;
            }
     
     
            //Salarié
            public string getNomSalarie()
            {
                return this.titre_Salarie + " " + this.nom_Salarie + " " + this.prenom_Salarie;
            }
     
            public string getAdresseSalarie()
            {
                return this.adr_Salarie + ", " + this.cp_Salarie + " " + this.ville_Salarie;
            }
     
            public string getNationalite()
            {
                return this.nationalite;
            }
     
            public string getSecu()
            {
                return this.identification;
            }
     
            public string getDateNaissance()
            {
                return this.date_naissance_Salarie;
            }
     
            public string getVilleNaissance()
            {
                return this.ville_naissance_Salarie;
            }
     
     
            //Salaire
            public string getSalaire()
            {
                return this.salaire;
            }
     
            public string getNombrePoints()
            {
                return this.nombre_Points;
            }
     
            public string getValeurDuPoint()
            {
                return this.valeur_Points;
            }
     
            public string getDateValeurPoint()
            {
                return this.date_Points;
            }
     
     
            //Divers
            public string getDateEmbauche()
            {
                return this.date_embauche;
            }
     
            public string getHoraireSignature()
            {
                return this.horaire_embauche;
            }
     
            public string getDateSignature()
            {
                return this.date_signature;
            }
     
            public string getPeriodeEssai()
            {
                return this.periode_essai;
            }
        }
    }
    Classe CDI héritée de Contrat
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace WindowsFormsApplication1
    {
        class CDI : Contrat
        {
            public virtual void init(string nom_Site, string nom_Lieu, string adr_Lieu, string cp_Lieu, string ville_Lieu,
                string ursaff, string siret, string titre_Signataire, string nom_Signataire, string prenom_Signataire,
                string fonction_Signataire, string nom_Salarie, string prenom_Salarie, string titre_Salarie,
                string adr_Salarie, string cp_Salarie, string ville_Salarie, string nationalite,
                string identification, string date_naissance_Salarie, string ville_naissance_Salarie,
                string date_embauche, string horaire_embauche, string date_signature, string periode_essai,
                string salaire, string nombre_Points, string valeur_Points, string date_Points)
            {
                base.init(nom_Site, nom_Lieu, adr_Lieu, cp_Lieu, ville_Lieu, ursaff, siret,
                    titre_Signataire,nom_Signataire, prenom_Signataire, fonction_Signataire, nom_Salarie,
                    prenom_Salarie, titre_Salarie, adr_Salarie, cp_Salarie, ville_Salarie,
                    nationalite, identification, date_naissance_Salarie, ville_naissance_Salarie,
                    date_embauche, horaire_embauche, date_signature, periode_essai, salaire, nombre_Points,
                    valeur_Points, date_Points);
            }
        }
    }
    Classe MensuelI héritée de CDI
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace WindowsFormsApplication1
    {
        class MensuelI : CDI
        {
            //Fonction / Statut / Salaire
            private string niveau;
            private string echelon;
            private string coef;
            private string fonction_Salarie;
            private string fonction_Hiérarchique;
     
            //Salaire
            private string taux_Garanti_Annuel;
     
            //Divers
            private string jour_Debut;
            private string jour_Fin;
     
     
            public override void init(string nom_Site, string nom_Lieu, string adr_Lieu, string cp_Lieu, string ville_Lieu,
                string ursaff, string siret, string titre_Signataire, string nom_Signataire, string prenom_Signataire,
                string fonction_Signataire, string nom_Salarie, string prenom_Salarie, string titre_Salarie,
                string adr_Salarie, string cp_Salarie, string ville_Salarie, string nationalite,
                string identification, string date_naissance_Salarie, string ville_naissance_Salarie,
                string date_embauche, string horaire_embauche, string date_signature, string periode_essai,
                string salaire, string nombre_Points, string valeur_Points, string date_Points,
                string niveau, string echelon, string coef, string fonction_Salarie, string fonction_Hiérarchique,
                string taux_Garanti_Annuel, string jour_Debut, string jour_Fin)
            {
                base.init(nom_Site, nom_Lieu, adr_Lieu, cp_Lieu, ville_Lieu, ursaff, siret,
                    titre_Signataire, nom_Signataire, prenom_Signataire, fonction_Signataire, nom_Salarie,
                    prenom_Salarie, titre_Salarie, adr_Salarie, cp_Salarie, ville_Salarie,
                    nationalite, identification, date_naissance_Salarie, ville_naissance_Salarie,
                    date_embauche, horaire_embauche, date_signature, periode_essai, salaire, nombre_Points,
                    valeur_Points, date_Points);
     
                this.niveau = niveau;
                this.echelon = echelon;
                this.coef = coef;
                this.fonction_Salarie = fonction_Salarie;
                this.fonction_Hiérarchique = fonction_Hiérarchique;
                this.taux_Garanti_Annuel = taux_Garanti_Annuel;
                this.jour_Debut = jour_Debut;
                this.jour_Fin = jour_Fin;
            }
     
            public string getNiveau()
            {
                return this.niveau;
            }
     
            public string getEchelon()
            {
                return this.echelon;
            }
     
            public string getCoef()
            {
                return this.coef;
            }
     
            public string getFonctionSalarie()
            {
                return this.fonction_Salarie;
            }
     
            public string getFonctionHierarchique()
            {
                return this.fonction_Hiérarchique;
            }
     
            public string getTauxGarantiAnnuel()
            {
                return this.taux_Garanti_Annuel;
            }
     
            public string getJourDebut()
            {
                return this.jour_Debut;
            }
     
            public string getJourFin()
            {
                return this.jour_Fin;
            }
        }
    }

    Voila pour mes classes.
    Encore merci de m'aider.

  4. #4
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    En fait ta méthode init fait ce que devrait faire le constructeur (en principe)

    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public virtual void init(
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public new void init(...
    dans le prototype des tes méthodes de classe fille (qui ont plus de paramètres), ça devrait marcher.

    par contre, j'ai un doute sur le nombre de surcharges disponibles dans les classes filles...


    pour plus d'info sur les mots-clefs override et new :

  5. #5
    Invité
    Invité(e)
    Par défaut
    Comme @kheironn vient de le mentionné, l'utilisation du mot clé new est la solution pour votre problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    namespace WindowsFormsApplication1
    {
        class MensuelI : CDI
        {
        ....
        public new void init(string nom_Site, ...
        ....
    Vous utilisez new pour les deux classes CDI et MensuelI.

    Utiliser des Propriétés des classes est mieux par rapport à des méthodes getXXX et setXXX séparées.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    c'est le genre de méthode que j'aurais pas envie d'appeler

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci pur vos réponses.
    Elles m'ont bien aidé.

    Mais j'aurai une autre question (et oui encore dsl) :

    Comment faire pour seulement appeler la classe Contrat (classe mère) et qu'elle agisse comme si c'était une classe fille.

    Exemple :

    Je veux former un contrat Mensuel en CDI.
    J'initialise la classe Contrat mais il faut qu'elle réagisse comme la classe MensuelI. C'est à dire que la classe Contrat est en fait la classe fille MensuelI. Avez-vous compris ?

    Si vous voulez plus d'explication, dîtes le moi !!!

    ps: je reconnais que cette méthode est horrible a appelé avec autant de paramètres mais je devais faire au plus vite.

  8. #8
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par Mqnnnn Voir le message
    ps: je reconnais que cette méthode est horrible a appelé avec autant de paramètres mais je devais faire au plus vite.
    Tu n'as pas d'objet signataire, lieu, salarié, etc. ? sinon tu aurais pu passer directement les objets... (mieux !!!!)

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Effectivement j'aurai pu faire passer des objets mais je n'y ai pas pensé directement.

    Si j'ai le temps ça fera partit des évolutions.

    Et tu n'as pas de réponse pour ma 2ème question ?

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    des objets c'est mieux, car si un jour tu rajouter un paramètre, tu peux potentiellement te taper des tas de méthodes à modifier (enfin ca c'est si c'est bien découpé en plein de méthodes ^^)
    avec des objets, tu rajoutes une propriété et tu ne modifie que les méthodes où tu en as besoins

    sinon j'ai pas trop compris ta question
    en POO si tu fais une classe de base et que tu en hérite, le fonctionnement est hérité
    tu peux au passage faire des fonctionnement spécifiques dans les classes "filles"

  11. #11
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par Mqnnnn Voir le message
    Effectivement j'aurai pu faire passer des objets mais je n'y ai pas pensé directement.

    Si j'ai le temps ça fera partit des évolutions.
    Bonjour,

    Ça fait un peu peur quand même quand on lit ceci d'une personne qui utilise un langage Orienté Objets

    En ce qui concerne ta question je ne suis également pas sûr de l'avoir comprise, mais au cas où je dirais qu'il te faut stocker une instance de type fille dans une variable de type mère, mais comme je le répète je ne suis pas certain que ce fût le sens de ta question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Contrat monContrat = new MensuelI(... ici une tripotée de paramètres ...);
    Sinon quelques observations sur ton code actuel en vrac:
    • Je n'y ai vu que des champs de type string, que ce soit pour des dates, des valeurs (salaire, valeur_point, code_postal, etc.)
    • En l'état de ton exemple la classe CDI ne sert à rien, elle ne rajoute rien par rapport à Contrat.
    • Je rajouterais une classe Adresse et/ou Ville pour éviter la redondance de certains champs (par exemple LieuTravail pourrait en hériter)
    • Je rajouterais aussi une classe Personne (nom, prenom, titre (peut-être une Enum ici), et un objet Adresse.
    • Par suite du point précédent Signataire/Salarie (qui d'ailleurs se ressemblent beaucoup à voir si une seule des deux ne suffit pas) héritent donc de Personne.
    • Comme déjà dit utilise plutôt des propriétés avec getter/setter au lieu de méthodes "get"/"set".
    • Évite aussi les accents dans les noms de variables, ou les underscore, on a tendance à utiliser une casse camelCase comme tu l'as très bien fait d'ailleurs pour tes méthodes "get".
    • Dans une gestion objet, pour par exemple ta méthode/getter "getNomSignataire" j'aurais (je ne sais si c'est mon cas particulier ) tendance à mettre ceci dans l'override de la méthode toString.


    J'ai pu loupé des trucs, et d'ailleurs ce n'est là qu'à titre strictement informatif, mais si ça peut être utile... qui sait

    Cordialement !

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci !

    Sehnsucht, tu as bien compris ma question et tu y as bien répondu merci.

    1- En ce qui concerne mes champs strings, j'ai procédé de cette manière car ils sont tous saisis à la main et à la fin je génère le contrat de travail en PDF (utilisation de migraDoc).

    2- Ma classe CDI ne sert à rien actuellement, mais c'était par soucis d'évolution que je l'ai créée si jamais des informations communes au CDI sont à rajoutées.

    3- signataire et salarié sont 2 personnes différentes (Signataire = Ressources Humaines de l'entreprise).

    4- pour les "_" dans les variables, je ne pensais pas que sa pouvais faire bug le projet.

    Par contre pour les getter et setter, je n'ai pas bien compris ce que tu voulais dire :
    Citation Envoyé par Sehnsucht Voir le message
    ...mettre ceci dans l'override de la méthode toString.
    Encore merci pour vos aides

  13. #13
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    les accents et _ font bugger les progammes des langages d'il y a quinze ans peut etre, mais sur du .net je demande à voir !!!

    surtout que visual basic 2010 génère des variables commencant par un _

  14. #14
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Pour les getter/setter ; voilà ce que tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string getSite()
    {
        return this.nom_Site;
    }
    voilà ce dont je parlais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string Site
    {
        get { return nom_Site };
    }
    Pour l'histoire de l'override toString et je rappelle que c'est une façon de faire qui m'est propre, j'ignore si elle est partagée, et surtout cela dépend du contexte dans l'utilisation, comme cette méthode correspond à "l'affichage par défaut de l'objet" j'aurais tendance à remplacer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string getNomSignataire()
    {
        return this.titre_Signataire + " " + this.prenom_Signataire + " " + this.nom_Signataire;
    }
    par cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public override string toString()
    {
        return this.titre_Signataire + " " + this.prenom_Signataire + " " + this.nom_Signataire;
    }
    Quant à l'histoire des accents et _ je ne dis pas que c'est source de plantage, sinon le sujet de ce post serait "Pourquoi ceci ne fonctionne pas ?" je dis juste que ce n'est pas courant comme pratique et que dans l'ensemble on utilise plutôt une casse camelCase et qu'on évite les accents (d'ailleurs avec des noms de variables/méthodes en anglais le probleme ne survient pas)

    Cordialement !

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

Discussions similaires

  1. [POO] Héritage et surcharge de méthodes
    Par defkid dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2007, 14h51
  2. surcharge de méthode
    Par Zen_Fou dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2006, 10h23
  3. [POO] Surcharge de méthode
    Par ouioui2000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2006, 15h25
  4. [Custom Tags] Problème avec une surcharge de méthode
    Par Strab dans le forum Taglibs
    Réponses: 19
    Dernier message: 26/08/2005, 16h34
  5. Comment surcharger la méthode OnClose d'un TFrame ?
    Par sdebrois dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/01/2005, 20h57

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