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 :

Passage variable classe fille -> classe mère


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut Passage variable classe fille -> classe mère
    Bonjour,

    J'ai une classe "Produit" qui descend de la classe abstraite "ObjectGenerique".

    La classe Produit, comme tous ses frères et soeurs, possède la propriété statique Count qui retourne le nombre d'enregistrement dans la table donnée (ici Produit).

    J'aimerais que Count soit implémenté dans la classe mère, la fonction est exactement la même pour chaque classe fille, à l'exception du nomDeTable qui change.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string sql = String.Format("select count(*) from {0}", nomTable);
    Comment faire en sorte que "nomTable" soit défini par les classes filles ?

    Je débute en c#, j'ai donc tenté plusieurs fantaisies du style champ statique virtuel (oui, je sais maintenant...), abstrait, passage de paramètre dans le constructeur de la classe mère etc, beaucoup de choses compliquées pour quelque chose qui me paraît assez simple.

    Le compilateur me refuse l'utilisation d'un champ classique dans une propriété statique (référence d'objet requise), et je ne parvient pas à modifier un champ statique parent depuis ma classe fille.

    Quelqu'un connaîtrait il la solution ? Ou peut être je ne m'y prend pas correctement ?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,
    tu as mille manières de faire, par ex. comme ça :
    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
     
    class Mere
    {
        protected static int GetCount(string tableName)
        {
            string sql =String.Format("select count(*) from {0}", tableName);
     
            using (SqlConnection connection = ...
           //  
           //...
        }
    }
     
    class Fille1
    {
        private static int s_count;
     
        static Fille1()
        {
            s_count = GetCount("fille1");
        }
     
        public static int Count
        {
            get { return s_count; }
        }
    }
     
    class Fille2
    {
        private static int s_count;
     
        static Fille2()
        {
            s_count = GetCount("fille2");
        }
     
        public static int Count
        {
            get { return s_count; }
        }
    }
    Tout dépend si tu as besoin d'initialiser Count au chargement de l'appli, aux premiers appels aux classes correspondantes, de manère ponctuelle, etc...

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut
    Merci bien, ça marche très bien ainsi.

    Seulement ça rajoute pas mal d'étapes à quelque chose d'assez simple, je suis vraiment surpris qu'il ne soit pas possible de faire ça "proprement".
    Déclarer une fausse propriété statique qui en fait ne fait qu'appeler la classe mère en passant un paramètre (qui ne change jamais de valeur durant l'exécution) à chaque fois, c'est quand même étrange.

    Ceci dit merci pour ta réponse, ça fera largement l'affaire dans un premier temps.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 76
    Par défaut
    Salut,

    En complément de la réponse précédente, tu peux un peu réécrire le code pour simuler une propriété statique.

    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
    public abstract class Mere
    { 
     public static int GetCount(string tableName)
     {
       Console.WriteLine("Table: {0}", tableName);
       return 10;
     }
    }
     
    public class Fille : Mere
    {
     public static int GetCount()
     {
       return Mere.GetCount("Fille1");
     }
    }
    public class Fille2 : Mere
    {
     public static int GetCount()
     {
       return Mere.GetCount("Fille2");
     }
    }
    
    Est ce que celà est plus proche de la syntaxe que tu imagines?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut
    Merci pour vos réponses, sujet résolu.

    Cordialement

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

Discussions similaires

  1. Appel méthode classe fille, dont classe mère virtuelle
    Par Metalman dans le forum Débuter
    Réponses: 6
    Dernier message: 07/06/2013, 11h51
  2. Réponses: 19
    Dernier message: 14/02/2012, 13h57
  3. Réponses: 6
    Dernier message: 22/07/2010, 15h17
  4. Classe mere, ou classe fille ?
    Par Flowers dans le forum Général Java
    Réponses: 4
    Dernier message: 05/02/2008, 11h38
  5. Mapping classe mere - sauvegarde classe fille
    Par Calim dans le forum Hibernate
    Réponses: 5
    Dernier message: 17/01/2007, 11h23

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