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

avec Java Discussion :

Besoins d'explications sur les classes de base et de son utilisation


Sujet :

avec Java

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut Besoins d'explications sur les classes de base et de son utilisation
    Bonjour tout le monde,


    Dans l'exemple ci-dessous de Jeam-Michel Doudoux (Développons en Java), je n'ai pas encore le déclic sur cette façon d'instancier (voir ligne du BufferedReader) et le choix des classes et méthodes pour arrriver à afficher le contenu, j'explique plus bas mon raisonnement:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
     
    public class TestRuntime2 
    {
      public static void main(String[] args) 
      {
        try 
          {
            Runtime runtime = Runtime.getRuntime();
            Process proc = runtime.exec("cmd.exe /c set");
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String str;
            while ((str = in.readLine()) != null) 
              {
                System.out.println(str);
              }
            in.close();
            proc.waitFor();
          } 
      catch (Exception e) 
        {
          e.printStackTrace();
        }
      }
    }
    Ma façon de comprendre/de faire est la suivante:
    1 - La méthode getInputStream va retourner une classe au nom de InputStream.
    2 - Avec Cette classe InputStream, je ne peux pas encore afficher le contenu (résultat) sur mon écran.
    3 - Comme je ne connais pas toutes les classes et méthodes de Java, je fais une recherche grâce à l'outil http://javasearch.developpez.com
    4 - Je clic sur 6.0, j'encode InputSream dans la zone d'encodage, je clic sur classes et j'appuie sur OK
    5 - J'obtiens une liste de 34 classes correspondant à ma recherche
    6 - Je me focalise sur le package java.io du fait que je veux voir le résultat (entrée, sortie) cela me semble logique
    7 - Il me reste les classses suivantes:
    BufferedInputStream ; ByteArrayInputStream; DataInputStream ; FileInputStream ; FilterInputStream ; InputStream ; InputStreamReader ; LineNumberInputStream ; ObjectInputStream ; ObjectInputStream.GetField ; PipedInputStream ; PushbackInputStream ; SequenceInputStream ; StringBufferInputStream
    8 - A ce moment, je commence à me perdre qu'elle est la classe que je dois choisir !!!
    9 - Bon ok je prends InputStreamReader parce qu'il est noté Reader mais je ne suis pas convaincu, je trouve cela trop façile/léger (pq pas la classe ObjectInputSream ou autres) ?
    10 - InputStreamReader m'offre quelques méthodes basées sur la lecture de caractère pas très pratique.
    11 - Je remarque que la classe InputStreamReader hérite de la classe java.io.Reader
    12 - Je vois que la classe InputStreamReader hérite de la classe java.io.Reader
    13 - Je vois que cette classe java.io.Reader à des sous classes, je prends la sous classe BufferedReader car celle-ci contient une méthode qui me permet d'afficher ma ligne de texte.

    Je ne sais pas si ma façon de faire est bonne, je n'ai pas l'impression, qu'en pensez-vous ?
    Dois-je connaitre toutes les classes et méthodes de java ?
    Dois-je utiliser une autre approche pour élaborer mon code/programme ?
    Dois-je chercher des exemples sur Google pour avoir un bout de code pour savoir comment afficher du texte à partir d'une classe précise ?
    Est-qu'il existe un diagramme des classes de base de Java afin d'avoir une meilleur visualisation (relation entre elle ainsi que les méthodes) ?

    Bref, je suis un peu perdu (noyé par tous les choix: classes et méthodes) !

    En outre, n'y-a-t'il moyen d'instancier différement (voir ci-dessous), car étant débutant, je trouve cela hard (pas très lisible)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));

    Pouvez-vous m'aider ?

    Merci d'avance,

    Yves

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Certaines choses ne peuvent pas se deviner ou se trouver juste avec de la doc. Si on te demande de lire du texte sans t'avoir parlé d'abord de InputStream, Reader et BufferedReader, on te demande l'impossible.
    C'est à ça que servent les tutoriaux : quand la doc ne suffit pas. Et c'est encore mieux quand ils expliquent que InputStream et Reader sont prévus pour être décorés ou wrappés : pour être buffurisés, et pour transformer un InputStream en Reader.

    Il n'est pas nécessaire de connaître toutes les classes de Java (mais quand on les connaît à force d'expérience ça aide, c'est évident,) mais celles qui posent les premières briques du besoin que tu as.
    Une fois que tu sais que c'est en rapport avec telle et telle classe, là il est temps de se demander quelles autres classes peuvent s'en servir, l'améliorer ou les remplacer.

    En outre, n'y-a-t'il moyen d'instancier différement (voir ci-dessous), car étant débutant, je trouve cela hard (pas très lisible)
    Pas vraiment, mais tu peux créer une méthode pour le rendre plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader in = getOutputReader(proc);
    Pour information, la logique de la chose, est :
    - tu as besoin de lire des données produites en dehors de ton programme. C'est soit un Reader si ça ne peut être que du texte, soit un InputStream si ça peut être n'importe quoi, donc sous forme d'octets.
    - Ici les données sont produites par un autre processus, ça peut produire aussi bien du texte que des images ou des sons ou n'importe quoi, donc InputStream pour lire les octets.
    - toi tu t'attends à ce qu'il produise du texte, tu as donc besoin de convertir le flux d'octets en flux texte. Tu utilises donc un InputStreamReader, pour construire un Reader à base d'InputStream.
    - Tu veux le lire ligne par ligne, tu augmentes donc ton Reader en BufferedReader, qui est capable de lire ligne par ligne.
    -- C'est BufferedReader qui lit ligne par ligne, tout simplement parce que lire ligne par ligne demande de buffuriser la lecture jusqu'à atteindre une fin de ligne, pour pouvoir renvoyer tout ce qui a été lu avant. BufferedReader, comme son nom l'indique, est un Reader avec lecture buffurisée. Par conséquent il est facile pour lui de lire ligne par ligne, et c'est pour ça qu'il a une méthode qui le fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut
    Merci pour l'info, pas de "miracle", il faut étudier un maximum et pratiquer du dev. Java.

    sur le site http://docs.oracle.com/javase/7/docs/api/ j'ai regardé la classe File de java.io
    J'ai cliqué sur Use et grâce à ce lien je vois toutes les classes et méthodes qui utilisent la classe File, je trouve cela très pratique.
    Je pense que même confirmer cette fonctionalité est très intéressante ?

    Merci,

    yves

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bien sûr.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Besoin d'explication sur les imports
    Par Chicard dans le forum Langage
    Réponses: 13
    Dernier message: 14/08/2007, 16h24
  2. Besoin de conseil sur les classes
    Par SuperWeight dans le forum MFC
    Réponses: 1
    Dernier message: 04/06/2007, 21h44
  3. [Tableaux] Besoin d'explications sur les tableaux imbriqués
    Par gateaubasque dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2007, 09h12
  4. [POO] Besoin de tutorat sur les classes
    Par misterniark dans le forum Langage
    Réponses: 11
    Dernier message: 20/04/2006, 13h48
  5. Besoin d'explications sur les charset
    Par EGPMS dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 03/02/2006, 15h38

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