Série 1:
Tutoriels Eclipse

Buts

Les tutoriels Eclipse du Cours


Exercice 1: Eclipse Tutorial 3: Hello, World! (Eclipse, Niveau 0)

Vous allez maintenant créer votre première petite application Java : encore le petit programme qui va afficher à l'écran "Hello, World!".

Il faut au préalable avoir créé un projet Serie02 dans Eclipse. Si vous ne vous rappelez plus comment faire référez vous au deuxième tutorial Eclipse.

Lorsque le projet Serie02 existe placez votre souris sur la vue "Navigator" de Eclipse et cliquez avec le bouton droit de la souris sur le dossier Serie02. Dans le menu qui apparaît, sélectionnez "New->Class":

 

L'assistant "New Java Class" va alors s'ouvrir. Entrez "HelloWorld" en guise de nom ("Name") et cliquez sur "Finish":

 

L'éditeur intégré à Eclipse va alors s'ouvrir au centre du workbench et vous exposer le code source de votre nouvelle classe; ce qui devrait ressembler à ceci :

 

Copiez maintenant le texte suivant entre les accolades ouvrante et fermante de votre classe ("{" et "}"):

    public static void main(String [] args) {
        System.out.println("Hello, World!");
    }

Pour faire ceci, sélectionner le texte à copier avec le bouton gauche de votre souris, puis copiez-le en vous plaçant au bon endroit dans l'éditeur Eclipse et en cliquant sur le bouton du milieu de votre souris.

Note: il est normal que vous ne compreniez pas encore tous les éléments de ce code (en particulier pourquoi il y a un public devant le nom de la classe). Ces éléments vous seront expliqués graduellement en cours de semestre.

Cliquez sur le bouton "Save" ou cliquez sur "File->Save All" dans le menu principal.

 

Une fois votre portion de code insérée, cliquez avec le bouton droit de la souris sur "HelloWorld.java" dans la vue "Navigator" et sélectionnez "Run As->1 Java Application" dans le menu qui apparaît :

 

Maintenant, une vue "Console" va s'ouvrir qui va afficher le texte "Hello, World!"



Exercice 2: Tutorial Eclipse 4: Insertion de fichiers utilitaires (Eclipse, Niveau 0)

Dans de nombreux exercices qui vous seront proposés, des fichiers utilitaires vous seront fournis. Il s'agit dans la plupart des cas de programmes partiels qu'il faudra compléter (ceci vous évite de tout devoir saisir vous même). Dans ce tutorial vous apprendrez à insérer un fichier utilitaire dans un projet Eclipse existant. Le fichier Repeater.java, fourni ici, nous servira d'exemple de fichier à insérer.

Premièrement, télécharger le fichier Repeater.java et stockez-le dans votre répertoire ~/myfiles/java/workspace/Serie02/src. Tout ce qu'il suffit de faire maintenant est d'informer Eclipse que le contenu du répertoire associé au projet Serie02 a changé.Pour ce faire, cliquez au moyen du bouton droit de la souris sur le projet Serie02 dans la vue "Navigator" de Eclipse et sélectionnez "Refresh" dans le menu qui apparaît. Une autre option consiste à sélectionner le projet en question et presser sur la touche F5

 

Double-cliquez sur le nouveau fichier qui apparaît dans votre projet: Repeater.java. Votre environnement de travail devrait alors ressembler à quelque chose comme ceci:




Exercice 3: Tutorial Eclipse 5: Correction d'erreurs (Eclipse, Niveau 0)

1. Trouver des erreurs de syntaxe avec Eclipse (Niveau 0)

Vous apprendrez ici comment Eclipse met en évidence vos erreurs de syntaxe et vous donne des indications sur comment les corriger.

Copiez d'abord le fichier Error.java dans votre répertoire ~/myfiles/java/workspace/Serie02/src et insérez-le dans votre projet Serie02 comme vous l'avez appris dans le tutorial précédent. Double-cliquez ensuite sur le fichier Error.java dans la vue "Navigator". Le contenu du ficher apparaît alors dans l'éditeur. Vous remarquerez alors que de nombreux éléments sont soulignés en rouge. Une petite croix dans une bulle rouge devant la ligne où il y a des éléments soulignés vous indique qu'il y a des erreurs dans cette ligne de code.

 

