Les histoires de tonton benou : l'invocation dynamique

Les histoires de tonton benou : l'invocation dynamique - Java - Programmation

Marsh Posté le 24-07-2002 à 23:02:43    

[:tonton_benou]
 
sur la demande de CherryTree, aujourd'hui, on va parler de l'invocation dynamique : c'est quoi dont, comment ca marche et à quoi ca sert ?
 
Avant de parler d'unvocation dynamique, il faut déjà connaître l'introspection. L'introspection c'est le fait d'intéroger un objet sur sa nature. C'est à dire lui demander : à quoi tu ressemble ? qu'est ce que tu sais faire ? t'es de quel type ?
 
Ensuite, l'invocation dynamique, ca permet d'agir sur cette objet : "tu sais faire ca ? et ben très bien, fait le !" ou encore, "t'es de ce type là ? bon ben je voudrais bien un autre comme toi"
 
Exemple : on va écrire un programme qui liste les méthodes d'une objet
 

Code :
  1. package tontonbenou.invocdyn;
  2. import java.lang.reflect.*;
  3. public class Test {
  4.    public static void main (String[] leopard) {
  5.      
  6.       String unObjectQuelconque = "je suis quelconque";
  7.      
  8.       // C'est quoi ton type ?
  9.       Class type = unObjectQuelconque.getClass();
  10.       System.out.println("Type de l'objet : " + type.getName());
  11.      
  12.       //Qu'est ce que tu sais faire ?
  13.       Method[] capacites = type.getMethods();
  14.       for (int i=0; i < capacites.length; i++) {
  15.  System.out.println("Il peut faire ca : " + capacites[i].getName());
  16.       }
  17.    }
  18. }


 
Ici, on a récupérer l'objet Class qui correspond au type de l'objet avec la méthode getClass(). Enuiste on peut faire plein de trucs à partir ce cet objet Class : demander quels sont les méthodes de la class, les attriuts, les constructeurs, etc ...
 
Dans l'exemple du dessus, on a demander à connaîtres ses méthodes : on a récupéré un t'ableau d'objets Method (java.lang.reflect.Method). Si on avait voulu, on aurait pu obtenir des informations sur cette méthode : ses modificateurs (public, privé, static final ?) ou la liste des ses paramètres, etc ...
 
dans l'exemple suivant, on va faire un programme un peu plus complexe : on va demander à l'utilisateur de choisir la méthode à executer sur sur un objet ...
 
Bon attention, c'est assez énorme ! et peut être un peu complexe, mais c'est un bon exemple de ce qu'on peut faire avec l'invocation dynamique.
Le plus simple c'est de faire un copier coller du code dans votre ide préféré ce sera plus simple à lire ! ;)
 

