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 :

Une méthode "abstract static" ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Par défaut Une méthode "abstract static" ?
    Tout est dans le titre.

    Ex : J'ai une classe mére 'Organisme'.
    J'ai des classes enfant 'Humain', 'Animal', ...

    Les classes enfants représentent les tables de ma base de données.
    J'aimerais donc une méthode static qui me renvoit le nom de la table :
    'HumainTb', 'AnimalTb', ... Mais une méthode abstract static, ça ne compile pas...

  2. #2
    Membre éclairé Avatar de DonkeyMaster
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 95
    Par défaut
    Ben, laisse tomber le static!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string NomTable;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private static string m_nom_table = "Humain"
    public string NomTable {
        get { return m_nom_table; }
    }
    =========================
    et maintenant, la version longue:
    =========================

    Essayons de réfléchir à ce que cela aurait donné si tu voulais écrire une méthode abstract static. En fait, ce n'est pas si utile que ça.
    Cela servirait à obliger toutes les implémentations à fournir une telle méthode, mais cela ne te permet pas de généraliser ton code.
    En effet, tu ne peux pas prendre un Type et te dire "bon, puisque c'est un Organisme, il y a une méthode statique GetNomTable()" puis appeler Organisme.GetNomTable(). Tu dois appeler Humain.GetNomTable() ou Animal.GetNomTable().

    Par contre, en utilisant une instance, ça marche.
    unHumain.NomTable;
    unAnimal.NomTable;

    Je ne sais pas si je me suis bien exprimé.

    Rmq: appeler une méthode statique à partir d'une instance de classe, c'est découragé, ou du moins c'est ce qu'Eclipse dit.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Par défaut
    Ta solution m'interesse, mais ton attribut 'm_nom_table' doit se trouver dans la classe 'Organisme', non ?

    Je vais m'interessé à la surcharge d'attributs, je pense que ça devrait répondre à mon problème...

    Mais je trouve ça dommage d'avoir le nom de ma table dans chaque objet...

  4. #4
    Membre éclairé Avatar de DonkeyMaster
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 95
    Par défaut
    Organisme.cs:
    Citation Envoyé par DonkeyMaster
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string NomTable;
    Humain.cs:
    Animal.cs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private static string m_nom_table = "Humain"
    public string NomTable {
        get { return m_nom_table; }
    }
    l'astuce, c'est que m_nom_table est static, lui !

    En plus, je ne suis pas sûr que tu crées beaucoup d'instances de chaque table, donc la différence n'est pas énorme. Si tu crées beaucoup d'instances de chaque table, tout ça est optimisable.

    Mais ça, c'est une autre histoire...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Par défaut
    Ok. Merci

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

Discussions similaires

  1. [PHP 5.3] Créer une méthode abstract static.
    Par Rakken dans le forum Langage
    Réponses: 2
    Dernier message: 01/05/2011, 15h32
  2. Réponses: 16
    Dernier message: 26/10/2006, 16h17
  3. une méthode static
    Par adilo dans le forum Langage
    Réponses: 5
    Dernier message: 23/06/2006, 21h10
  4. supprimer une table qui a des quotes dans son nom
    Par kleenex dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 16h03

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