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 :

Comment protéger un package ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut Comment protéger un package ?
    Bonjour à tous,

    Je souhaite développer une API en Java. Cette API sera en fait un composant graphique complexe.

    Il faut pour cela qu'une seule et unique classe soit accessible aux utilisateurs pour pouvoir utiliser ce composant graphique et que toutes les autres classes constituant cette API soient cachées, donc non accessibles par les utilisateurs.

    J'ai bien compris l'utilité des mots clés private, protected, package-friendly et public pour le développement de mes classes et pour leurs méthodes.

    Maintenant, comment faire ? Suffit-il de placer ma classe principale accessible à la racine de mon API et de placer toutes les autres classes dans un sous-package ?

    Merci d'avance pour votre aide et vos explications !

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    A partir du moment ou tu fournis une API, par définition, même si on ne peut pas les modifier, on pourra toujours accéder à tes classes d'une manière ou d'une autre.

    Il faut pour cela qu'une seule et unique classe soit accessible aux utilisateurs...
    Encore une fois tu fournis une API, donc ce n'est pas toi qui va décider de comment elle va être utilisée. Toutes les classes présente à l'intérieur seront 'visible' par un programmeur.

    Par contre tu peux effectivement jouer sur plusieurs facteurs pour restreindre au maximum les interactions possibles avec les classes utilisateur.

    1/ Jouer avec la visibilité des méthodes en utilisant au maximum les méthodes private et protected.

    2/ Utiliser le mot clé final. Sur une classe cela empêchera de définir une sous classe et ainsi pouvoir potentiellement redéfinir les méthodes.
    Permet de définir une constante si appliqué sur une variable.
    Empêche la surcharge si appliqué sur une méthode.

    3/ Utiliser des innerClass. Ces classes sont complétement invisibles pour toutes les autres classes. Par contre cela t'oblige à tout coder dans le même fichier (ce qui n'est pas très recommandé non plus, donc à utiliser avec parcimonie).

    4/ Utiliser des classes abstraites. Ces classes ne sont pas instanciable.

    Voila, j'ai surement oublier des choses mais ça te donne un bon point de départ.

    Cdt.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Euh, plus important que tout ça : à part la classe exposée, toutes les autres classes doivent être non-publiques (autrement dit package-private.)

    Ainsi donc tous les autres packages n'y auront pas accès. Mais elles auront accès les unes aux autres, et la classe exposée y aura accès aussi.
    Du coup elles doivent être dans le même package, bien sûr, pas dans un sous-package.

    ... Mais bon, à trop faire ça, on se retrouve à entasser des milliers de classes dans un seul package, c'est pas très propre. Il y a pas de mal à avoir quelques classes publiques même si elles sont dédiées à un usage interne. Il suffit de documenter correctement que rien n'est garanti, si quelqu'un s'en sert, c'est son problème, tu as jamais dit que ça marcherait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut
    Merci pour vos réponses à tous deux !

    Cela me donne des indications sur la manière de construire/ hiérarchiser mon projet.

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

Discussions similaires

  1. Comment protéger efficacement son application ?
    Par RamDevTeam dans le forum EDI
    Réponses: 3
    Dernier message: 15/11/2005, 09h41
  2. Réponses: 17
    Dernier message: 31/10/2005, 15h59
  3. Comment protéger sa source ?
    Par Ralpho dans le forum Langage
    Réponses: 18
    Dernier message: 29/09/2005, 09h28
  4. [EXPORT] Comment ajouter des packages au .jar ?
    Par djskyz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 23h23
  5. Comment protéger ses sources?
    Par Titeuf21121 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 25/03/2004, 06h47

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