Code :
  1. package tontonbenou.invocdyn;
  2. import java.lang.reflect.*;
  3. import java.io.*;
  4. import java.util.*;
  5. public class Test2 {
  6.    public static void main (String[] leopard) throws Exception {
  7.       boucleSansFin:
  8.       while (true) {
  9.          // voici l'objet sur lequel on va appeler les methodes
  10.          Object objet = "Les histoires de tonton benou";
  11.          Class classe = objet.getClass();
  12.        
  13.          System.out.println("voici un objet de type " + classe.getName() +
  14.                             " : '" + objet + "'" );
  15.          // on recupere toutes les methodes de la classe
  16.          Method[] toutesLesMetodes = classe.getMethods();
  17.          // on ne va selectionner que les methodes non static :
  18.          ArrayList tmp = new ArrayList();
  19.          for (int i=0; i < toutesLesMetodes.length; i++) {
  20.             if (! Modifier.isStatic(toutesLesMetodes[i].getModifiers())) {
  21.                tmp.add(toutesLesMetodes[i]);
  22.             }
  23.          }
  24.          Method[] metodes = new Method[tmp.size()];
  25.          for (int i=0; i < tmp.size(); i++) {
  26.             metodes[i] = (Method) tmp.get(i);
  27.          }
  28.          // on les affiches         
  29.          System.out.println("Voici la liste des metodes de l'objet :" );
  30.          for (int i=0; i < metodes.length; i++ ) {
  31.             System.out.println(" " + i + " - " + metodes[i].getName());
  32.          }
  33.          // on demande à l'utilisateur d'en choisir une
  34.          System.out.print("Quelle methode voulez vous appeler ? num : " );
  35.          System.out.flush();
  36.        
  37.          BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
  38.          int num = Integer.parseInt(clavier.readLine()); // on va dire qu'il saisit bien un chiffre ;)
  39.          if (num==-1) {
  40.             break boucleSansFin; // fin du programme !
  41.          }
  42.          Method metodeAAppeler = metodes[num];
  43.          // il faut maintenant demander à l'utilisateur de saisir la liste des  
  44.          // paramètres de la méthode
  45.          // => on récupère les types de paramètres
  46.          Class[] paramsTypes = metodeAAppeler.getParameterTypes();
  47.        
  48.          // On déclare un tableau d'objet qui contiendra les valeurs des paramètres
  49.          Object params[] = new Object[paramsTypes.length];
  50.          if (paramsTypes.length != 0) {
  51.             System.out.println("Veillez indiquer les paramètres :" );
  52.             for (int i=0; i < paramsTypes.length; i++) {
  53.                System.out.print("parametre " + (i+1) + " (type " +
  54.                                 paramsTypes[i].getName() + " ) : " );
  55.                System.out.flush();
  56.                Object param = clavier.readLine();
  57.              
  58.                // le problème c'est que là on récupère une String alors qu'on
  59.                // eut un objet du type paramsTypes[i]
  60.              
  61.                // on va donc essayer de transformer le paramètre dans le type demandé
  62.                // en utilisant la methode static valueOf (en esperant qu'elle existe)
  63.                // mais il faut d'abord gérer quelques cas d'exception :
  64.                // ... si c'est un char ou Character, pas de method valueOf
  65.                if ((paramsTypes[i] == char.class) || (paramsTypes[i] == Character.class)) {
  66.                   param = new Character(((String) param).charAt(0));
  67.                }
  68.                // si c'est une String ou un Object, y a rien à faire
  69.                else if ((paramsTypes[i] != String.class) && (paramsTypes[i] != Object.class)) {
  70.                   try {
  71.                      Class paramsType = paramsTypes[i];
  72.                      // il faut gérer le cas des types primitifs ...
  73.                      // dans ces cas là, on utilise le Wrapper
  74.                      if (paramsType == boolean.class) paramsType = Boolean.class;
  75.                      else if (paramsType == byte.class) paramsType = Byte.class;
  76.                      else if (paramsType == char.class) paramsType = Character.class;
  77.                      else if (paramsType == short.class) paramsType = Short.class;
  78.                      else if (paramsType == int.class) paramsType = Integer.class;
  79.                      else if (paramsType == long.class) paramsType = Long.class;
  80.                      else if (paramsType == float.class) paramsType = Float.class;
  81.                      else if (paramsType == double.class) paramsType = Double.class;
  82.                    
  83.                      // bon là j'ecris tout en une ligne, c'est moche, je sais ...
  84.                      // (en fait, j'invoke la methode valueOf et je récupère le resultat)
  85.                      param = paramsType.getMethod("valueOf", new Class[]{param.getClass()})
  86.                                        .invoke(null, new Object[]{param});
  87.                   } catch (Exception e) {
  88.                      // ca a pas marché. l'utiliosateur a du taper une mauvaise valeur => on recommence
  89.                      System.out.println("impossible de transformer '" + param + "' en " + paramsTypes[i].getName());
  90.                      i--; continue;
  91.                   }
  92.                }
  93.                params[i] = param;
  94.             }
  95.          }
  96.        
  97.          // maintenant, il ne reste plus qu'à apeller la méthode
  98.          Object valeurRetour = null;
  99.          try {
  100.             valeurRetour = metodeAAppeler.invoke(objet, params);
  101.          } catch (Exception e) {
  102.             System.out.println("L'invocation dynamique de la metode " +
  103.                                metodeAAppeler.getName() + " a provoque l'exception suivante : " + e);
  104.             e.printStackTrace();
  105.             System.out.println("<< Appuyer sur entree >>" );
  106.             clavier.readLine();
  107.             continue boucleSansFin;
  108.          }
  109.        
  110.          // on affiche le résultat si il y en a un :
  111.          if (metodeAAppeler.getReturnType() == void.class) {
  112.             System.out.println("La metode a ete invoquee  mais n'a pas de valeur de retour" );
  113.          }
  114.          else {
  115.             System.out.println("La metode a retourne la valeur : '" + valeurRetour + "' de type " +
  116.                                valeurRetour.getClass().getName());
  117.          }
  118.          System.out.println("<< Appuyer sur entree >>" );
  119.          clavier.readLine();
  120.       }
  121.    }
  122. }


 