Cliquez maintenant sur la petite ampoule sur la gauche de la ligne 4 (le numéro de ligne apparait en bas de la fenêtre Eclipse, vous pouvez aussi faire numéroter les lignes en cliquant avec le bouton droit et en sélectionnant l'option "Preferences" puis "Text Editors"). Une fois que vous avez cliqué sur l'ampoule, un menu apparaîtra vous suggérant comment corriger le problème. Sélectionnez ici "Change to 'System' (java.lang)".

 

Le texte printnl va maintenant être souligné. Cliquez à nouveau sur la petite ampoule et sélectionnez "change to 'println(...)'".

Dans le cas précédent, nous avons mal orthographié le nom de la classe System (prédéfinie par les librairies Java). Comme Eclipse connait toutes les classes de votre projet, y compris les classes prédéfinies, il peut vous faire des suggestions intelligentes sur comment corriger. Ces suggestions sont indiquées par les fameuses petites ampoules de tout à l'heure.

Avec les autres erreurs, pulbic et statci, nous sommes en fait un peu moins chanceux : nulle ampoule à l'horizon. Nous ne sommes cependant pas complétement démunis car si l'on place la souris sur la croix précédent la ligne erronées, des informations utiles apparaîssent :

Il s'agit grosso-modo des messages d'erreurs générés par le compilateur de Java. Ces indications sont très utiles : combinées avec vos connaissances de Java, elles vous permettront de corriger vos erreurs. Ici, après avoir changé pulbic en public et statci en static toutes les bulles rouges associées aux lignes erronées sont grisées. Il vous suffit de sauvegarder votre fichier pour voir les croix disparaitre. Votre syntaxe est maintenant correcte:

2. Exercices simples

Les différentes variantes suivantes

du programme PasSalut.java contiennent toutes des erreurs de syntaxe. Incluez ces fichiers dans le projet Eclipse associé à la série courante. Utilisez ensuite les techniques que vous venez d'apprendre pour corriger ces fichiers.

3. Encore des erreurs (Niveau 2)

On continue a s'exercer, mais cette fois avec un programme un peu plus long où il y a plusieurs erreurs. Ouvrez dans Eclipse et corrigez à votre guise le programme Declarations.java jusqu'à ce qu'il soit exempt d'erreurs.

4. Cette fois c'est à l'exécution... (Niveau 2)

Ouvrez dans le projet courant de Eclipse le programme FauxCalcul.java. Ici Eclipse est muet et aucune ligne n'apparait comme étant erronée. Exécuter maintenant votre programme. Le message d'erreur suivant devrait apparaitre.

java.lang.ArithmeticException: / by zero
        at FauxCalcul.main(FauxCalcul.java:11)  
On voit que la machine virtuelle Java indique le nom du fichier et le numéro de ligne où le problème s'est produit: ligne 11 du fichier FauxCalcul.java. Vous pouvez vous positionner sur cette ligne de code en cliquant sur "(FauxCalcul.java:11)" qui apparait dans la vue "Console" de Eclipse. Essayez de faire afficher à votre programme les différentes valeurs des variables juste avant que l'erreur se soit produite afin d'expliquer l'erreur.
Nous verrons plus tard qu'il existe des moyens plus sophistiqués dans Eclipse pour traquer efficacement ce genre d'erreur.



Exercice 4: Eclipse Tutorial 6: Utilisation d'un dévermineur (Eclipse, Niveau 0)

Intégrez le fichier Newton.java dans votre répertoire ~/myfiles/java/workspace/Serie03 et intégrez-le dans le projet Eclipse correspondant. Le programme Newton.java permet de calculer la racine carrée d'un nombre au moyen de l'algorithme de Newton. Commençons par décrire le fonctionnement de ce petit algorithme. Soit x la racine carrée d'un nombre n. On choisit une valeur comme approximation de départ pour x (1 dans le cas du programme fourni), puis on applique la formule de récurrence suivante :

xk+1 = 1/2 *(xk + n/xk)

Cette formule s'applique, jusqu'à ce que :

Dans le programme fourni, et pour simplifier un peu les choses, c'est le premier type de condition d'arrêt qui est choisi (avec 10 itérations) :

 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
28
29
30
31
import java.util.Scanner;

/**
 * Newton
 * 
 * A small utility that computes the square root of a number using newtons algorithm.
 * 
 * The formula for the element x(k + 1) is (1/2)*(x(k) + n/x(k))
 * 
 * Usually, the algorithm is ended after a certain precision is reached or the result
 * changes very little. To keep this example simple, we will stick to a fixed number
 * of iterations (10 in this example).
 */
public class Newton {
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("Please enter the number: ");
        double value = scanner.nextDouble();
        
        //initial value x0 = 1
        double x = 1;
        for (int i = 0; i < 10; i++) {
            //calculate next value
            x = (1/2) * (x + value / x);
        }
        
        System.out.println("The square root of " + value + " is " + x);
    }

}

