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 :

Héritage et dérivation [Débutant]


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Par défaut Héritage et dérivation
    Bonjour, j'ai quelques soucis d'héritage et de dérivation sur mon développement. J'ai 2 méthodes qui se répètent (seuls 2 paramètres changent) et j'aimerai les mettre dans un ancêtre commun.
    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
    public class A {
     
    	// Parametres différents
    	private const string parametre1 = "MonParametre1";
    	private readonly Dictionary<string, string> parametre2 = new Dictionary<string, string>{{"Nom","Toto"},{"Prenom","Tata"}};
     
     
    	//Methodes communes
    	public void Methode1(string boisson, string manger)
    	{
    		string test = parametre1 + boisson;
     
    		TraitementRessource(test, parametre2);
    	}
     
    	private void Methode2(string test, string parametre2)
    	{
    		string essai  = test + parametre2;
    	}
     
    }
     
    public class B {
     
    	// Parametres différents
    	private const string parametre1 = "AutreParametre";
    	private readonly Dictionary<string, string> parametre2 = new Dictionary<string, string>{{"Nom","loki"},{"Prenom","poki"}};
     
     
    	//Methodes communes
    	public void Methode1(string boisson, string manger)
    	{
    		string test = parametre1 + boisson;
     
    		TraitementRessource(test, parametre2);
    	}
     
    	private void Methode2(string test, string parametre2)
    	{
    		string essai  = test + parametre2;
    	}
     
    }
    Par rapport au code , je voudrai une class C qui reprendrait la "Methode1" commune aux deux classes avec en classe private la "Methode2". Il suffirait uniquement de définir les paramêtres dans les 2 classes pour que le tour soit jouer. j'espère avoir été clair .

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Tu peux créer une classe de base :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class BaseClass
    {
        protected string parametre1 { get; set; }
     
        //Methodes communes
        public void Methode1(string boisson, string manger)
        {
            string test = parametre1 + boisson;
     
            TraitementRessource(test, parametre2);
        }
    }
    Et faire hériter tes deux autres classes de cette base. Voici à quoi ressemblerait alors la classe A :
    Code C# : 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
    public class A : BaseClass
    {
        // Parametres différents
        private const string parametre1 = "MonParametre1";
        private readonly Dictionary<string, string> parametre2 = new Dictionary<string, string> { { "Nom", "Toto" }, { "Prenom", "Tata" } };
     
        public A()
        {
            base.parametre1 = parametre1;
        }
     
        private void Methode2(string test, string parametre2)
        {
            string essai = test + parametre2;
        }
    }
    Et la classe B :
    Code C# : 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
    public class B : BaseClass
    {
        // Parametres différents
        private const string parametre1 = "AutreParametre";
        private readonly Dictionary<string, string> parametre2 = new Dictionary<string, string> { { "Nom", "loki" }, { "Prenom", "poki" } };
     
        public B()
        {
            base.parametre1 = parametre1;
        }
     
        private void Methode2(string test, string parametre2)
        {
            string essai = test + parametre2;
        }
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Un truc comme ça? Mais je vois pas l'intérêt de faire de classes, vu que c'est exctement pareil mis à part les données... Et le but de l'héritage/polymorphisme est surtout d'ajouter/modifier des comportement, pas d'ajouter du code (pour ça il y a la composition)
    Perso, je passerai simplement les paramètres... A moins que TraitementRessource soit implémenté de façon differente dans A et B..?

    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
    	public abstract class CBase
    	{
     
    		public abstract string Parametre1
    		{
    			get;
    		}
     
    		public abstract Dictionary<string, string> Parametre2
    		{
    			get;
    		}
     
     
    		//Methodes communes
    		public void Methode1(string boisson, string manger)
    		{
    			string test = Parametre1 + boisson;
     
    			TraitementRessource(test, Parametre2);
    		}
     
    		private void Methode2(string test, string parametre2)
    		{
    			string essai = test + parametre2;
    		}
     
    	}
     
    	public class A: CBase
    	{
     
    		public override string Parametre1
    		{
    			get { return "MonParametre1"; }
    		}
     
    		public Dictionary<string, string> Parametre2
    		{
    			get { return _parametre2; }
    		}
     
    		private static Dictionary<string, string> _parametre2 = new Dictionary<string, string> { { "Nom", "Toto" }, { "Prenom", "Tata" } };
     
    	}
     
    	public class B
    	{
    		public override string Parametre1
    		{
    			get { return "AutreParametre"; }
    		}
     
    		public Dictionary<string, string> Parametre2
    		{
    			get { return _parametre2; }
    		}
     
    		private static Dictionary<string, string> _parametre2 = new Dictionary<string, string> { { "Nom", "loki" }, { "Prenom", "poki" } };
    	}

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Par défaut
    Merci ça marche nikel

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

Discussions similaires

  1. [Postgresql]Héritage
    Par lheureuxaurelie dans le forum PostgreSQL
    Réponses: 13
    Dernier message: 02/10/2008, 09h18
  2. héritage et dérivation
    Par leycho dans le forum C++
    Réponses: 9
    Dernier message: 12/12/2005, 14h38
  3. [Postgres] Héritage + Clés
    Par k-reen dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/05/2003, 16h37
  4. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44
  5. Dérivation dune fonction
    Par srvremi dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/07/2002, 14h21

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