Je m'arrête là pour le moment (j'ai faim). Si vous avez des questions ou que vous voulez que j'aille plus loin dites le ...
 
 

Reply

Marsh Posté le 24-07-2002 à 23:02:43   

Reply

Marsh Posté le 24-07-2002 à 23:15:57    

t'aurais pu parler du rmi en même temps, parce que la l'invocation dynamique toute seule c'est un peu de la  [:ryo]  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
enfin bon bel effort quand même  ;)


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 24-07-2002 à 23:21:52    

SchnapsMann a écrit a écrit :

t'aurais pu parler du rmi en même temps, parce que la l'invocation dynamique toute seule c'est un peu de la  [:ryo]  




:??: hein ?
 
où tu as vu que l'invocation dynamique ne servait qu'avec rmi ?
Est tu sur de savoir de quoi tu parles ?
 
et pui si tu as des préisions ajouter sur le sujet, ce topic t'es ouvert

Reply

Marsh Posté le 24-07-2002 à 23:30:10    

benou a écrit a écrit :

 
:??: hein ?
 
où tu as vu que l'invocation dynamique ne servait qu'avec rmi ?
Est tu sur de savoir de quoi tu parles ?
 
et pui si tu as des préisions ajouter sur le sujet, ce topic t'es ouvert




 
je ne dis pas que ca ne peut servir qu'avec rmi... je dis juste que dans d'autres contextes je n'y vois pas de réelle utilité, hormis la beauté intrinsèque de l'invocation dynamique, le tout en utilisant un class loader pour charger des classes plugins de folie dans des applis java mo - du - laires [:sobebra]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 24-07-2002 à 23:34:42    

SchnapsMann a écrit a écrit :

 
je ne dis pas que ca ne peut servir qu'avec rmi... je dis juste que dans d'autres contextes je n'y vois pas de réelle utilité.



on est d'accord.
mais il y en a. et plein ! dans les 3 premières pages de ce forum tu trouveras 2 topics qui parlent d'invocation dynamique et qui n'ont rien à voir avec RMI ...

Reply

Marsh Posté le 24-07-2002 à 23:39:03    

benou a écrit a écrit :

 
on est d'accord.
mais il y en a. et plein ! dans les 3 premières pages de ce forum tu trouveras 2 topics qui parlent d'invocation dynamique et qui n'ont rien à voir avec RMI ...




 
hormis la beauté intrinsèque de l'invocation dynamique, le tout en utilisant un class loader pour charger des classes plugins de folie dans des applis java mo - du - laires  [:sobebra]  
 
j'avais bien compris [:snake12]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 24-07-2002 à 23:44:00    

SchnapsMann a écrit a écrit :

...


C'est bien la peine que benou vienne donner un cours. Voilà donc les élèves de maintenant, toujours à raler... Sincèrement, benou, tes explications sont de plus en plus claires et précises, c'est vraiment un régal, pour qui veut se donner la peine de lire et de se laisser entraîner dans l'univers que tu tisses pour nous. Merci encore, tonton.
[:tonton_benou]


---------------
Le site de ma maman
Reply

Marsh Posté le 24-07-2002 à 23:44:31    

en relisant, je m'aperçoit que j'ai pas trop parlé de l'intérêt de l'invocation dynamique.
 
