t
t
t
t
t t   2) Tout est « objet »
tttt
t
carrea) Préface carreb) Avant-propos carre1) Introduction sur les &laqo; objets » 2) Tout est &laqo; objet » carre3) Contrôle du flux du programme carre4) Initialization & Cleanup carre5) Cacher l'implémentation carre6) Réutiliser les classes carre7) Polymorphisme carre8) Interfaces & classes internes carre9) Stockage des objets carre10) Error Handling with Exceptions carre11) Le système d’E/S de Java carre12) Identification dynamique de type carre13) Création de fenêtres & d'Applets carre14) Les &laqo; Threads » multiples carre15) Informatique distribuée carreA) Passage et retour d'objets carreB) L'Interface Java Natif (JNI) carreC) Conseils pour une programation stylée en Java carreD) Resources
Texte original t Traducteur : Raczy
t
t
///
Ce chapitre contient 4 pages
1 2 3 4
    
t t t
t t t
t
t t t

Summary

t

Sommaire

t t t
In this chapter you have seen enough of Java programming to understand how to write a simple program, and you have gotten an overview of the language and some of its basic ideas. However, the examples so far have all been of the form “do this, then do that, then do something else.” What if you want the program to make choices, such as “if the result of doing this is red, do that; if not, then do something else”? The support in Java for this fundamental programming activity will be covered in the next chapter.
t Dans ce chapitre on en a vu suffisamment sur la programmation Java pour comprendre comment écrire un programme simple et on a eu une vue d'ensemble du langage et de certaines des idées de base. Toutefois, les exemples vus jusqu'à présent ont tous été du type « faire ceci, puis faire cela, puis faire autre chose ». Qu'en advient-il si on veut faire un programme pour réaliser des choix, comme dans « si le résultat de ceci est rouge, faire cela, sinon faire autre chose » ? Les outils disponibles en Java pour cette activité de programmation fondamentale seront vus dans le prochain chapitre.
t t t

Exercises

t

Exercices

t t t
Solutions to selected exercises can be found in the electronic document The Thinking in Java Annotated Solution Guide, available for a small fee from www.BruceEckel.com.
t
t t t
  1. Following the HelloDate.java example in this chapter, create a “hello, world” program that simply prints out that statement. You need only a single method in your class (the “main” one that gets executed when the program starts). Remember to make it static and to include the argument list, even though you don’t use the argument list. Compile the program with javac and run it using java. If you are using a different development environment than the JDK, learn how to compile and run programs in that environment.
  2. Find the code fragments involving ATypeName and turn them into a program that compiles and runs.
  3. Turn the DataOnly code fragments into a program that compiles and runs.
  4. Modify Exercise 3 so that the values of the data in DataOnly are assigned to and printed in main( ).
  5. Write a program that includes and calls the storage( ) method defined as a code fragment in this chapter.
  6. Turn the StaticFun code fragments into a working program.
  7. Write a program that prints three arguments taken from the command line. To do this, you’ll need to index into the command-line array of Strings.
  8. Turn the AllTheColorsOfTheRainbow example into a program that compiles and runs.
  9. Find the code for the second version of HelloDate.java, which is the simple comment documentation example. Execute javadoc on the file and view the results with your Web browser.
  10. Turn docTest into a file that compiles and then run it through javadoc. Verify the resulting documentation with your Web browser.
  11. Add an HTML list of items to the documentation in Exercise 10.
  12. Take the program in Exercise 1 and add comment documentation to it. Extract this comment documentation into an HTML file using javadoc and view it with your Web browser.
t
  1. En suivant l'exemple HelloDate.java de ce chapitre, créez un programme « hello, world » qui affiche simplement cette phrase. Vous n'avez besoin que d'une seule méthode dans la classe (la méthode « main » qui est exécutée quand le programme démarre). Pensez à la rendre static et à indiquer la liste de paramètres, même si la liste de paramètres n'est pas utilisée. Compilez ce programme avec javac. Si vous utilisez un environnement de développement autre que JDK, apprenez à compiler et exécuter les programmes dans cet environnement.
  2. Trouver le morceau de code concernant ATypeName et faites-en un programme qui compile et s'exécute.
  3. Transformez le morceau de code DataOnly en un programme qui compile et qui s'exécute.
  4. Modifiez l'exercice 3 de telle sorte que les valeurs des données dans DataOnly soient affectées et affichées dans main( ).
  5. Écrivez un programme qui inclus et appelle la méthode storage( ) définie comme morceau de code dans ce chapitre.
  6. Transformez le morceau de code StaticFun en un programme qui fonctionne.
  7. Écrivez un programme qui imprime trois paramètres saisis sur la ligne de commande. Pour faire ceci il faut indexer le tableau de String représentant la ligne de commande.
  8. Transformez l'exemple AllTheColorsOfTheRainbow en un programme qui compile et s'exécute.
  9. Trouvez le code de la seconde version de HelloDate.java qui est le petit exemple de commentaire de documentation. Exécutez javadoc sur le fichier et visualisez le résultat avec votre browser Web.
  10. Transformez docTest en un fichier qui compile et exécutez javadoc dessus. Contrôlez la documentation qui en résulte avec votre browser Web.
  11. Ajoutez une liste d'éléments en HTML, à la documentation de l'exercice 10.
  12. Prenez le programme de l'exercice 1 et ajoutez lui une documentation. Sortez cette documentation dans un fichier HTML à l'aide de javadoc et visualisez la avec votre browser Web.
