Livre pour apprendre la programmation en
JAVA (à partir de 11 à 88 ans),
(voir aussi des bribes: ApprendreJava)
partir de:
http://myflex.org/books/java4kids/JavaEnfants.pdf
(existe aussi en British:
http://myflex.org/books/java4kids/JavaKid811.pdf )
ERRATUM
Cette page contient des corrections/compléments au livre ci dessus. Elle est rédigée en Décembre 2009.
les images du .pdf original correspondent à des anciennes versions: (
Eclipse 3.0, java JDK 1.5, Internet Explorer).
Cette page est adaptée à Windows XP français, session sans droit d'administration, Java JDK 1.6,
Eclipse version 3.5 (Galileo), et navigateur Firefox (3.0 ou 3.5)
sous Vista & Seven quelques variantes seraient à ajouter.
copier/coller
pas disponible si on lit le livre directement depuis Firefox;
pour en disposer, il faut télécharger le fichier .PDF sur le disque dur de l'ordinateur et l'ouvrir avec Acrobatreader.
pour les archivistes (anciennes versions d'eclipse): http://archive.eclipse.org/eclipse/downloads/index.php
Chapitre 1
page 13:
en haut de page, avant le "Comment installer"
d'abord vérifier si le JDK Java est déjà installé
GAFFE ceola teste sans doute JRE et pas le JDK probable qu'il faut faire le teste ci dessous pour le JDK
par l'outil Sun:
http://www.java.com/fr/download/installed.jsp?detect=jre&try=1
ou expérimentalement:
Vérification simple si le JDK est déja installé:
- ouvrir une fenêtre de commande (comme indiqué page 19., si besoin lire:
fenetredecommande)
- frapper
javac
Si le logiciel est là, s'affiche un résumé de son mode d'emploi, dans ce cas, passer directement à page 17: "les trois étapes de la programmation"
Si la réponse est "
javac n'est pas reconnu..." continuer en suivant le livre.
téléchargement du kit de développement:
ouvrir:
http://java.sun.com/j2se
le site est en British,
pas trouvé comment passer en FRANCAIS à dire
chosir l'onglet "Downloads Java Se " (téléchargements) ou directrement:
http://java.sun.com/javase/downloads/index.jsp
le "JS2E1.5.0" du livre est (of course) une vieillerie,
choisir "JDK 6 update 18 (JDK)" (sans rien de plus) (
le 18 varie avec les nouvelles versions )
puis vérifier que le système cible proposé est bien:
plateforme: Windows
passer l'invitation à recevoir des infos par email (lien skip... en bas de la fenêtre)
actuellement télécharge: JDK-6u-17-windows-i586.exe (73 Mo) (mais variera en fonction des mises à jour)
Note le dossier où se fait le téléchargement du fichier, tu devras l'utiliser pour lancer (et relancer si besoin) l'installation ou l'effacer.
au 20100328, les fichiers sont:
JRE: jre-6u18-windows-i586-s.exe (16 492 320 octets)
JDK: jdk-6u17-windows-i586.exe (77 125 400 octets
Page 14:
en fin de page et d'installation, détruire le fichier téléchargé (JDK-6u-17-windows-i586.exe) qui n'est plus utile; cela évitera d'encombrer le disque dur.
20091203: le chemin créé est "c:\program files\java\jdk1.6.0_17"
Note ce chemin d'installation, il faudra le réutiliser page suivante.
page 16
le chemin actuel n'est pas celui de l'image mais celui noté en page 14.
préciser si mise à jour du path demande droits d'administration, sinon... possible de le mettre dans user ?
ATTENTION: la procédure de modification de la variable système PATH demande d'avoir les droits d'administration, si non, il faut modifier/ajouter la variable PATH dans le cadre "variable de l'utilisateur..." (celui du haut) en y inscrivant la même valeur.
ATTENTION: évidemment ainsi installé, le JDK ne sera disponible que pour l'utilisateur qui l'a installé. Les autres devront aussi ajouter le chemin dans leur variable PATH.
page 18
avant de frapper le programme,
ouvrir le dossier "mes documents"
créer un nouveau dossier "exosjava4Kids"
ouvrir ce dossier
créer un nouveau document, nommé avec l'extension .java
page 19:
si "exécuter" n'apparait pas dans le menu du bouton démarrer, il faut l'ajouter en passant par les "propriétés" (clic droit) du bouton "démarrer"
il aurait mieux valu parler plus tôt du chemin d'enregistrement du fichier
le dossier montré (c:\excerices) n'est pas conforme à l'usage Windows,
il faut enregistrer le sous son "profil"
par exemple, suivant la remarque faite page 18, dans un dossier "
ExosJava4kids" placé dans le dossier
"mes documents"
page 21:
le premier lien présenté sur deux lignes, n'aboutit pas, en fait il est coupé il faut le compléter à la main ou utiliser le suivant:
http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html
(la page est en anglais,
à chercher si il y a une version française)
et le deuxième traite d'une ancienne version, il peut y avoir quelques incohérences.
Compléments pour le chapitre 1
autres programmes java en mode console:
javaDemineur,
JavaDemineurProtege
additioneuse:
à faire
Chapitre 2
Attention, On commence par installer une version anglaise, le français sera ajouté en fin de chapitre
page 22
au 20091205: la version d'Eclipse est 3.5 SR1
partir de la page:
http://www.eclipse.org/downloads/
choisir "Eclipse Ide for java Developpers" (92 Mégaoctets)"
éléchargement: eclipse-java-galileo-SR2-win32.zip
page 23
sous Windows XP, le système est capable de décompresser le .zip, faire un clic droit sur le .zip
(il ne faut pas ouvrir le dossier avec la fermeture éclair, dans ce cas on ne pourrait y accéder qu'en lecture)
si pas assez de place sur C:, le placer dans un autre disque.
après décompression, le fichier .zip téléchargé peut être effacé.
page 24:
la méthode indiquée en note de cette page ne convient plus pour la version 3.5 (Galileo) d'Eclipse.
L'installation de l'interface en français se fait maintenant par un outil intégré à l'interface
Voir le film détaillé de l'installation (et méthode de secours): EclipseGalileoFR
en bref:
(pour les informations techniques: lire:
http://eclipse.developpez.com/faq/?page=plateform#frenchEclipse
le modèle utilisé est gallileo on utilisera
20100328: le lien suivant est FAUX
http://download.eclipse.org/technology/babel/update-site/galileo)
dans le menu "help" --> "install new software"
par le bouton "Add" (en haut à droite) ajouter un site:
attendre que "pending..." disparaisse (si des erreurs apparaissent, les ignorer)
cocher "babel language pack in French"
clic sur bouton "next"
attendre que "install details... " soit complet"
clic sur bouton "next"
accepter la licence (bouton radio "I accept... ")
clic sur le bouton "finish"
attendre
accepter warning software non signé
à la fin, accepter de redémarrer Eclipse
il devrait être en Français!
dire que faire sinon, lancer avec option -nl (locale) à expliquer, variable d'environnement locale ?
incident en cours pour MF94, numéricable, le téléchargement se fige
page 25
contrairement à l'image, Eclipse vous proposera de placer le dossier workspace sous votre profil: (en parler windows %userprofile%\espacedetravail ) mais eclipe ne déceloppe pas la variable
UserProfile?, donc:
éventuellement placez le plutôt dans votre dossier "mes documents", soit:
en Xp:
c:\documents and settings\monnom\mes documents\espacedetravail
en Vista:
c:\users\monnom\documents\espacedetravail
Si l'icone "plan de travail" n'apparait pas,
fermer le panneau de bienvenue à l'aide du X sur l'onglet (à gauche)
j'ai vu passer une erreur; ça continue
page 26
l'aide est en Anglais,
à voir
page 30, dernier paragraphe
pour exécuter:
la première fois: menu-->exécuter-->Exécuter le premier lancement
les fois suivantes: menu-->exécuter-->Exécuter
le livre dit:
Assure-toi que la ligne
Application Java est bien sélectionnée dans le coin en haut à gauche
les deux images suivante en VO, à refraire en FR
voici l'image dans la version 3.0.2:
en version 3.5 on voit:
si un panneau demande (approximativement) de sauver les fichiers, accepter.
page 31
si on crée le projet initialement, on ne passe plus par ce panneau.
plus
on peut lire:
http://eclipse.ftp-developpez.com/faq/FaqEclipse.pdf
Chapitre 3
je préférerais des exemples où il y ait une interaction: entrée, calcul, résultat, voir Java4KidsPlusCh3 (à écrire)
Attention: ce chapitre est très important,
il faut le lire doucement et le comprendre
remarque perso à discuter avec les pédagogues:
- je préfèrerais ajouter une propriété "nom" qui serait initialisé à l'instanciation et réutilisé dans les messages de sortie (sauf si on donne le nom directement à l'instance plutôt qu'à une propriété).
- une variable age est une faute classique, préférer "anneenaissance"
- en fait c'est plutôt une classe animal
page 36
Attention: les deux bouts de codes de cette page sont des extraits, pas possible de les exécuter tel que, il faut les inclure dans un projet
- créer un nouveau projet java, appelons le
"coquille pour jeu vidéo"
- créer une nouvelle classe java en cochant le premier "raccord de méthode" : "public class void main..." en la nommant
JeuVid?éo
- ecrire le code source des classes
- ajouter dans la fonction main le code:
System.out.println("c'est fini!");
- exécuter: ....
. noter que rien ne se passe, les classes et méthodes ne sont pas utilisées!
page 38
pour trouver le testeur de code:
fichier/nouveau/autre/java/Exécution-débogage/Page de testeur de code
pour moi, ça ne marche pas
à voir
à défaut pour les pages 35 à 41, créer des projets autant de fois que nécessaire (avec le nom de page).
page 39
- pour essayer le code,
. créer un nouveau projet java nommé "Ch3Page39MonScore"
. créer une nouvelle classe avec toujour la connexion à main...
. frapper le code dans la focntion main qui a été générée automatiquement
. exécuter le programme
la sortie devrait ressembler à:
coller photo
page 40
- faire les modifications au programme et vérifier qu'il donne le même résultat
coller photo
page 45
je préférerais qu'il y ait deux instances dans l'exemple
tant qu'il n'y a qu'une instanciation, on obtiendrait le même résultat avec le pas bon programme suivant:
à faire, tout le code dans main
page 52
- je préfére
. nbHeures à durée
. distanceParcourue à rouler
Chapitre 4
page 61
troisième paragraphe, "préférable" à remplacer par "nécessaire"
page 63
fin du premier alinea, pas compris
"si tu souhaites avoir un constructeur sans argument, écris-en un"
autre point de vue:
le mot clé this de l'exemple est utile pour distinguer deux homonymes
ne serait pas nécessaire si l'argument et la variable membre avaient des noms différents.
page 65
à propos de la structure for
manque une explicitation des éléément
for (code au début; code à jaque tout, condition pour continuer) { ... } ;
Chapitre 5
ATTENTION: ce chapitre construit l'extérieur d'une calculatrice, telquelle elle ne fera pas d'addition!
page 73
vaudrait mieux la nommer additionneuse
Comme l'explique le texte, un clic sur le bouton ne fait rien!
ATTENTION: cet exemple ne sera pas terminé dans la suite du manuel
à faire
Pour le rendre utilisable, on peut (on va faire avec ce que nous savons déjà; le lien avec la classe
MoteurCalcul? sera expliqué page 94 et suivantes):
il faut rendre public les trois boites (entrée1, entrée2 et résultat), soit:
la classe AdditionneuseComplete ressemblera à:
import javax.swing.*;
import java.awt.FlowLayout;
public class AdditionneuseComplete {
static JTextField entrée1 = new JTextField(10);
static JTextField entrée2 = new JTextField(10);
static JTextField résultat = new JTextField(10);
public static void main(String[] args) {
// Crée un panneau
JPanel contenuFenêtre = new JPanel();
// Affecte un gestionnaire de disposition à ce panneau
FlowLayout disposition = new FlowLayout();
contenuFenêtre.setLayout(disposition);
// Crée les contrôles en mémoire
JLabel label1 = new JLabel("Nombre 1 :");
JLabel label2 = new JLabel("Nombre 2 :");
JLabel label3 = new JLabel("Somme :");
JButton lancer = new JButton("Ajouter");
// Ajoute les contrôles au panneau
contenuFenêtre.add(label1);
contenuFenêtre.add(entrée1);
contenuFenêtre.add(label2);
contenuFenêtre.add(entrée2);
contenuFenêtre.add(label3);
contenuFenêtre.add(résultat);
contenuFenêtre.add(lancer);
// Crée le cadre et y ajoute le panneau
JFrame cadre = new JFrame("Ma première calculatrice");
cadre.setContentPane(contenuFenêtre);
// Positionne les dimensions et rend la fenêtre visible
cadre.setSize(400,100);
cadre.setVisible(true);
MoteurCalcul moteurCalcul = new MoteurCalcul();
lancer.addActionListener(moteurCalcul);
}
}
et compléter la classe MoteurCalcul:
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.util.EventObject;
public class MoteurCalcul implements ActionListener {
public void actionPerformed(ActionEvent événement) {
JTextField un = AdditionneuseComplete.entrée1;
JTextField deux = AdditionneuseComplete.entrée2;
int i1= Integer.parseInt(un.getText());
int i2= Integer.parseInt(deux.getText());
Integer i1plus2 = i1+i2;
JTextField résu = AdditionneuseComplete.résultat;
résu.setText(i1plus2.toString());
}
}
exercice:
copier le projet
AdditionneuseCompl?ète
le coller en nommant le nouveau "Diviseuse"
appeller les champs text: dividende et diviseur et quotient
nommer le bouton: Diviser
page 82
l'exemple n'est pas complètement construit
à faire
page 94
button0 n'est pas défini
en fait le bouton se nomme "lancer"
corriger
page 97
ATTENTION: premiere rédaction en erreur
page 111
je trouve qu'il manque un "bouchon" pour tester le code html:
- modifie le fichier Html pour AppletFantome
ce qui donne:
<HTML>
<Head>
<Title>Ma première page web avec un applet java</Title>
</Head>
<BODY>
Voici mon jeu de morpion (bientot):
<p><APPLET code = "AppletFantome.class" width=300
height=250>
</APPLET>
</BODY>
</HTML>
- crée l'applet java avec le code ci dessous:
public class AppletFantome extends java.applet.Applet {
public void init (){
this.add(new java.awt.Label("Encore un peu de patience, le vrai morpion arrive"));
}
public static void main(String[] args) {
// s'affichera si utilisé comme application;
System.out.println("Sorry, I am an Applet");
}
}
la suite à développer
- pour l'essai en local....
- dépose ces deux fichiers sur un serveur Web
page 175
bocalAPoisson est à la fois nom de la classe et d'un tableau interne
page 176
noter que ArrayList () ne dit pas de quoi, plus exactement c'est des Objet, donc n'importe quoi, pas une classe particulière!
d'où:
- possible d'y ranger des objets de différentes classes.
- mais quand on extrait un objet par .get, il faut l'associer à une classe
- c'est tordu si on y place un int, on ne pourra l'extraire et le caster à (int)
à discuter