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

Langages de programmation Discussion :

[POO] Forcer l'implémentation d'une méthode static


Sujet :

Langages de programmation

  1. #1
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut [POO] Forcer l'implémentation d'une méthode static
    Hello,

    Voici ma situation : je réalise des contrôles spécialisés pour un projet.
    Ces contrôles sont basés sur un tronc commun (une classe abstraite) qui implémente les fonctions communes et force (via les méthodes abstraites) l'implémentation des méthodes spécifiques aux différents contrôles.

    Je voudrais forcer l'implémentation d'une méthodes static dans chacun des différents contrôles (pas dans le tronc commun), mais une méthode static ne peut pas être déclarée abstract.

    Existe-t-il un moyen de réaliser cela ?

    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    dans quel langage ?
    as-tu tenté avec une interface ?

  3. #3
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    En fait, c'est du C#, mais comme c'est plutôt un concept générique POO je pensais que c'était plus approprié ici comme question.

    Via une interface, je vais devoir implémenter la méthode dans la classe abstraite qui est la classe "mère" non ? Or ce que je souhaite, c'est rendre cette méthode obligatoire pour tous les contrôles qui vont hériter de ma classe abstraite...

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    arf, parce que je pensais à Java... je crois bien qu'on peut déclarer une méthode statique dans une interface

    en C#, je n'ai pas fait assez de POO... mais je ne vois pas trop comment t'en sortir sans une notion de contrats

  5. #5
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Je voudrais forcer l'implémentation d'une méthodes static dans chacun des différents contrôles (pas dans le tronc commun), mais une méthode static ne peut pas être déclarée abstract.

    Existe-t-il un moyen de réaliser cela ?
    En C# c'est impossible.

    Comme tu le soulignes on ne peut pas qualifier une méthode statique (static) comme étant abstract et une interface ne peut pas avoir de méthode statique.

    Une discussion intéressante :

    http://www.dotnetmonster.com/Uwe/For...Implementation

    Pourquoi ça n'est pas possible en C#, d'un point de vue logique :

    http://dotnet.org.za/codingsanity/ar...nterfaces.aspx

    Pas possible en C#, oui, mais possible en IL ... :

    http://dotnetjunkies.com/WebLog/mali...01/204317.aspx

  6. #6
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Ok, merci à tous pour ces infos.

    Je vais utiliser cette "astuce"-ci qui va me permettre de m'assurer que chacun des contrôles implémente cette fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static void DoSomething()
    {
       throw new ApplicationException( "DoSomething should be redefined in
    subclasses" );
    }
    Ça fera office de "contrat".

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Pourrais tu préciser pourquoi tu as besoin d'une méthode statique dans tes contrôles ? visiblement tu veux vérifier une "qualité" avant d'instancier, c'est bien cela ?

    Dans le mesure où tu travaille en C#, j'ai l'impression que une solution plus propre ici consisterait à faire appel à des attributs de classe (en tout cas, dans ce genre de cas, et dans cet environnement c'est cela que j'utiliserais).

  8. #8
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    En fait, c'est assez complexe.

    Je développe différents contrôles serveurs qui sont construits sur un tronc commun. Ces contrôles sont utilisés dans des pages et lors de leur chargement (OnInit) s'initialisent selon le tronc commun, mais avec certaines particularités qui leur sont propres (par exemple un TextBox charge une valeur par défaut qu'un Checkbox ignore (exemple très simpliste)).

    Jusque là, tout va bien et je m'en sors parfaitement bien avec les méthodes abstraites.

    Seulement, je construit un mécanisme pour construire de façon automatique les pages qui vont contenir ces contrôles sur base d'une "description". Comme il s'agit juste d'un rendu texte avec quelques attributs définis, je voulais simplement une méthode static pour les différents contrôles qui en fonction de certaines informations passées renverraient la chaîne à insérer dans la page pour assurer la création du contrôle.

    Je ne sais pas si c'est assez clair, mais c'est difficile de rentrer plus dans les détails.

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Pongten Voir le message
    En fait, c'est du C#, mais comme c'est plutôt un concept générique POO je pensais que c'était plus approprié ici comme question.
    D'un point vue paradigme OO pur, le static ne devrait pas exister. Il reste très pratique et utile. Mais cette remarque sous-entend que son utilisation doit donc être limité au maximum.

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

Discussions similaires

  1. Forcer l'implémentation d'une méthode.
    Par huzard dans le forum Général Java
    Réponses: 4
    Dernier message: 31/05/2014, 13h03
  2. Accès à une méthode static
    Par demcoul dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2007, 17h55
  3. Réponses: 16
    Dernier message: 26/10/2006, 16h17
  4. Réponses: 20
    Dernier message: 19/09/2006, 20h52
  5. une méthode static
    Par adilo dans le forum Langage
    Réponses: 5
    Dernier message: 23/06/2006, 21h10

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