Il y a vraiment beaucoup d'exemple d'utilisation possible, je vais juste en siter quelques uns :
 
 - aiguillage d'une application (applet par exemple) en fonction de la version de la JVM installée
 - utilisation de classes développées après le programme principal (extensions des fonctionnalités d'un logiciel)
 - intéraction avec un programme en cours d'execution (exemple : context 'manager' de tomcat)
 - chargement et utilisation de classes en cours d'execution d'un programme (exemple : RMI)
 - écriture de programme intégrant du scripting
 - etc ...

Reply

Marsh Posté le 24-07-2002 à 23:46:26    

SchnapsMann a écrit a écrit :

 
 
hormis la beauté intrinsèque de l'invocation dynamique, le tout en utilisant un class loader pour charger des classes plugins de folie dans des applis java mo - du - laires  [:sobebra]  
 
j'avais bien compris [:snake12]  




mais c'est qu'il deviendrait presque pénible...

Reply

Marsh Posté le 24-07-2002 à 23:49:12    

Cherrytree a écrit a écrit :

Sincèrement, benou, tes explications sont de plus en plus claires et précises




ouais ben moi j'ai pas trouvé que j'avais été très clair: je vous ai balancé un gros exemple bien compliqué et j'ai pas expliqué/détaillé grand chose ...
 
C'est un sujet un peu vaste alors je préfère que vous posiez des questions si y a des trucs que vous avez pas bien pigé ...

Reply

Marsh Posté le 24-07-2002 à 23:49:12   

Reply

Marsh Posté le 25-07-2002 à 03:19:41    

benou a écrit a écrit :

 
ouais ben moi j'ai pas trouvé que j'avais été très clair: je vous ai balancé un gros exemple bien compliqué et j'ai pas expliqué/détaillé grand chose ...
 
C'est un sujet un peu vaste alors je préfère que vous posiez des questions si y a des trucs que vous avez pas bien pigé ...



Je te poserai les questions demain ou après demain, le temps que ça décante. J'ai l'impression d'avoir tout compris, tu sais.


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 08:43:55    

benou a écrit a écrit :

 
ouais ben moi j'ai pas trouvé que j'avais été très clair: je vous ai balancé un gros exemple bien compliqué et j'ai pas expliqué/détaillé grand chose ...
 
C'est un sujet un peu vaste alors je préfère que vous posiez des questions si y a des trucs que vous avez pas bien pigé ...




 
J'ai l'impression que l'invoquation dynamique n'offre pas de nouvelles possibilités, que c juste une manière plus jolie de faire les choses.
Parce que, par exemple, pr le contexte manager par exemple, il est tout autant possible d'invoquer "statiquement" les méthodes, après un aiguillage pas des if else.
Moins beau, je te l'accorde !
D'ailleurs je crois que mainetnant que g bien compris comment ça marche, je vais introduire ce mécanisme ds ma servlet...

Reply

Marsh Posté le 25-07-2002 à 09:02:11    

benou >>> :jap:
 
Tu seras notre rédacteur de news sur le site :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 25-07-2002 à 09:25:05    

el_gringo a écrit a écrit :

 
 
J'ai l'impression que l'invoquation dynamique n'offre pas de nouvelles possibilités, que c juste une manière plus jolie de faire les choses.
Parce que, par exemple, pr le contexte manager par exemple, il est tout autant possible d'invoquer "statiquement" les méthodes, après un aiguillage pas des if else.
Moins beau, je te l'accorde !
D'ailleurs je crois que mainetnant que g bien compris comment ça marche, je vais introduire ce mécanisme ds ma servlet...




 
Sisi, ca offre énormément de nouvelle possibilités : tu ne peux pas toujours savoir au moment où tu écris du code le nom des Classes et des méthodes sur lesquels tu devras agir ...
 
par exemple, si tu prend le programpme que j'ai donné, je me sers d'une String comme objet sur lequel faire mes appels dynamique. c'est vrai que la opn aurait pu faire des gros if parce qu'on connait les méthodes de cet objet, mais j'aurais très bien pu au début du programme demander le nom d'une classe (n'iporte laquelle), crééer une instance de cette classe, et appaler des méthodes deçu. Ca tu ne peux pas le faire avec des if !


Message édité par benou le 25-07-2002 à 09:29:03
Reply

Marsh Posté le 25-07-2002 à 09:29:19    

DarkLord a écrit a écrit :

benou >>> :jap:
 
Tu seras notre rédacteur de news sur le site :)




ca marche ! :) :)

