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

Interfaces Graphiques en Java Discussion :

Est-il possible de..


Sujet :

Interfaces Graphiques en Java

  1. #1
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut Est-il possible de..
    Bonjour à tous

    Une question qui me préoccupe :

    Admettons que je fabrique une classe (très complexe) contenant un GUI quasi-complet (pour faire une série d'applications différentes basées sur le même GUI). Cette classe est l'équivalent d'un widget très complexe, du style DIALOG box spécial, avec plusieurs dialog inclus dedans, beaucoup de méthodes etc...

    Est-il possible avec Java de laisser la liberté à un utilisateur doté de priviléges (c'est à dire pouvant créer une application à partir de cette classe), d'inclure cette classe dans un projet, par exemple, SANS qu'il ait ou puisse voir ou manipuler non seulement certaines méthodes, mais même les détails de la classe, à part 1 ou 2 ?

    Je vous explique le problème :

    Je travaille sur le portage d'une grosse appli X11/Motif.
    L'IHM était construite de cette manière :

    - un "widget" CommonWindow
    quelques méthodes publiques
    2 widget public

    beaucoup de méthodes privées
    beaucoup de widgets privés.

    Stocké dans une bibliothèque

    Pour construire une application, un utilsateur tel que mentionné ci-dessus :

    appelait le widget CommonWindows
    Eventuellement se servait du widget public
    Eventuellement se servait des méthodes publiques

    Mais il ne VOYAIT pas la complexité résidant en dessous..

    D'après ce que j'ai vu de Java et des EDI/RAD, si on inclu une classe dedans, cela la "déplie" complètement, et l'utilisateur à alors la vision de l'ensemble..

    Vu la taille d'une part du widget (> 1000 widgets à l'intérieur de la classe CommonWindow), et la "sensibilité" de certaines méthodes ou widgets internes, je n'aimerais pas que l'utilisateur voit ceci. Est-ce possible ??

  2. #2
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Je suis pas sûr d'avoir tout compris...

    Ce que je peux dire c'est qu'il n'est pas possible de cacher le code. Il est possible d'interdire de redéfinir le code en ayant des méthodes à portée restreinte de type private ou encore protected ou **friendly**.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Pour cacher des parties il suffit de définir un proxy (cf. le 'pattern') qui aggrège la classe en question.
    Sur le proxy tu ne déclares que les méthodes auxquelles tu veux que l'utilisateur accède et dans leurs définitions tu rappelles les méthodes correspondantes sur la classe aggrégée.

    Est-ce que ça répond à la question ?

    edit : sinon un avis personnel : si ta classe est vraiment une seule classe qui manipulent 1000 classes internes c'est qu'il faudrait peut-être découper tout ça....

    MAT.

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    En ne parlant que objet, une interface permet peut etre de faire ceux que tu veux. Tu définis une interface genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface MonInterface {
    public void maMethodePublic();
    }
    Et tu distribues cette classe librement, puis tu la gére dans ton application privée. Les autres peuvent compiler sans problème puisqu'ils ont l'interface. J'ai fait ça pour un systeme de plugin, je donne juste le code de l'interface pour être un plugin et l'interface que ma classe privée implementer, ainsi les utilisateurs ne voient pas mon code mais ils peuvents créer des plugins pour mon application et communiquer avec elle, car au niveau code, ça compile sans problème. Mais bon, c'est pas forcément ce que tu veux, sois peut-être un peu plus clair
    P.S : le titre du thread n'est pas trop évocateur

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    @Janitrix

    oui c'est à peu près ça...

    A la différence près que deux des sous-widgets de la classe sont prévus pour être accessibles à l'utilisateur qui veut faire une appli.... mais pas les autres.

    P.S : le titre du thread n'est pas trop évocateur
    Je sais bien mais j'ai pas trouvé de raccoruci, et comme ça je me suis dit que les gens potentiellement intéressés regarderaient, au moins ;-)

    @Mat07 :
    edit : sinon un avis personnel : si ta classe est vraiment une seule classe qui manipulent 1000 classes internes c'est qu'il faudrait peut-être découper tout ça....
    Eh non le but est bien que les utilisateurs disposent d'un widget un peu équivalent à une boîte du style "PrinterBox", sauf que là c'est pas juste une boîte, mais quasiment un SIG (Système d'Information Géographique) complet.
    , donc une fenêtre avec environ 14 fenêtres filles, et dans chacune environ 20 à 80 widgets...

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Mat07 a écrit :

    Est-ce que ça répond à la question ?
    ben je sais pas parce que je suis tout nouveau dans le monde Windows/Java, et proxy et pattern me disent pas grand'chose....

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par souviron34
    donc une fenêtre avec environ 14 fenêtres filles, et dans chacune environ 20 à 80 widgets...
    D'accord mais ça n'est pas pour autant qu'il faille implémenter tout dans une seule classe.
    Mais ce n'est peut-être pas le cas, c'est juste que la manière dont tu décris ça pourrait le laisser croire

    Citation Envoyé par souviron34
    ben je sais pas parce que je suis tout nouveau dans le monde Windows/Java, et proxy et pattern me disent pas grand'chose....
    Ce sont plus des notions liées à la programmation (orientée) objet.
    Peut-être que tu devrais aussi regarder le 'pattern' facade d'ailleurs.

    Une recherche rapide donne par ex :
    http://en.wikipedia.org/wiki/Proxy_pattern
    http://en.wikipedia.org/wiki/Facade_pattern

    MAT.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    OK. Je vais regarder ça..

    Mais comme j'ai pas mal de code à faire, je vais marquer résolu pour libérer de la bande passante et je reviendrais quand je serais plus près du but...

    Merci beaucoup...

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

Discussions similaires

  1. Est-il possible de bloquer le reverse engineering ?
    Par fugi dans le forum Assembleur
    Réponses: 39
    Dernier message: 31/07/2007, 02h33
  2. [IRC] -> Est-ce possible avec JBuilder ?
    Par MaTHieU_ dans le forum JBuilder
    Réponses: 4
    Dernier message: 26/08/2003, 17h24
  3. Réponses: 3
    Dernier message: 29/07/2003, 09h38
  4. Réponses: 2
    Dernier message: 16/05/2003, 10h14
  5. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22

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