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

Java Discussion :

Forcer l'implémentation d'une méthode.


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Forcer l'implémentation d'une méthode.
    Bonjour à tous,

    Dans le cadre d'un projet de stage, je souhaite simplifier au maximum les opérations d'un développeur pour réaliser des opérations que je ne décrirai pas ici (je pense que celles-ci ne sont pas indispensables à connaître pour répondre à mon "problème"). Je vous explique la situation :

    J'ai une classe abstraite A qui étend une classe B issue d'un framework que j'utilise, qui, dans les grosses lignes, ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public abstract class A extends B {
    
    
    < des attributs ... >
    public void process() {
    < fais quelque chose... >
    run();
    }
    protected abstract void run();
    }
    Et l'idée est d'uniquement développer une classe C, fille de A, implémentant la méthode run()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class C extends A {
    
    
    < d'autres attributs, à la guise du codeur... >
    @Override
    protected void run() {
    < fais quelque chose... >
    }
    }
    Ce bout de code illustre mon besoin : minimiser l'effort d'un autre développeur et centraliser les calculs dans la classe mère. Bon, quoiqu'il en soit, il marche exactement comme je veux, mais est-ce la bonne façon de procéder ? Je veux dire, cette façon de faire est elle admise comme correcte (je le fais souvent quand je code en fait, que ce soit en Java ou C++ ou tout autre langage objet), ou alors vaut il mieux créer une interface avec une méthode run() et composer la classe A d'une implémentation de cette interface ? En gros, ma question s'oriente davantage sur une propreté de conception.


    Si je n'ai pas été très clair dans la description de mon soucis, n'hésitez pas à me le dire.

    Merci pour vos futurs réponses.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par huzard Voir le message

    Si je n'ai pas été très clair dans la description de mon soucis, n'hésitez pas à me le dire.

    Merci pour vos futurs réponses.
    Oui je confirme tu n'as pas été assez clair pour moi

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Composition ou spécialisation, les deux sont très bien en général, et parfaitement admis.
    Lequel est le mieux en particulier, tout dépend de tout ce que tu ne nous as pas montré.

    Personnellement, je dirais qu'il vaut mieux viser la composition, ou juste passer l'objet Runnable en paramètre, sauf quand l'architecture du code rend autre chose plus pragmatique ou plus maintenable.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Une question de base à te poser, c'et de savoir si la class C aura besoin des méthodes et paramètres présents dans A pour fonctionner. Ou au contraire, est-ce que toutes les méthodes présentes dans A ne sont que des méthodes qui concernent un autre bout de code qui utilise A (comme par exemple des règles de scheduling, du stockage d'erreurs, etc). Dans le premier cas, une interface n'est pas pratique, puisque alors, C ne connaitrait pas l'instance de A qui lui correspond. Dans le second, l'interface serait probablement préférable car donnant plus de liberté à celui qui implémente C.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    En effet la classe C vise juste à spécialiser les calculs de A, donc elle se doit de connaître certaines particularités de A, etnotamment d'y ajouter des informations dans une hashmap. Merci pour vos réponses :-)

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 10/01/2013, 15h19
  2. Forcer la surcharge d'une méthode
    Par BakaOnigiri dans le forum Langage
    Réponses: 12
    Dernier message: 30/04/2008, 14h13
  3. implémentation d'une méthode
    Par tanguy.L dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2008, 15h15
  4. [POO] Forcer l'implémentation d'une méthode static
    Par Pongten dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 31/01/2008, 20h37
  5. Réponses: 20
    Dernier message: 19/09/2006, 20h52

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