t t t
[20] This can be a flashpoint. There are those who say “clearly, it’s a pointer,” but this presumes an underlying implementation. Also, Java references are much more akin to C++ references than pointers in their syntax. In the first edition of this book, I chose to invent a new term, “handle,” because C++ references and Java references have some important differences. I was coming out of C++ and did not want to confuse the C++ programmers whom I assumed would be the largest audience for Java. In the 2nd edition, I decided that “reference” was the more commonly used term, and that anyone changing from C++ would have a lot more to cope with than the terminology of references, so they might as well jump in with both feet. However, there are people who disagree even with the term “reference.” I read in one book where it was “completely wrong to say that Java supports pass by reference,” because Java object identifiers (according to that author) are actually “object references.” And (he goes on) everything is actually pass by value. So you’re not passing by reference, you’re “passing an object reference by value.” One could argue for the precision of such convoluted explanations, but I think my approach simplifies the understanding of the concept without hurting anything (well, the language lawyers may claim that I’m lying to you, but I’ll say that I’m providing an appropriate abstraction.)
t [21] Ceci peut être une poudrière. Il y a ceux qui disent « c'est clairement un pointeur », mais ceci suppose une implémentation sous-jacente. De plus, les références Java sont plutôt apparentées aux références C++ qu'aux pointeurs dans leur syntaxe. Dans la première édition de ce livre, j'ai choisi d'inventer un nouveau terme, « manipulateur » (handle), car les références C++ et les références Java ont des différences importantes. Je venais du C++ et je ne voulais pas embrouiller les programmeurs C++ que je supposais être le principal public de Java. Dans la seconde édition, j'ai décidé que « référence » était le terme le plus généralement utilisé et que tous ceux qui venaient du C++ auraient à s'occuper de bien d'autres choses que de la terminologie de référence, donc qu'ils pourraient aussi bien y plonger les deux pieds en avant. Toutefois, il y a des gens qui ne sont pas d'accord, même avec le terme « référence ». J'ai lu dans un livre qu'il était « complètement faux de dire que Java supportait les passages par références », parce que les identificateurs des objets Java (selon cet auteur) sont en fait des « références à des objets ». Et (continue-t-il) tout est en fait passé par valeur. Donc on ne passe pas une référence, on « passe une référence à un objet, par valeur ». On pourrait discuter de la précision d'une explication si alambiquée mais je pense que mon approche simplifie la compréhension du concept sans blesser qui que ce soit (d'accord, les avocats du langage pourraient prétendre que je mens, mais je répondrai que je fournis une abstraction appropriée).
t t t
[21] static methods, which you’ll learn about soon, can be called for the class, without an object.
t [22] Les méthodes static, que nous découvrirons ultérieurement, peuvent être appelées pour la classe, sans passer par un objet.
t t t
[22] With the usual exception of the aforementioned “special” data types boolean, char, byte, short, int, long, float, and double. In general, though, you pass objects, which really means you pass references to objects.
t [23] Avec les exceptions habituelles pour les types de données précités boolean, char, byte, short, int, long, float, et double. En général, toutefois, on passe des objets, ce qui veut dire qu'en réalité on passe des références à des objets.
t t t
[23] Some programming environments will flash programs up on the screen and close them before you've had a chance to see the results. You can put in the following bit of code at the end of main( ) to pause the output:
t [24] Certains environnements de programmations feront apparaître brièvement le programme à l'écran et le fermeront avant d'avoir eu une chance de voir le résultat. On peut mettre le morceau de code suivant à la fin du main( ) pour obtenir une pause sur la sortie :
t t t
try { System.in.read(); } catch(Exception e) {} t
try {
      System.in.read();
    } catch(Exception e) {}
t t t
This will pause the output until you press “Enter” (or any other key). This code involves concepts that will not be introduced until much later in the book, so you won’t understand it until then, but it will do the trick.
t Cette pause durera jusqu'à ce qu'on appuye sur « Entrée » (ou toute autre touche). Ce code met en jeu des concepts qui ne seront introduits que bien plus tard dans ce livre, donc vous ne le comprendrez pas d'ici là, mais il fera l'affaire.
t t t
[24] A tool that I created using Python (see www.Python.org) uses this information to extract the code files, put them in appropriate subdirectories, and create makefiles.
t [25] Un outil que j'ai créé avec Python (voir www.Python.org) utilise cette information pour extraire les fichiers sources, les mettre dans les sous-répertoires appropriés et créer les makefiles.
t t t
t t t
t t
\\\
    
t t t
t
     
Sommaire Le site de Bruce Eckel