Lancez le programme et essayez-le pour le nombre 2.0 :

Hum... la valeur calculée est NaN (Not a Number), ce qui est clairement incorrect !

Comme le programme "compile" et qu'aucun message d'erreur n'est généré, nous n'avons, à ce stade, aucune indication sur la source de l'erreur. Il nous faut donc examiner le programme d'un peu plus près pour essayer de localiser le problème : cette tâche ingrate porte des noms parlants tels que "déverminage", "deboggage" (ou "debugging" le plus souvent !).

Une première façon de déverminer consiste à insérer, à des endroits pertinents, du code affichant des informations sur le déroulement du programme et les valeurs des différentes variables (par exemple System.out.println(x)). C'est la méthode que l'on utiliserait si l'on programmait au moyen d'un éditeur de texte basique. Autant dire les choses clairement, c'est en général laborieux; d'autant plus qu'il faut ensuite "nettoyer" le code de toutes instructions "parasites" liées au déverminage.

Seconde option, utiliser un outil dédié à ce genre de tâche : soit un dévermineur (debugger). Ce tutorial a pour but de vous apprendre à utiliser le dévermineur intégré à Eclipse.

Au moyen du bouton droit de la souris, cliquez sur le programme Newton.java dans la vue "Navigator" et choisissez l'option "Debug As -> 1 Java Application".

Le programme va démarrer son exécution, un nombre va vous être demandé et le prosaique NaN de tout à l'heure va à nouveau s'afficher. En fait, tout se passe comme si on avait lancé le programme avec l'option "Run As". Mais pourquoi donc ?

En fait, un dévermineur a besoin d'être informé un minimum de ce que vous souhaitez examiner. En clair, il fonctionne au moyen de "points d'arrêt" (Breakpoints) que vous aurez vous même définis. Les "breakpoints" sont des endroits dans votre programme à partir desquels vous souhaitez arrêter le déroulement normal de l'exécution pour examiner de plus près ce qui se produit. Nous avons donc besoin de définir au moins un "breakpoint".

Comme on ne sait pas trop où l'erreur se situe (et que notre progamme est de petite taille), choisissons de le placer au niveau de la première instruction de notre méthode main. Concrètement : il faut vous placer dans l'éditeur de Eclipse et cliquer au moyen du bouton droit de la souris dans la marge gauche (juste à gauche de la ligne verticale grise). Faites ceci au niveau de de la première instruction de la méthode main. Dans le menu qui apparaîtra alors, sélectionnez l'option "Toggle Breakpoint".

 

Un petit point bleu apparaîtra alors, signalant le point d'arrêt.

Lancez maintenant le programme une nouvelle fois au moyen de l'option "Debug As -> Java Application". Lorsque le point d'arrêt sera atteint, Eclipse vous demandera de basculer vers une perspective "Debug" (note : une perspective est un ensemble de vues cohérentes qui permet de travailler sur un sujet).

Sélectionnez "Remember my decision" et cliquez sur "Yes".

Vous vous trouvez maintenant dans la perspective "Debug"; ce qui devrait ressembler à ceci :

Pour comprendre ce que vous voyez, Il est nécessaire de savoir un minimum de chose sur une des techniques classiques du déverminage , à savoir :

Au milieu de l'écran, vous pouvez voir une fenêtre éditeur dans laquelle une ligne de code est mise en évidence :

Il s'agit de la ligne sur laquelle l'exécution du programme est positionnée.

