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

Langage Java Discussion :

[Pattern] Method Template


Sujet :

Langage Java

Vue hybride

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 255
    Par défaut
    Bonjour,

    programmant en java 1.4, je me demandais comment réaliser un pattern "Method Template" qui soit sûr.

    Je pense à une méthode « public final » de la classe mère « abstract » qui appelle une méthode « protected abstract » implémentée dans les classes filles.

    Le problème est que logiquement seule la méthode « public » doit pouvoir être appelée. Appeler la méthode protected directement n'a pas de sens. Or «protected» permet à toute classe du même package de l'appeler, pas seulement les classes filles...

    Comment faire pour que la méthode protected ne puisse pas être appelée directement ?

    Quand je regarde la liste des modificateurs [ et les portées où la méthode sera accessible ] :

    public : [ Classe, Package, Filles, Monde ]
    protected : [ Classe, Package, Filles ]
    default : [Classe, Package ]
    private : [ Classe ]

    Je me dis que c'est dommage qu'il n'y ait pas un modificateur qui soit accessible uniquement aux niveaux [ Classe, Filles ] (du genre « restricted »)...

    Quelqu'un sait si c'est prévu au programme des prochaines versions ?

  2. #2
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Par défaut
    En meme temps quand tu distribues un paquetage l'utilisateur n'est pas sensé écrire de nouvelles classes a l'intérieur, donc tu n'as pas vraiment besoin de te protéger des appels intra-paquetage a des méthodes qui ne sont pas sencées etre visible, tu ne le fais pas tout simplement.

  3. #3
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    rajoutant qu'il s'agit d'une protection contre les erreur de logique (vouloir accéder à des chose auquel t'as pas besoin d'accéder), pas d'une protection sécuritaire ou sous forme de copyright. Les méthodes privées / protected restent accessible par reflection.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 255
    Par défaut
    Citation Envoyé par soft0613 Voir le message
    l'utilisateur n'est pas sensé écrire de nouvelles classes a l'intérieur
    Les utilisateurs ne sont jamais sensés, dans le sens où ils manquent parfois de bon sens.

    Et c'est aussi une forme d'auto-protection : il est plus facile de faire une erreur de logique quand il n'y a pas de protection !

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par behess Voir le message
    Je me dis que c'est dommage qu'il n'y ait pas un modificateur qui soit accessible uniquement aux niveaux [ Classe, Filles ] (du genre « restricted »)...

    Quelqu'un sait si c'est prévu au programme des prochaines versions ?
    Non ce n'est pas prévu...


    S'il s'agit d'une librairie que tu vas déployer via un jar, le plus simple serait de scellé le package via le Manifest. Par exemple si tu utilise le package com.company.nompackage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Manifest-Version: 1.0
     
    Name: com/company/nompackage/
    Sealed: true
    Il sera interdit de déclarer de nouvelles classes appartenant à ce package. Seul les classes contenu dans le jar auront ce droit... donc la visibilité 'package' ne sera pas accessible !
    (cela ne concerne pas les sous-packages, donc si tu as plusieurs packages il faut le faire pour tous en séparant bien par une ligne vide à chaque fois)

    a++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 255
    Par défaut
    Ah bah voilà quelqu'un de bien

    Tu réponds à la question, tu ne t'insurges pas contre elle

    Je ne connais pas bien les propriétés des jars et du manifest. Tu m'apprends une chose primordiale !!!

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/02/2013, 08h40
  2. " undefined reference to " avec methode template
    Par coldrink dans le forum Langage
    Réponses: 3
    Dernier message: 24/10/2009, 20h05
  3. Réponses: 6
    Dernier message: 21/07/2009, 13h53
  4. Problème de specialization de methode template
    Par Klaim dans le forum Langage
    Réponses: 5
    Dernier message: 13/05/2008, 00h37
  5. [Template] methode template d'une classe pas template
    Par bigquick dans le forum Langage
    Réponses: 8
    Dernier message: 25/03/2005, 15h09

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