Reply

Marsh Posté le 25-07-2002 à 09:44:40    

Quel régal cette confiture !  ;)  
Non sans dec', j'ai pas encore étudié le deuxième bout de code (le "gros" ), mais rien que ce t'expliques avant, on comprend tout ! Et ça m'a l'air trop puissant, je savais que ça existait, mais j'imaginais pas exactement comment le mettre en oeuvre, et on trouve pas beaucoup de doc. la-dessus  :jap:  :jap:  
 
Merci et merci ! En plus, je pense qu'autour de moi, y en a d'autres que ça va interresser !
 
Je pense que je faire murir ton bout de code, le tourner dans tous les sens, et après ... j'espère que tu seras là pour répondre aux questions  :D  :D

Reply

Marsh Posté le 25-07-2002 à 10:04:17    

je suis comme les scouts : toujours prêt : :D

Reply

Marsh Posté le 25-07-2002 à 10:08:33    

benou a écrit a écrit :

 
 
Sisi, ca offre énormément de nouvelle possibilités : tu ne peux pas toujours savoir au moment où tu écris du code le nom des Classes et des méthodes sur lesquels tu devras agir ...
 
par exemple, si tu prend le programpme que j'ai donné, je me sers d'une String comme objet sur lequel faire mes appels dynamique. c'est vrai que la opn aurait pu faire des gros if parce qu'on connait les méthodes de cet objet, mais j'aurais très bien pu au début du programme demander le nom d'une classe (n'iporte laquelle), crééer une instance de cette classe, et appaler des méthodes deçu. Ca tu ne peux pas le faire avec des if !




 
Comme prof, en java, c vrai que c bien agréable de te lire.
Par contre, on va pas te demander des cours d'orthographe ! :D

Reply

Marsh Posté le 25-07-2002 à 10:10:56    

el_gringo a écrit a écrit :

 
 
Comme prof, en java, c vrai que c bien agréable de te lire.
Par contre, on va pas te demander des cours d'orthographe ! :D
 




:) vaut mieux pas !!! ;)
 
et puis bon, ca me fait chier de me relire : j'écris et je valide, alors entre les fautes de frappes et les fautes d'orthographes ... :sarcastic:

Reply

Marsh Posté le 25-07-2002 à 10:18:13    

benou a écrit a écrit :

 

Code :
  1. package tontonbenou.invocdyn;
  2. import java.lang.reflect.*;
  3. public class Test {
  4.    public static void main (String[] leopard) {
  5.      
  6.       String unObjectQuelconque = "je suis quelconque";


 




[:rofl]


Message édité par Harkonnen le 25-07-2002 à 10:18:48

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-07-2002 à 10:35:13    

Harkonnen a écrit a écrit :

 
[:rofl]




ca m'étonnait que personne l'ait vu ... :D :D

Reply

Marsh Posté le 25-07-2002 à 10:39:36    

benou a écrit a écrit :

 
ca m'étonnait que personne l'ait vu ... :D :D




Bon assez rigolé !
 
Le site : vous faites comment finalement ?
qui héberge ?
en php ? qui s'y colle ?
l'habillage -> ok !
 
redaction ? reprise des topics du forum ?
 
specif., cahier des charges, planning ... et tout et tout ! :D  
 
allez allez, faut que ça tourne !  :hap:

Reply

Marsh Posté le 25-07-2002 à 10:55:24    

L'interface -> OK.
Si vous voulez on peut l'héberger sur mon compte free, vu que mon site prends pas énormément de place. Avec une redirection Ulimit, rulez. Il faudrait avoir le maximum de liberté, mais pour la beauté du geste, il faudrait éventuellement qu'à chaque article soit associé un relecteur, pour retravailler au moins l'orthographe (pour benou, ça me parait obligatoire, et ça ne me dérange pas d'être ton relecteur). Ensuite il faut savoir ce qu'on met dans le site :
- une JavaFAQ
- des articles
- Quoi d'autre ? (que voulez faire de ce site ?)
Quelle doit être l'esprit : sérieux ? franche camaraderie ? Humour string léopard (la croisière Java@HFR s'amuse) ? Chacun son style ?
Va t'il y avoir beaucoup d'articles. Si c'est un article par semaine, HTML me parait approprié : seulement une page à modifier et une à ajouter... Alors que PHP, faut gérer l'upload, surtout si on veut réaliser des textes accompagnés de graphiques, bref la merde, si on veut tout automatiser... Est-ce donc un bon choix ?
Voilà pèle-mèle les idées qui me tournent dans la tête.


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 10:55:52    

