TP1 : Prise en main d’Eclipse, éléments de base de java [email protected] R&T 2ème année Vous avez à votre disposition (sur le répertoire commun) : le cours, les TDs, et quelques documents provenant d’Internet. Vous devez prendre l’habitude de rechercher l’information dans ces documents et dans le sujet de TP. Chaque question inutile1 sera notée et aura des conséquences sur la note du TP. A exercice fini, appelez l’enseignant pour qu’il vérifie le bon fonctionnement de votre programme. But du TP : Prendre en main l’environnement Eclipse - Savoir créer une classe 1 Java en ligne de commande Java peut être utilisé en ligne de commande. Bien que ce ne soit pas le mode de développement le plus utilisé, il est toujours utile de savoir compiler et exécuter une application Java en ligne de commande. 1.1 Edition Pour éditer du code Java n’importe quel éditeur de texte convient, utilisez par exemple l’éditeur de texte ou vi. Ces deux éditeurs présentent l’avantage d’avoir un mode de coloration syntaxique pour Java. Copiez le programme suivant en remplaçant le nom de la classe par le nom de votre fichier : public class MaClasse { public static void main(String[] args) { System.out.println("Bonjour !"); } } 1.2 Compilation Pour compiler votre programme, vous devez utiliser le compilateur Java (javac). Après compilation, s’il n’y a pas eu d’erreur, un fichier .class a été crée. 1 qui a sa réponse de manière simple dans les fichiers fournis 1 1.3 Execution Pour exécuter le fichier .class, vous devez appeler l’interpréteur Java à l’aide de la commande java MaClasse 2 Présentation d’Eclipse L’utilisation d’un environnement de développement intégré permet de gagner du temps lors du développement d’application. Eclipse est un environnement de développement intégré (I.D.E.) crée par IBM, disponible sous la forme de logiciel libre. Cet environnement, originellement conçu pour Java supporte maintenant de nombreux langages (nativement ou à l’aide de plugins). 2.1 Lancement d’Eclipse Eclipse est placé dans le menu Programmation du menu Applications. Au lancement d’Eclipse, une boite de dialogue apparait vous demandant quel espace de travail (Workspace) choisir. Créez un répertoire Java dans votre répertoire de travail, placez-y vous et sélectionnez le. Avant de cliquer sur OK, cochez la case Use is a default and do not ask again. Tout vos TPs devront se trouver dans ce répertoire ! La page de bienvenue apparaı̂t, fermez-la en cliquant sur la croix. La fenêtre principale d’Eclipse apparaı̂t alors. 2.2 La fenêtre principale La fenêtre principale d’Eclipse (fig 1)se décompose en plusieurs parties : – L’éditeur : C’est dans cette partie que l’on saisit le code Java. Plusieurs onglets peuvent être ouverts en même temps. L’éditeur vérifie ”à la volée” la validité du code. Si le code n’est pas valide, une ligne ondulée rouge soulignera la partie incorrecte. Une correction (ou plusieurs) est souvent proposée(s). Elles sont visibles en cliquant sur l’icône en forme d’ampoule ( ). – La sélection de perspective : Eclipse propose plusieurs environnements de travail (nommé perspectives), par défaut c’est la perspective d’édition du code Java qui est visible, pour en choisir une autre il suffit de cliquer sur le bouton pour choisir une autre perspective (Debug,. . .). – Le panneau d’aperçu : Pour chaque classe, Eclipse affiche les différents attributs et méthodes avec des icônes représentant leurs visibilités. – L’explorateur de projets : Le projet en cours est représenté avec tous ces fichiers ainsi que les classes contenue. – Le panneau ”d’états” : Plusieurs onglets permettent d’accéder à différents éléments. L’onglet Problems renvoie tous les avertissements ainsi que les erreurs. L’onglet Javadoc permet de lire la documentation Javadoc associée à la classe (si elle a été générée). L’onglet Console affiche une console utilisée lors de l’exécution des programmes. – La barre d’outils : Elle comporte des raccourcis vers de nombreux boutons. Plusieurs seront détaillés dans ce TP. 2 F IG . 1 – L’interface d’Eclipse pour un projet Java Tous les éléments d’une vue peuvent être modifiés en allant dans le menu Window 2.3 Création d’un nouveau projet Dans l’explorateur de projet cliquez avec le bouton droit, sélectionnez New puis Project. Dans l’assistant qui apparaı̂t, choisissez Java Project. La fenêtre de configuration de projet apparaı̂t. Dans cette fenêtre, donnez un nom à votre projet (par exemple TP1) et cochez le bouton Create separate source and output folder dans le bloc Project Layout, ne changez pas les autres éléments. En choisissant cette option, les fichiers sources et les fichiers compilés seront placés dans deux répertoires différents. 2.4 Création de classes 2.4.1 Présentation de l’interface Un assistant permet de créer les classes en générant le code automatiquement. Pour créer une nouvelle classe dans le projet ouvert, cliquez sur l’icône . La fenêtre de l’assistant apparaı̂t (figure 2). – Nom de la classe : Saisissez ici le nom de la classe à créer (pensez à respecter les conventions sinon un avertissement apparaı̂tra). 3 – Emplacement de la classe : Java propose un système de paquets (que nous étudirons dans un autre TP) pour organiser les classes. C’est ici que l’on choisit dans quel paquet va être placé la classe à créer. Dans le cadre des TPs, vous utiliserez un paquet portant un nom de la forme login.tpN. Soit pour l’utilisateur dupont durant le TP1 le paquet sera dupont.tp1. Placez ce nom dans le champ de saisie. – Modificateurs : Vous pouvez spécifier ici la visibilité de la classe dans le paquet ou dans le cas d’une classe interne, vis-à-vis de la classe contenante. Laissez les valeurs proposées par défaut. Les cases à cocher permettent de créer des classes abstraites (abstract) ou finales (final). – Classe mère : Par défaut la classe mère est Object(La classe Object est contenue dans le paquet java.lang, d’où la notation java.lang.Object). Si votre classe hérite d’une autre classe, vous devez la précisez ici. – Méthodes à déclarer : Dans ce panneau, vous pouvez préciser les déclarations de méthodes que vous voulez voir ajouter automatiquement. La première case à cocher permet d’ajouter une méthode main à votre classe et donc la rend exécutable. La seconde case à cocher rajoute une déclaration pour chaque constructeur de la classe mère. Enfin, la dernière case à cocher, déclare les méthodes abstraites de la classe mère si elles existent (elles doivent être implémentées si la classe n’est pas abstraite). Quand vous avez renseigné tous ces champs, cliquez sur le bouton OK pour générer le fichier. Automatiquement, Eclipse ouvre le fichier dans un nouvel onglet de l’éditeur. 2.4.2 Travail à faire Créez une classe ayant une méthode main. Dans cette méthode placez la ligne suivante : System.out.println("Bonjour"); Pour gagner du temps, tapez simplement sysout puis [CTRL]+[Espace]. Eclipse reconnaı̂t le raccourci et le remplace par l’équivalence. Pour voir la liste des raccourci prédéfinis, allez dans le menu Window-Preferences puis Java-Editor-Templates. Notez sur une feuille de papier ceux qui vous semblent les plus utiles pour les TPs (boucles, tests,. . .). 2.5 Exécution d’une classe L’exécution d’une classe se fait en cliquant sur l’icône en forme de flèche verte présent dans la barre d’icônes ( bloqué, l’icône d’arrêt ( 2.5.1 ). Pour arrêter un programme en cours d’exécution ) dans la console est souvent suffisant. Première exécution d’une classe Avant d’exécuter une classe pour la première fois, il faut définir une configuration d’exécution. Pour les classes Java exécutables, la configuration par défaut est utilisable. On la choisit en cliquant sur la flèche orientée vers le bas à droite de l’icône d’exécution puis en sélectionnant Run as-Java Application. 4 F IG . 2 – L’interface de création de classe 5 F IG . 3 – La fenêtre de débogage 2.5.2 Autres exécution Pour exécuter de nouveau la classe il suffit de cliquer de nouveau sur l’icône de lancement sans redéfinir de configuration d’exécution. 2.6 Debogage Choisissez la perspective de débogage en cliquant sur le bouton , puis sur . La vue change pour devenir celle de la figure 3. le bouton On retrouve des éléments communs à la perspective d’édition Java : l’éditeur, le panneau d’aperçu, la sélection de perspective et le panneau ”d’états” qui affiche la console. Deux élements sont rajoutés : – L’explorateur de processus : Les processus actifs sont listés ici ainsi qu’une barre d’outils utilisés lors de l’exécution d’un programme. – Les variables et les points d’arrêts : Lors d’un débogage, on définit des points d’arrêts (voir ci-dessous), ils sont listés dans l’onglet point d’arrêts. Les variables actuellement utilisées sont visibles dans l’onglet variables. Pour les objets, un petit triangle est placé devant leurs noms, si on clique dessous, tous les attributs membres seront présentés ainsi que leurs valeurs. 6 2.6.1 Débogage d’une application Les points d’arrêts : Pour placer un point d’arrêt, il faut cliquer avec le bouton droit dans la barre bleue située dans la partie gauche de l’éditeur de texte. Dans le menu qui apparaı̂t, il faut choisir Toggle Breakpoint. Un repère ( ) symbolise le point d’arrêt. Exécution pas-à-pas : Pour rechercher une erreur dans une application, une exécution en mode pas-à-pas est souvent nécessaire. Après avoir placé un point d’arrêt avant la partie de programme qui pose problème, lancez l’exécution en mode ) (son comportement est le même que pour débogage en cliquant sur l’icône ( l’icône de lancement. Si vous avez déjà exécuté votre programme, un clique sur le bouton suffit). Le programme est exécuté et s’arrête sur le premier point d’arrêt rencontré. L’état des variables en cours est alors visible. On utilise ensuite la barre d’exécution située au dessus de l’explorateur de processus pour modifier l’exécution du programme. Les différents icônes sont les suivants : – permet d’arrêter la session de débogage en cours. Tous les processus associés sont arrêtés. – permet de suspendre le débogage en cours, il peut être relancé en cliquant sur l’icône ci-dessous. – permet soit de reprendre le débogage en cours après une pause, soit de relancer l’éxécution jusqu’au prochain point d’arrêt. Quand le programme est arrêté sur un point d’arrêt, plusieurs possibilités d’exécution sont envisageables : – Reprendre l’exécution du programme jusqu’au prochain point d’arrêt (voir cidessus). – Exécuter pas-à-pas chaque instruction, en rentrant dans toutes les méthodes : . A chaque méthode rencontrée, un clic sur ce bouton fait ouvrir le code de la classe associée sur la méthode correspondante et continuer le programme pas-à-pas. – Exécuter pas-à-pas chaque instruction de la classe actuelle sans rentrer dans les méthodes des autres classes : truction dans la classe actuelle. . A chaque clique, on avance d’une ins- – permet de sortir de la classe en cours pour retourner vers la classe d’origine. Ces trois actions peuvent être combinées pour, par exemple, rentrer dans les classes que l’on a codées sans rentrer dans les classes de l’A.P.I. Java. 2.7 Truc et astuces Le menu contextuel (accessible via le bouton droit) de l’éditeur Java d’Eclipse permet d’automatiser de nombreuses taches. 7 Renommer un élément Pour renommer un élément (classe, méthode, attribut) et propager la modification à tous les éléments liés, cliquez sur l’élément avec le bouton droit de la souris, choisissez le menu Refactor-Rename. . . L’assistant vous présente tous les éléments qui vont être modifiés. Déclarer les assesseurs Eclipse permet de construire automatiquement les assesseurs des attributs. Source-Generate getters and setters vous permet de choisir les assesseurs que vous voulez implémenter ainsi que leurs visibilités (public la plupart du temps). 3 Travail à effectuer 3.1 Triangle de Pascal (durée : environ 1h00) Le triangle de Pascal (voir détails sur http://fr.wikipedia.org/wiki/Triangle de Pascal) est utilisé pour écrire les développement d’une somme du type (a + b)n ou n est une puissance quelconque. Les premières valeurs du triangle de Pascal sont les suivantes : Ordre 0 1 2 3 4 1 1 1 1 1 1 2 3 4 1 3 6 1 4 1 La valeur de chaque case se calcule de manière aisée à partir des valeurs de la ligne précédente. Posons P (i, j) la case située sur la ligne i et la colonne j. Sa valeur est donnée par la formule : P (i, j) = P (i − 1, j) + P (i − 1, j − 1) Écrivez un programme (donc une classe ayant une méthode main) qui demande un ordre à l’utilisateur et affiche de manière complète le triangle de Pascal jusqu’à cet ordre. 3.2 Suite de Conway (durée : environ 1h00) L’élément n de la suite de Conway est construite en “lisant” l’élément n − 1. Généralement, on utilise 1 comme élément initial. On obtient par exemple (tab. 1) : Proposez un programme pour écrire la suite de Conway en utilisant un tableau bi-dimensionnel. Vous pouvez vous inspirer du corrigé du contrôle de l’an dernier (attention à modifier le programme pour utiliser un tableau bi-dimensionnel). 3.3 Classe Vecteur Le but de cet exercice est de créer une classe représentant un Vecteur (au sens mathématique). 8 T AB . 1 – Les premiers termes de la suite de Itération “Lecture” 1 État initial “Un un” 2 3 “Deux un” “ Un deux, un un” 4 5 “Un un, un deux, deux un” “ Trois un, deux deux, un un” 6 ... ... 3.3.1 Conway Valeur 1 11 21 1211 111221 312211 ... Diagramme UML de la classe Vecteur - valeurs : entier[] + Vecteur() + Vecteur(Vecteur unVecteur) + Vecteur(entier nb) + getTaille() : entier + getValeur(entier position) : entier + setValeur(entier position, entier uneValeur) : + RemplirVecteurAléatoirement() : + AfficherVecteur() : + CalculSomme(Vecteur unVecteur) : Vecteur + isColineaire(Vecteur unVecteur) : booléen F IG . 4 – Schéma UML de la classe Matrice 3.3.2 Création de la classe Utilisez l’assistance pour créer une classe Vecteur (sans classe main). Placez, pour l’instant, les 3 constructeurs sans rien placer dans les accolades. Complétez seulement le constructeur qui reçoit un entier en paramètre. Il doit vérifier que l’argument n’est ni nul, ni négatif. Si l’argument est valide, le constructeur doit créer le tableau valeurs à la taille voulue. 3.4 Classe de test Créez une autre classe ayant une méthode main dans laquelle vous créez un objet de la classe Vecteur ayant une taille de 5. 9 3.4.1 Méthodes RemplirVecteurAleatoirement et AfficherVecteur Dans la classe Vecteur ajoutez les méthodes RemplirVecteurAleatoirement et AfficherVecteur. La méthode AfficherVecteur Cette méthode doit simplement afficher les coordonnées du vecteur les unes à la suite des autres, simplement séparées par un espace. La méthode RemplirVecteurAleatoirement Cette méthode doit remplir un vecteur de valeur aléatoire comprises entre 0 et 10. Test de ces deux méthodes Dans la classe de test, appelez ces deux méthodes pour vérifier le bon fonctionnement de votre classe. 3.4.2 Les “assesseurs” Les méthodes getTaille, getValeur et setValeur permettent d’accéder aux données. Elles ne peuvent pas être écrite automatiquement par l’assistant d’Eclipse car elles ne portent pas directement le nom d’un attribut. Vous allez donc devoir les écrire à la main. 3.4.3 La méthode CalculSomme Cette méthode reçoit un vecteur et en fait la somme avec l’objet courant. Le résultat de la somme est renvoyée par la méthode. La somme ne doit être calculée que si les vecteurs ont la même taille, sinon la méthode renvoit null. 3.4.4 La méthode isColineaire Cette méthode permet de vérifier qu’un vecteur est colinéaire avec le vecteur considéré. La valeur est un booléen qui vaut true si les vecteurs sont colinéaire, false sinon. 10