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

avec Java Discussion :

Comment déconseiller ou interdire aux utilisateurs d'appeller une méthode ?


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut Comment déconseiller ou interdire aux utilisateurs d'appeller une méthode ?
    Bonjour,

    Je code en java depuis 3 ans mais aujourd'hui, je rencontre un problème que je n'ai jamais rencontré auparavant.

    Voilà je fais un programme utilisant les design pattern et en fait, j'ai une méthode qui est appelée par un autre objet du programme et j'aimerais bien savoir comment "bloquer" ou dire aux personnes qui reprennent mon code de ne pas utiliser cette méthode.

    Ce n'ai pas bien grave mais c'est toujours bon de savoir comment faire.

    Je pensais la déprécier dans la javadoc mais je ne pense pas que ce soit le meilleur moyen.

    Merci d'avance


    Cordialement,
    Quentigus

  2. #2
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    Citation Envoyé par quentigus Voir le message
    Voilà je fais un programme utilisant les design pattern
    Comment va servir cela pour décrire votre question

    ok juste je rigole,

    mais bien sure tu utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Deprecated
    public type name_method(params){}

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    Citation Envoyé par anisj1m Voir le message
    Comment va servir cela pour décrire votre question
    C'est juste que c'est à cause d'un DP que je rencontre ce problème.

    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    L'annotation @Deprecated doit être strictement réservées aux méthodes obsolètes, et non aux méthodes dont on voudrait restreindre l'utilisation.

    Pour limiter l'utilisation d'une méthode, il faut jouer sur sa visibilité :
    1. private : La méthode est visible uniquement dans la classe et les classes internes
    2. default (sans modificateur) : La méthode est visible dans le package
    3. protected : La méthode est visible dans les sous-classes
    4. public : La méthode est visible dans tous les packages et toutes les classes

    Chaque niveau de visibilité hérite de la visibilité des niveaux inférieurs.

    Toutefois, il est préférable d'avoir des niveaux de visibilité permissifs pour rendre plus souple l'utilisation de son api. On peut ensuite simplement ajouter dans la javadoc que telle méthode est destinée à un usage interne ou qu'il est préférable d'utiliser un adapter ou un factory, par exemple, dont on fournie le lien avec l'annotation javadoc @see.

  5. #5
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    +1 verbose.

    Utiliser le design pattern Factory.
    Créer une interface de la classe concernée sans inclure la dîtes méthode.

    Puis dans la factory :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static InterfaceDeMonObjet createObjet(param){
    InterfaceDeMonObjet ref = new MonObjet(param);
    return ref;
    }
    Quand tu utilises une factory, normalement, tu n'as plus jamais besoin de faire de new sur tes Objets, tu fais toujours des factory.createMonObjet(param);

    Nb : Comme dirait mon prof : " Toute classe doit posséder une interface "

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    protected est parfois utilisé pour ça.
    que veut dire "protected" : voici une méthode qui est un mécanisme interne.
    elle est à la disposition de la classe courante et des classes du même package.
    Certes elle est également accessibles aux sous-classes mais en ce qui concerne l'instance courante (this.methode()).
    donc les autres codes (en dehors de ton package) vont se faire jeter s'ils l'utilisent (en dehors d'un héritage)...
    plus simple encore: une méthode sans rien: elle ne sera accessible qu'aux classes du même package.

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/04/2007, 18h07
  2. Comment appeler une méthode dont le nom est dans un string?
    Par Ireon dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 13/04/2007, 17h22
  3. Réponses: 2
    Dernier message: 31/08/2005, 16h12
  4. Comment l'appel à une méthode virtuelle....
    Par Blobette dans le forum C++
    Réponses: 7
    Dernier message: 07/12/2004, 13h55

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