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

API standards et tierces Java Discussion :

Créer sa propre API et protéger certaines classes


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut Créer sa propre API et protéger certaines classes
    Bonjour,

    Je suis en train de créer une API que je dois fournir à des clients.

    Il y a certaines classes de cette API que je souhaiterais cacher à ceux qui l'utiliseront j'ai donc mis une visibilité package à ces classes.

    Malheureusement, je me rends compte que quand j'utilise le même nom de package que celui de l'API pour accéder à celui-ci j'ai accès à toutes les classes que je souhaitais cacher.

    Existe-t-il une possibilité de protéger cela ou ce n'est pas possible ?

    Merci beaucoup de votre réponse

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Non c'est le principe de la visibilité package d'être visible depuis les fichiers du même paquage.

    Normalement une API ne devrait pas se trouver dans le même package que l'application qui l'utilise. Le nom de pacquage doit être choisi de manière judicieuse pour éviter des colisions de nom involontaires. De plus pour ne pas encourager cela il faut éviter de générer la documentation de l'API sur les élément de visibilité private et package.

    Un programmeur pas trop bête sait qu'il est censé laisser une API dans son propre package et ne pas programmer dedans. S'il le fait c'est en connaissance de cause.

  3. #3
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par Uther Voir le message
    Le nom de pacquage doit être choisi de manière judicieuse pour éviter des colisions de nom involontaires.

    malheureusement c'est pas toujours le cas pour les pacquages standards

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Normalement les noms de pacquage de l'api java sont bien définis, dans java et javax, ou en utilisant des nom de domaines inversés, donc il n'y a pas d'ambiguité possible.

    Si tes programmes sont dans des pacquages java.xxx ou javax.xxx, il faut vraiment vouloir se chercher des emmerdes.

    En général utiliser le système des noms de dommaine inversé pour les paquage permet de manière assez sure d'éviter le genre de problème dont parle patou21. Si l'utilisateur de l'API utilise un nom de domaine qui n'est pas le sien comme nom de pacquage, c'est qu'il fait ça en connaissance de cause.

  5. #5
    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
    précision qui a son importance. Quand on parle de visibilité "private" ou "protected", ca s'entends au niveau du design de l'application et des règles du language. Ca n'a rien a voir avec un protection contre la copie ou le piratage ou avec la sécurité. Il est toujours possible de contourner la limitation, par exemple, en créant des classes intermédiare dans le meme package qui exposent les données protégées. Mais comme si bien dit, le programmeur le fait alors en connaissance de cause.

  6. #6
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    je pense que l'utilisation des mots clé "private" ,"public".. et la gestion de visibilité en général n'a un sens que lors de developpoment des composant java beans REUTILISABLE.

  7. #7
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Réduire la visibilité est certes indispensable quand on a des composant dont juste une partie doit être accessible a l'utilisateur final.
    Mais quand un projet grossi et/ou est manipulé par de nombreuses personnes, il devient important de travailler avec de objets ayant des règles claires, même s'il n'ont pas pour vocation d'être réutilisables. Si tous les champs d'un objet peuvent être modifiés sans contraintes par n'importe quelle classe, on risque de finir avec des comportements inattendus.

Discussions similaires

  1. Créer ma propre API
    Par Miclol dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 11/04/2011, 12h30
  2. Réponses: 1
    Dernier message: 12/07/2009, 09h51
  3. Créer ses propres classes génériques
    Par Louis-Guillaume Morand dans le forum C#
    Réponses: 6
    Dernier message: 22/05/2009, 16h57
  4. [E-03] Créer ses propres objets / classes
    Par NikoBe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2009, 13h50

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