Dans un premier temps, je propose les étapes suivantes:
 

  • Rassembler les noms / adresses mails des personnes qui souhaitent y travailler
  • Créer une ML pour les problèmes / questions que l'on pourrait avoir concernant le site
  • Créer un template pour un problème typique (énoncé du problème, solution). Un peu comme les templates des articles sur hardware.fr


 
Une fois qu'on a ces templates, je suggère que chaque personne rassemble ses expériences personnelles du forum ou hors forum et les rédige dans ces fameux templates et exit les zozos avec:
 
comment faire pour lancer un .bat depuis java
comment faire un .exe de mon prog Java
etc etc
 
On pourrait aussi faire un forumlaire ou l'internaute décrit son problème et on y répondrai + ajout dans la base du site.
 


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 25-07-2002 à 10:57:57    

Et ça vous dirait de faire la même chose pour .NET ou MFC ? :d


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-07-2002 à 10:58:22    

DarkLord a écrit a écrit :

Dans un premier temps, je propose les étapes suivantes:
 

  • Rassembler les noms / adresses mails des personnes qui souhaitent y travailler
  • Créer une ML pour les problèmes / questions que l'on pourrait avoir concernant le site
  • Créer un template pour un problème typique (énoncé du problème, solution). Un peu comme les templates des articles sur hardware.fr


 
Une fois qu'on a ces templates, je suggère que chaque personne rassemble ses expériences personnelles du forum ou hors forum et les rédige dans ces fameux templates et exit les zozos avec:
 
comment faire pour lancer un .bat depuis java
comment faire un .exe de mon prog Java
etc etc
 
On pourrait aussi faire un forumlaire ou l'internaute décrit son problème et on y répondrai + ajout dans la base du site.
 



Euh d'accord avec tout le reste, mais ce dernier item ne vient pas en doublon du forum HFR, sur lequel on s'appuie ?


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 10:58:51    

Harkonnen a écrit a écrit :

Et ça vous dirait de faire la même chose pour .NET ou MFC ? :d



Le faire non, mais le lire, volontiers !


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 11:03:43    

Cherrytree a écrit a écrit :

Euh d'accord avec tout le reste, mais ce dernier item ne vient pas en doublon du forum HFR, sur lequel on s'appuie ?




 
Par forumlaire je voudrais obliger les gens à remplir les champs stacktrace et compagnie ...
 
Mais bon c'est assez vrai ce que tu dis. Laisons tomber


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 25-07-2002 à 11:09:25    

DarkLord a écrit a écrit :

 
 
Par forumlaire je voudrais obliger les gens à remplir les champs stacktrace et compagnie ...
 
Mais bon c'est assez vrai ce que tu dis. Laisons tomber



:jap: Mieux vaut rédiger un article expliquant la résolution des problèmes (à la rapide) en éduquant le gusse pour qu'il pense à ajouter le stacktrace de lui-même.


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 11:11:22    

Je pense que ça pourrait servir à déposer également des classes interressantes ou utiles, histoire de pouvoir recycler des trucs ...
Je suis d'accord avec Cherytree : il ne faut pas faire de 2ème forum, sinon ça va être la merde ... :-/
 
EDIT :  reformulation de mon posten langage compréhensible


Message édité par bobuse le 25-07-2002 à 11:12:24
Reply

Marsh Posté le 25-07-2002 à 11:33:58    

bobuse a écrit a écrit :

Je pense que ça pourrait servir à déposer également des classes interressantes ou utiles, histoire de pouvoir recycler des trucs ...
Je suis d'accord avec Cherrytree : il ne faut pas faire de 2ème forum, sinon ça va être la merde ... :-/
 
EDIT :  reformulation de mon posten langage compréhensible



