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 :

Bug de génération


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Bug de génération
    Bonjour,

    Alors que je veux générer mon programme, Visual C# m'indique que:
    L'espace de noms 'Application_BIS' contient déjà une définition de 'Compte'

    Mais il s'agit justement DE l'unique objet Compte que j'ai crée!

    Voici l'intégralité du code (il s'agit de la 1ère partie du TP sur la POO de la partie 3 du tutoriel du C#):
    (Bon courage pour la lecture )
    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
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System;
     
     
    namespace Application_BIS
    {
        class Program
        {
            static void Main(string[] args)
            {
                CompteCourantNicolas compteCNicolas = new CompteCourantNicolas("Nicolas") { DecouvertAutorise=2000 };
                CompteEpargneEntrepriseNicolas compteEENicolas = new CompteEpargneEntrepriseNicolas("Nicolas") {Taux_DAbonnement = 0.02 };
                CompteCourantJeremy compteCJeremy = new CompteCourantJeremy("Jeremy") {DecouvertAutorise=500};
     
                compteCNicolas.Crediter(100);
                compteCNicolas.Debiter(50);
                compteCNicolas.Crediter(20);
                Compte.Transferer(20, compteCNicolas, compteEENicolas);
                compteCNicolas.Crediter(100);
                Compte.Transferer(20, compteEENicolas, compteCNicolas);
                compteCJeremy.Debiter(500);
                Compte.Transferer(200, compteCJeremy, compteCNicolas);
     
                Console.WriteLine("Solde compte courant de Nicolas:" + compteCNicolas.Solde);
                Console.WriteLine("Solde compte épargne de Nicolas:"+ compteEENicolas.Solde);
                Console.WriteLine("Solde compte courant de Jeremy:"+ compteCJeremy.Solde);
     
                compteCNicolas.AfficherResumeCompte();
                compteEENicolas.AfficherResumeCompte();
     
     
     
     
            }
        }
    }
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Application_BIS
    {
        public class Compte
        {
            public int Solde { get; set; }
            public string Proprietaire { get; set; }
            private List<string> Historique = new List<string>();
            private int x =0;
     
     
     
            Compte(string nom)
            {
                Solde = 0;
                Proprietaire = nom;
            }
     
            Compte(int x, string nom)
            {
                Solde = x;
                Proprietaire = nom;
            }
     
     
     
     
     
     
            public void Crediter(int somme)
            {
                Solde += somme;
                Historique[x] = "+" + somme;
                x++;
            }
     
            public void Crediter(int somme,Compte compte)
            {
                Solde += somme;
                Historique[x] = "+" + somme;
                x++;
            }
     
            public void Debiter(int somme)
            {
                Solde -= somme;
                Historique[x] = "-" + somme;
                x++;
            }
     
            public void Debiter(int somme,Compte compte)
            {
                Solde -= somme;
                Historique[x] = "-" + somme;
                x++;
            }
     
            public static void Transferer <T,U> (int somme,T t,U u ) 
                where T:Compte  
                where U:Compte 
            {
                t.Debiter(somme);
                u.Crediter(somme);
     
            }
     
     
     
            protected virtual void AfficherHistorique()
            {
     
                Console.WriteLine("Historique:");
                for (int i = 0; i < Historique.Count; i++)
                {
                    Console.WriteLine(Historique[i]);
                }
     
            }
     
     
     
     
     
        }
    }
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Application_BIS
    {
        class Compte_courant:Compte
        {
            public int DecouvertAutorise { get; set; }
     
            public override void AfficherResumeCompte()
            {
                Console.WriteLine("************************************");
                Console.WriteLine("Résumé du compte de" + Proprietaire);
                Console.WriteLine("************************************");
                Console.WriteLine("Compte courant de" + Proprietaire);
                Console.WriteLine("Solde:" + Solde);
                Console.WriteLine(DecouvertAutorise);
                base.AfficherHistorique();
     
     
                Console.WriteLine("************************************");
            }
     
     
     
        }
    }
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Application_BIS
    {
        class Compte_epargne_entreprise:Compte
        {
            public double Taux_DAbonnement { get; set; }
     
            public void AfficherResumeCompte()
            {
                Console.WriteLine("####################################");
                Console.WriteLine("Résumé du compte de" + Proprietaire);
                Console.WriteLine("####################################");
                Console.WriteLine("Compte épargne entreprise de" + Proprietaire);
                Console.WriteLine("Solde:" + Solde);
                Console.WriteLine("Taux d'abonnement:"+ Taux_DAbonnement);
                base.AfficherHistorique();
                Console.WriteLine("####################################");
     
            }
     
        }
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Application_BIS
    {
        class CompteCourantNicolas:Compte_courant
        {
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Application_BIS
    {
        class CompteEpargneEntrepriseNicolas:Compte_epargne_entreprise
        {
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Application_BIS
    {
        class CompteCourantJeremy:Compte_courant
        {
        }
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    Et si tu met le mot clé public devant tes 2 constructeurs?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public Compte(string nom)
            {
                Solde = 0;
                Proprietaire = nom;
            }
     
            public Compte(int x, string nom)
            {
                Solde = x;
                Proprietaire = nom;
            }
    Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs. Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'il peut engendrer.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Ça change rien.
    Il y a toujours le même message...

    Aidez moi S.V.P!

  4. #4
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    Bonjour

    et avec un type pour le(s) constructeur(s) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void Compte(...)
    vous avez bien fait sur les constructeurs Debiter et Crediter, pourquoi ne pas faire sur Compte ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Maxwime,

    J'ai regardé très attentivement ton code et je pense qu'en plus de l'erreur que tu nous mentionnes, tu as du avoir d'autres erreurs, regardes bien dans ta fenêtre d'erreurs.

    En effet, dans tes classes dérivées de la classe "Compte", tu fais un override d'une méthode "AfficherResumeCompte" qui ne figure pas dans la classe "Compte" ni en virtual ni en abstract. Visiblement tu as dû vouloir renommer ta méthode "AfficherHistorique" en "AfficherResumeCompte" mais tu ne l'as pas fait dans la classe de base. De plus, il faut que ta méthode de base ait aussi la même portée que tes méthodes substituées. Ici, s'il s'agit bien de "AfficherHistorique", elle devrait être publique dans la classe "Compte".

    Donc pour correspondre, ta classe "Compte" devrait être ainsi :

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace Application_BIS
    {
        public class Compte
        {
            public int Solde { get; set; }
            public string Proprietaire { get; set; }
            private List<string> Historique = new List<string>();
            private int x =0;
     
     
     
            protected Compte(string nom)
            {
                Solde = 0;
                Proprietaire = nom;
            }
     
            protected Compte(int x, string nom)
            {
                Solde = x;
                Proprietaire = nom;
            }
     
     
     
     
     
     
            public void Crediter(int somme)
            {
                Solde += somme;
                Historique[x] = "+" + somme;
                x++;
            }
     
            public void Crediter(int somme,Compte compte)
            {
                Solde += somme;
                Historique[x] = "+" + somme;
                x++;
            }
     
            public void Debiter(int somme)
            {
                Solde -= somme;
                Historique[x] = "-" + somme;
                x++;
            }
     
            public void Debiter(int somme,Compte compte)
            {
                Solde -= somme;
                Historique[x] = "-" + somme;
                x++;
            }
     
            public static void Transferer <T,U> (int somme,T t,U u ) 
                where T:Compte  
                where U:Compte 
            {
                t.Debiter(somme);
                u.Crediter(somme);
     
            }
     
     
     
            public override void AfficherResumeCompte()
            {
     
                Console.WriteLine("Historique:");
                for (int i = 0; i < Historique.Count; i++)
                {
                    Console.WriteLine(Historique[i]);
                }
     
            }
     
        }
    }
    Tu remarqueras que j'ai ajouté "protected" devant tes constructeurs car sans spécification de portée c'est "privé" et on ne peut plus dériver une classe qui n'a pas au moins un constructeur "protected" ou "public".

    @stolx_10 : non, en C# il n'y a pas de type sur les constructeurs sinon ce ne sont plus des constructeurs. De plus, "Debiter" et "Crediter" ne sont pas des constructeurs mais des méthodes.

  6. #6
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    Et bien merci de ta remarque...je vais modifier mon code chez moi effectivement, ça me paraissait bizarre le comportement de ma classe

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Points : 169
    Points
    169
    Par défaut
    Salut,

    A mon avis tu ne nous a pas tout montré dans ton premier post... Tu dois avoir un autre fichier dans le projet qui contient une définition de la classe Compte.
    Cherche toutes les occurences de "class Compte" dans ta solution, tu devrais trouver.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Oui j'ai pas d'autres erreurs même après régénération. Mais j'ai quand même enlevé virtual et override parce la méthode AfficherHistorique() est bien différente de AfficherResumeCompte(). Je l'ai crée dans l'objet de base pour ne à avoir à réécrire le même bout de code dans les classes dérivées.

    Sinon Jaco67 voilà tous les fichiers présents dans mon projet:
    Beug de génération.odt

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/03/2012, 10h32
  2. [WSDL2Java] Bug dans la génération des classes métiers
    Par adionne dans le forum Services Web
    Réponses: 1
    Dernier message: 21/09/2007, 11h06
  3. Réponses: 2
    Dernier message: 27/06/2007, 12h40

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