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 :

problème implementation data membre dans un heritage


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Indonésie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Par défaut problème implementation data membre dans un heritage
    Salut tout le monde,

    J'ai essayé d’implémenter les Data Membre de la classe Français et Pers à la fois sans utiliser le constructeur mais sans succès. Pourriez-vous m'aider à résoudre ce problème? Merci d'avance.

    Voici le code utilisant le constructeur:
    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
     
    // source: C# et .NET (Gerard Leblanc)
     
    class Pers
    {
        protected string nom;
        protected int age;
        public Pers(string N, int A) {Nom = N; Age = A;}
        public virtual void Affiche()
        {
            Console.WriteLine(Nom + " (" + Age + ") ");
        }
    }//Fin Cls. Pers.
     
    class Français:Pers
    {
        string Departement;
        public Français(string N, int A, string D):base(N, A)
        {
            Departement = D;
        }
        public override void Affiche()
        {
            Console.WriteLine(Nom + " âgé de " + Age + " ans " (" + Departement + ")");
        }
    }//Fin Cls. Français
     
    class Prog
    {
        static void Main()
        {
            Pers p1, p3;
            Français p2;
     
            p1 = new Pers("Jim", 36);
            p1.Affiche();
            p2 = new Français("Jacques", 65, "Paris");
            p2.Affiche();
            p3 = new Français("Benoit", 75, "Nievre");
            p3.Affiche();
        }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai pas compris ce qui te posait problème... tu cherches à faire quoi (et d'ailleurs c'est quoi les "Data Membre" ?), qu'est-ce qui ne marche pas, et comment ça se manifeste (erreur, comportement incorrect...) ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Indonésie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Par défaut
    Citation Envoyé par tomlev Voir le message
    J'ai pas compris ce qui te posait problème... tu cherches à faire quoi (et d'ailleurs c'est quoi les "Data Membre" ?), qu'est-ce qui ne marche pas, et comment ça se manifeste (erreur, comportement incorrect...) ?
    Bonsoir,

    En fait j'aimerais bien savoir comment remplir à la fois des variables la classe Pers et Française grâce à un objet p3
    sans utiliser un constructeur comme example ci-dessus. Merci d'avance.


    Example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* DECLARATION DES OBJETS */
    Pers p1, P3;
    Française p2;
     
    p3 = new Français();
     
    string sNOm = Console.ReadLine();
    string sAge = Console.ReadLine();
    string sDepartement = Console.ReadLine();
     
    P3.setVariablesClasse(sNom, sAge, sDepartement);

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah tu crées une méthode SetVariables dans la classe Français :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void SetVariables(string nom, int age, string departement)
    {
        this.nom = nom;
        this.age = age;
        this.Departement = departement;
    }
    Cela dit, normalement on utilise plutôt des propriétés pour faire ce genre de choses...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Indonésie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Bah tu crées une méthode SetVariables dans la classe Français :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void SetVariables(string nom, int age, string departement)
    {
        this.nom = nom;
        this.age = age;
        this.Departement = departement;
    }
    Cela dit, normalement on utilise plutôt des propriétés pour faire ce genre de choses...
    Ce que j'ai fais mais le problème venant d'objet P3. Objet P3 est du type Pers et j'ai instancié par classe Français. En utilisant ta méthode j'ai un message d'erreur Erreur 3 Utilisation d'une variable locale non assignée 'objP3'. Car, si on a vu l'exemple plus haute on pourra le faire en utilisant le constructeur.

    NB: Si je comprends bien il n'y pas d'autre possibilité de le faire à condition que objet P3 est référencé de Français est instancié par classe Français ou en utilisant propriété ?! Merci.

    Exemple précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* DECLARATION DES OBJETS */
    Pers P1, P3;
    Française P2;
     
    P3 = new Français();
     
    string sNOm = Console.ReadLine();
    string sAge = Console.ReadLine();
    string sDepartement = Console.ReadLine();
     
    P3.setVariablesClasse(sNom, sAge, sDepartement);

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai pas tout compris ce que tu disais, mais j'ai l'impression que ce qui te pose problème, c'est que P3 est déclaré en tant que Pers, et que tu veux accéder à des membres de la classe Francais. Dans ce cas, il faut faire un cast (conversion) de P3 en Francais. Ou alors tu crées d'abord une variable de type Francais et tu l'affectes ensuite à la variable P3.

    Sinon, si tu utilises des propriétés tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    P3 = new Français
    {
        Nom = sNom,
        Age = sAge,
        Departement = sDepartement
    };

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/10/2013, 14h35
  2. Réponses: 4
    Dernier message: 30/05/2013, 12h04
  3. Problème de variable membre en pointeur dans une classe
    Par medrimonia dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2012, 18h00
  4. Problème d'ajout multiples dans un BDD Access
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/05/2004, 13h34
  5. Problème a l'affichage dans la console (printf)
    Par PhoneKilleR dans le forum C
    Réponses: 21
    Dernier message: 23/09/2003, 17h21

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