(manquait un r : c'est pour antp -> spécial dédicasse ;)) Sinon, l'idées des classes utiles, ouais, c'est une bonne idée.


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 11:36:37    

bobuse a écrit a écrit :

Je pense que ça pourrait servir à déposer également des classes interressantes ou utiles, histoire de pouvoir recycler des trucs ...



 
Entièrement d'accord : la FAQ devra s'accompagner d'exemples et de .java téléchargeables !
 
D'accord aussi pour éviter de faire un doublon avec ce forum : il faudrait que le site indique qu'on est près à répondre à toute question bien formulée sur le forum prog@HFR.
 
pour les rubriques :
 - présentation du site (le but, les acteurs, infos sur prog@HFR)
 - FAQ (les questions les plus posées sur le forum + réponses)
 - Articles (des points précis abordés de façon détaillés)
 - Utilitaires (les classes ou progs utils développés par les acteurs du site)
 - questions (une page donannt l'adresse du forum avec les indications pour poster un "bon" post : stacktrace, code, etc)
 
ce serait déjà pas mal ca non ?
 
pour la technique, on peut faire du PHP pour factoriser le travail : des include pour les headers et le sommaire, mais je pense qu'il faut rester le plus simple possible : du HTML statique tout simlpe. Il faut qu'on puisse mettre à jour le site simplement en pushant des pages HTML en FTP ... ca sera plus simple opur tout le monde je pense ...
 
sinon, pour le correcteur, si je fais des articles, je ferrai un effort sur l'orthographe, ce que je fais pas ici ...

Reply

Marsh Posté le 25-07-2002 à 11:38:25    

sinon, je pense qu'on peut faire comme sur ce forum : un site à la fois sympa à lire mais sérieux quand on aborde les points techniques

Reply

Marsh Posté le 25-07-2002 à 11:40:30    

J'ai oublié : il faut aussi une rubrique "Liens" qui indique les bonnes adresses pour le Java,un peu à la façon du Post FAQ java de dark ...
 
et puis une rubrique "bouquins" ce serait sympa aussi ...

Reply

Marsh Posté le 25-07-2002 à 11:42:18    

benou a écrit a écrit :

 
pour les rubriques :
 - présentation du site (le but, les acteurs, infos sur prog@HFR)
 - FAQ (les questions les plus posées sur le forum + réponses)
 - Articles (des points précis abordés de façon détaillés)
 - Utilitaires (les classes ou progs utils développés par les acteurs du site)
 - questions (une page donannt l'adresse du forum avec les indications pour poster un "bon" post : stacktrace, code, etc)


Je suis d'accord avec l'ensemble de ton post. Comme je vais essayer de proposer une belle interface, j'ai besoin de connaître les rubriques pour la navigation. Si tout le monde est d'accord sur celles ci-dessus, je commence le design ce soir (si tout se passe bien).


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 11:42:55    

benou a écrit a écrit :

J'ai oublié : il faut aussi une rubrique "Liens" qui indique les bonnes adresses pour le Java,un peu à la façon du Post FAQ java de dark ...
 
et puis une rubrique "bouquins" ce serait sympa aussi ...



OK.


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 12:04:37    

bon c'est chez qui qu'il faut envoyer les adresses emails pour faire une ML ?
 
De là on distribue les responsabilités et on discute


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 25-07-2002 à 12:06:18    

DarkLord a écrit a écrit :

bon c'est chez qui qu'il faut envoyer les adresses emails pour faire une ML ?
 
De là on distribue les responsabilités et on discute



Chez toi ? :D


---------------
Le site de ma maman
Reply

Marsh Posté le 25-07-2002 à 12:10:26    

fais peter (en MP)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 25-07-2002 à 12:41:18    

J trouve ca chouette comme concepte mais en Java je ne vois pas réellement l'utilité. La seule application utile que je connaisse de java.lang.reflect.* c'est l'utilisation qu'est fait pour les beans (http://developer.java.sun.com/deve [...] ect00.html).
Et l'introspection est assez limité dans le sense que toutes les classes de java.lang.reflect.* sont final, donc pas de redéfinition possible.


Message édité par MelloW le 25-07-2002 à 12:42:06

---------------
Belgian Connection
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed