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 :

Petite question sur l'héritage


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Par défaut Petite question sur l'héritage
    Bonjour,

    J'ai une petite question au niveau de l'héritage.
    J'ai une classe mère BaseGUI
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public abstract class BaseGUI : INotifyPropertyChanged
    {
    	public event PropertyChangedEventHandler PropertyChanged;
     
     
    	public void RaisePropertyChanged(object sender, string elementName)
    	{
    		if(PropertyChanged!=null)
    			PropertyChanged(sender, new PropertyChangedEventArgs(elementName));
    	}
    }

    Je voudrais obliger les classes filles à implémenter deux méthodes.
    - FromEntity
    - ToEntity

    Le problème c'est que les types d'entréés et de sorties dépende de la classe fille.
    Du coup je ne sais pas comment déclarer mes méthodes dans BaseGUI

    Un exemple
    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
    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
     
    public class UserGUI : BaseGUI
    {
    	...
    	...
     
    	public void FromEntity(UserEntity user){
    		...
    		...
    	}
     
    	public UserEntity ToEntity(){
    		...
    		...
    	}
    	}
     
    	public class SportGUI : BaseGUI
    	{
    	...
    	...
     
    	public void FromEntity(SportEntity sport){
    		...
    		...
    	}
     
    	public SportEntity ToEntity(){
    		...
    		...
    	}
    }
     
    public abstract class BaseGUI : INotifyPropertyChanged
    {
    	public event PropertyChangedEventHandler PropertyChanged;
     
    	public void RaisePropertyChanged(object sender, string elementName)
    	{
    		if(PropertyChanged!=null)
    			PropertyChanged(sender, new PropertyChangedEventArgs(elementName));
    	}
     
    	public abstract void FromEntity(?????);
    	public abstract ???? ToEntity();
    }

    Par avance merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Est ce que l'héritage ici est le meilleur choix pas sûre...

    Y a t il un point commun entre tes classes (E/S) ?
    Pour obliger les classes à avoir ces méthodes tu peux mettre des interfaces, ça répondrai à ton besoin ?

    Sinon y a aussi la solution générique qui peut être bien ici
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Par défaut
    l'approche dépend pas mal du code qui effectue les appels à FromEntity et ToEntity (ce code est-il lui-même dépendant d'une classe particulière)... et du fait qu'il y ait ou pas une classe de base pour tous tes Entity (autre qu'object).

    Sinon... tu castes. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void FromEntity( BaseEntity e )
    {
         if ( e is UserEntity )
         {
              UserEntity ue = (UserEntity)e;
              ...
         }
         else
          ...
    }

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    classe générique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class mere<T1, T2> 
    {
      public abstract T2 mth1(T1 param1);  
    }
    méthode générique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class mere 
    {
      public abstract void mth<T>(T param1);  
    }
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 415
    Par défaut
    ... je crois que je vais demander à google !

    A mon sens, utiliser des génériques (quelle que soit la forme) va nécessiter autant de cas distincts pour le code qui appelle ses méthodes (from et to entity) : c'est pas forcément le but

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    pour les méthodes génériques, il n'y a rien à faire ca récupère ce qu'on passe
    pour les classes par contre il faut rajouter <un type> à chaque nommage de la classe ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Petite question sur l'héritage
    Par Ydalb dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 15/07/2009, 17h08
  2. Petite question sur les héritages?
    Par razonback dans le forum C++
    Réponses: 4
    Dernier message: 15/02/2009, 15h13
  3. Réponses: 8
    Dernier message: 25/03/2008, 21h59
  4. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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