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 :

Classe abstraite et méthode commune


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut Classe abstraite et méthode commune
    Bonjour à tous,
    Tout d'abord je tiens à signaler que je débute, du moins avec le polymorphisme, surcharge, etc...
    J'ai une classe abstraite de laquelle je dérive 4 autres classes.
    Il existe des méthodes abstraites.

    Je voudrais cependant avoir une méthode commune à chaque classe dérivée (avec des paramètres passés différents en fonction de la classe dérivée), qui doit me renvoyer une liste par exemple.
    Je voudrais éviter de dupliquer le code dans chaque classe dérivée.

    Sachant que je ne peux pas instancier ma classe abstraite, comment dois-je procéder?
    Ca fonctionne avec une methode statique, mais est-ce une bonne pratique?

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Comment ça "Ca fonctionne avec une methode statique" ?

    Tes méthodes requières des paramètres différents, comme as tu pu en faire qu'une seule ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Et bien en créant une méthode statique, comme je n'ai pas besoin d'instancier, je peux donc l’appeler.
    Cette méthode réalise la même chose pour toutes les classes dérivées.

    J'ai le choix soit de dupliquer le code dans chaque classe dérivée (il s'agit de requêtes sql) en modifiant à chaque fois les paramètres des requêtes, soit de créer la méthode dans la classe principale et de lui passer en paramètres les critères de la requête.

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    Dans ta classe mere creer la methode qui prends en parametre une liste de sql parameters. Et dans les classes enfants, creer une methode qui appelle la methode mere, avec a chaque fois les bons parametres. POur le coup tu as pas besoin de classe abstraite ni meme de methodes abstraites.


    En psedo code:
    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
    class Mamam{
       public void DoDatabase(List<Parameter> parameters)
    {
      //do the job
    }
    }
     
    class Fifille:Maman{
      public void DoDatabase(){
           List<Parameter> parameters = new List....
           parameters .Add(....
           DoDatabase(parameters );
    }
     
    }

    Voila qui correspond a ta demande, par contre je suis quasiment sur que tu ne nous a pas tout dit(par oublis), ou qu'il manque des elements pour que l'on puisse comprendre. Sans ces elements dur de t'aider plus.

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je voudrais cependant avoir une méthode commune à chaque classe dérivée (avec des paramètres passés différents en fonction de la classe dérivée)
    Oui, ça ne change pas la signature de ta méthode (type de paramètres) il n'y a donc pas de problème.

    Voici comment je ferai :

    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
        public abstract class maman
        {
            protected void aff(string str)
            {
                MessageBox.Show(str);
            }
            public abstract void aff();
        }
     
        public class fille : maman
        {
            public override void aff()
            {
                base.aff("fille");
            }
        }
     
        public class garcon : maman
        {
            public override void aff()
            {
                base.aff("garcon");
            }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    new fille().aff();
    new garcon().aff();

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Merci à vous tous, je devrais m'en sortir :-)

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

Discussions similaires

  1. Classe abstraite et méthodes virtuelles
    Par Daikyo dans le forum Langage
    Réponses: 10
    Dernier message: 16/11/2010, 15h50
  2. Interfaces/Classes abstraites et méthodes statiques
    Par Zakapatul dans le forum VB.NET
    Réponses: 7
    Dernier message: 06/01/2009, 14h38
  3. Réponses: 23
    Dernier message: 16/03/2007, 20h21
  4. Réponses: 14
    Dernier message: 17/11/2006, 19h17
  5. Réponses: 6
    Dernier message: 27/07/2005, 09h06

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