Vous pouvez maintenant utiliser la barre à outils :

pour contrôler l'exécution de votre programme. Déplacez votre souris sur les différents boutons (en y restant quelques secondes) pour voir les différentes options utilisables. Nous vous décrivons ci-dessous les options les plus importantes. Notez que celles qui sont relatives aux méthodes ne vous seront utiles qu'à partir du cours sur la modularisation, dans deux semaines, si vous suivez la progression du cours. Voici donc les quelques options les plus utiles 

"Resume": permet de quitter le mode "Pas à Pas" et continue l'exécution jusqu'au prochain point d'arrêt.
"Step Into": Si la ligne courante correspond à un appel de méthode, on "entre" dans le corps de cette méthode pour examiner pas à pas son fonctionnement
"Step Over": sauter à la prochaine ligne. Si la ligne courante correspond à un appel de méthode, on exécute l'appel à la méthode sans examiner l'exécution de son corps

Vous pouvez voir, en haut à droite, la vue "Variables" où s'affichent les variables et leurs valeurs dans les différents contextes d'exécution :

Utilisez maintenant le bouton "Step Over" pour poursuivre l'exécution de tout le programme. Gardez un oeil sur la variable x et n'oubliez pas d'entrer une valeur dans la console lorsque le programme vous la demandera (ligne 16).

Vous remarquerez alors que x prend la valeur 0 à la première itération, puis NaN à la suivante. Le calcul :

x = (1/2) * (x + value / x)

retourne donc zéro quand x vaut 1 et value vaut 2.0. Vos connaissances arithmétiques vous dirons que pour qu'une multiplication vaille 0, il faut qu'un moins l'un des opérandes soit nul. Ici :

(1/2) est clairement non-nul,

c'est donc x + value / x qui l'est (... étrange vu que x vaut 1 et value vaut 2 !)

Si nous examinons cette expression, on peut remarquer en fait que la division effectuée est une division entière. Ce qui en effet retourne bien zéro. Nous pouvons corriger ce problème en travaillant avec des valeurs de type double :

Exécutez une nouvelle fois le programme après correction :

cette fois tout fonctionne correctement.



Exercice 5: Tutorial Eclipse 7 : Modification du modèle de fichiers (Eclipse, Niveau 0)

Il est d'usage courant, en pratique, que les fichiers sources commencent par un commentaire donnant diverses informations sur le fichier, telles que : l'auteur du programme, sa date de création, des notes sur les droits d'auteurs etc. Ce tutoriel vous montre comment configurer Eclipse de sorte à ce que ce genre de commentaires soient automatiquement inclus, à chaque création de nouveaux fichiers.

Commencez par cliquer sur "Window->Preferences" dans le menu principal :

Dans le dialogue "Preferences", ouvrez ensuite "Java->Code Style->Code Templates". Vous devriez voir apparaître le menu suivant :

Sélectionnez "Code->New Java Files" dans la liste et cliquez sur "Edit ...". Introduisez alors le texte suivant au début du chablon (Pattern) :

/*
 *	Author:      John Doe
 *	Date:        ${date}
 */

N'oubliez pas de remplacer le nom existant par le votre !

Confirmez ensuite en cliquant sur OK et fermez le dialogue "Preferences". Créez enfin une nouvelle classe pour tester votre nouvel environnement. Le début du fichier contenant cette classe devrait alors ressembler à ceci :



Exercice 6: Tutorial Eclipse 8 : Activer la vue Outline (Eclipse, Niveau 0)

La vue "Outline" de Eclipse synthétise la structure du fichier courant en terme de classes, attributs et méthodes. Ce tutorial vous montre comment activer cette vue.

En fait, il suffit de sélectionner "Window->Show View->Outline" dans le menu principal :

La vue "Outline" va alors apparaître. Vous pouvez changer la position de cette vue au moyen de la souris. Voici un exemple de vue "Outline"pour le fichier Surfaces.java de l'exercice 2 de la série 6  :

Les icônes donnent le type de l'élément concerné ; par exemple :

Désigne une classe
Désigne un constructeur
Désigne un attribut privé
Désigne une méthode publique


Dernière mise à jour: 30/08/2013  (Revision: 1.2)