 |
 |
 |
2) Tout est « objet » |
|
 |
|
Texte original |
 |
Traducteur :
Raczy |
|
 |
///
|
Ce chapitre contient
4 pages
1
2
3
4
|
|
|
 |
 |
 |
 |
 |
 |
|
 |
|
 |
 |
 |
Summary
|
 |
Sommaire
|
 |
 |
 |
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.
|
 |
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.
|
 |
 |
 |
Exercises
|
 |
Exercices
|
 |
 |
 |
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.
|
 |
|
 |
 |
 |
- 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.
- Find
the code fragments involving ATypeName and turn them into a program that
compiles and
runs.
- Turn the
DataOnly code fragments into a program that compiles and
runs.
- Modify
Exercise 3 so that the values of the data in DataOnly are assigned to and
printed in
main( ).
- Write
a program that includes and calls the storage( ) method defined as a
code fragment in this
chapter.
- Turn the
StaticFun code fragments into a working
program.
- 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.
- Turn
the AllTheColorsOfTheRainbow example into a program that compiles and
runs.
- 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.
- Turn
docTest into a file that compiles and then run it through javadoc.
Verify the resulting documentation with your Web
browser.
- Add an HTML
list of items to the documentation in Exercise
10.
- 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.
|
 |
- 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.
- Trouver le morceau de code concernant ATypeName et
faites-en un programme qui compile et s'exécute.
- Transformez le morceau de code DataOnly en un programme qui compile et qui
s'exécute.
- Modifiez l'exercice 3 de telle sorte que les valeurs des données dans
DataOnly soient affectées et affichées dans
main( ).
- Écrivez un programme qui inclus et appelle la méthode
storage( ) définie comme morceau de code dans ce chapitre.
- Transformez le morceau de code StaticFun en un programme
qui fonctionne.
- É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.
- Transformez l'exemple AllTheColorsOfTheRainbow en un
programme qui compile et s'exécute.
- 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.
- Transformez docTest en un fichier qui compile et exécutez javadoc dessus.
Contrôlez la documentation qui en résulte avec votre browser Web.
- Ajoutez une liste d'éléments en HTML, à la documentation de l'exercice
10.
- 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.
|
 |
 |
 |
[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.)
|
 |
[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).
|
 |
 |
 |
[21]
static methods, which you’ll learn about soon, can be called for
the class, without an object.
|
 |
[22] Les méthodes
static, que nous découvrirons ultérieurement, peuvent être appelées pour la
classe, sans passer par un objet.
|
 |
 |
 |
[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.
|
 |
[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.
|
 |
 |
 |
[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:
|
 |
[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 :
|
 |
 |
 |
try {
System.in.read();
} catch(Exception e) {}
|
 |
try { System.in.read(); } catch(Exception e) {}
|
 |
 |
 |
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.
|
 |
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.
|
 |
 |
 |
[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.
|
 |
[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.
|
 |
 |
 |
 |
 |
 |
 |
 |
|
 |
 |
 |
|
 |