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

ASP.NET Discussion :

Lien héritage entre classe Page et classe UserControl


Sujet :

ASP.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut Lien héritage entre classe Page et classe UserControl
    Bonjour,

    J'ai un ensemble de pages aspx qui dérivent d'une classe C1 qui elle dérive de la classe Page.
    J'ai également un ensemble de contôles utilisateur qui dérivent d'une classe C2 qui elle dérive de la classe UserControl.

    J'ai quelques fonctions qui sont communes aux deux classes C1 et C2.
    Je voulais donc savoir si il y avait un moyen d'éviter de devoir dupliquer ces fonctions dans les deux classes ?

    Merci.

  2. #2
    Membre confirmé Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Points : 527
    Points
    527

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    Ok pour l'interface mais si je l'utilise, je la fait dériver de quelle classe : Page ou Usercontrol?

    Merci.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    En y réfléchissant, je ne pense pas que l'interface soit utilie dans mon cas, car je ne pourrais pas implémenter de méthode à l'intérieur.

    Moi, je voudrais implémenter mes fonctions une seule fois et qu'elles soient à la fois utilisables par mes pages .aspx et mes contrôles utilisateur.

  5. #5
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    l'interface va te permettre de t'affranchir de ton conteneur et d'appeler quelque que soit ton contexte ta fonction de la même façon.

    Si tu n'en ressens pas le besoin, ne le fais pas. tu pourras toujours refactoriser tes classes ensuite pour y implémenter une interface commune.

    Ensuite, si tu ne veux developper qu'une seule fois tes methodes tu as deux solutions:

    1)une classe avec des methodes statique que tu appelles indifferement depuis chaque classe page ou USerControl
    2) creer une classe qui possede les fonctions qui t'interesse et rajouter une reference a cette classe dans les classe usercontrol et PAge.

    ex1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class ma page: ....
    {
     
       public void FaireOperation(int id)
      {
             MaStaticClass.FaireOperation(id);
      }
    }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class monusercontrol: ....
    {
     
       public void FaireOperation(int id)
      {
             MaStaticClass.FaireOperation(id);
      }
    }
    }
    ex 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class ma page: ....
    {
       maclassamoi InstanceClasse
     
       public void FaireOperation(int id)
      {
             InstanceClasse.FaireOperation(id);
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class monUserControl: ....
    {
       maclassamoi InstanceClasse
     
       public void FaireOperation(int id)
      {
             InstanceClasse.FaireOperation(id);
      }
    }

  6. #6
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,
    Citation Envoyé par stefsas Voir le message
    En y réfléchissant, je ne pense pas que l'interface soit utilie dans mon cas, car je ne pourrais pas implémenter de méthode à l'intérieur.

    Moi, je voudrais implémenter mes fonctions une seule fois et qu'elles soient à la fois utilisables par mes pages .aspx et mes contrôles utilisateur.
    On ne peut effectivement pas coder dans une interface. Une interface impose l'existence des méthodes qu'elle décrit dans la classe qui l'implémente. L'avantage de l'interface est qu'une classe peut en implémenter plusieurs. Ce n'est pas le cas d'un héritage. Une classe ne peut hériter que d'un seul parent. C'est un peut limitatif.

    De plus l'objet les objets "Page" et "UserControl" sont des parents un peu trop éloignés pour essayer des leur mettre des propriétés communes.

    Voici ce que tu peux faire (ce que je ferais) si il est vraiment nécessaire que la fonction soit présente dans les contrôles:
    • Une/des interfaces
    • Un Manager dans un projet métier
    • La méthode de mon interface fait appel à ma fonction métier
    A+

    PS: se rappeler qu'une IHM ne devrait pas implémenter de code métier. Une IHM met en page et c'est tout.

    [EDIT]Je rejoins ce que dit Arthis[/EDIT]

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/09/2011, 23h27
  2. Réponses: 4
    Dernier message: 03/09/2010, 16h52
  3. class pour table + class pour td = class td non fonctionnelle ?
    Par supergrey dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/05/2009, 09h13
  4. Réponses: 6
    Dernier message: 02/12/2007, 11h30
  5. [POO] Héritage entre deux classes
    Par Lenaick dans le forum Langage
    Réponses: 5
    Dernier message: 16/10/2007, 10h53

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