Unité IN3S02 - TP1
Enoncé

Durée : 2 h

1- OBJECTIFS

·        Savoir utiliser un micro-ordinateur sous Linux : se loger / se déloger, changer de mot de passe, créer / rechercher / copier / supprimer des fichiers et des répertoires, envoyer / lire un courrier électronique avec fichier attaché

·         Savoir utiliser les fonctionnalités élémentaires de l'environnement de développement BlueJ ; savoir éditer, compiler et exécuter une classe

·        Bien maîtriser les concepts de classe, objet, méthode, attribut

 

2- TRAVAIL A REALISER

Nota : le travail demandé doit être terminé, en séance ou hors séance.

2.1- Prise en main de la machine

·        Se loger (si pas fait antérieurement) sous Linux [ s'il est sous Windows, redémarrer l'ordinateur sous Linux ; login + mot de passe ]

·        Changer de mot de passe (si pas fait antérieurement) en choisissant une expression non commune d'au moins 8 caractères et en mêlant lettres et chiffres [ Intranet http://intra.esiee.fr/ rubrique "Liens / changement de mot de passe" située en bas à droite de l'écran ]. La première protection d'un système étant le mot de passe, grande attention doit être portée à ce choix. Exemple : KYk2p3X9 est bien préférable à laure19 car moins facile à trouver ! Une des façons de créer un mot de passe à la fois sûr et facile à retenir est d'utiliser une "phrase de passe". Par exemple, prendre un proverbe ou une phrase de la vie courante, ne retenir que les premières lettres et, s'il n'y en a pas, insérer au moins un chiffre. Exemple : "Tu ne me le diras pas deux fois" donnerait "Tnmldp2f". Pour davantage de conseils sur la création d'un mot de passe, on peut consulter par exemple la page http://www.microsoft.com/france/securite/particuliers/fraud/passwords/create.aspx

·        Ouvrir une fenêtre Terminal ou Console ou Shell.

 

Les exercices qui suivent ont uniquement pour but de se familiariser avec les commandes Unix de base les plus immédiatement utiles. Si vous avez déjà une certaine pratique de l'utilisation des commandes Unix, passez directement à la section 2.2 ; dans le cas contraire, ces exercices doivent être traités séquentiellement.

·        Exercice 1 (commandes pwd, ls)

o   Visualiser le chemin d'accès au répertoire courant [commande pwd]

o   Lister les fichiers existants [commande ls] ; lister les options possibles offertes par la commande ls [commande  man ls] ; essayer quelques options courantes de la commande ls comme : -l (long), -a (all), -R (recursive), -x (extension), -t (time).

o   Lister les fichiers du répertoire /usr/lib avec une pause entre chaque ligne [commande ls | more].


Par la suite :

- ne pas changer de répertoire courant si cela n'est pas explicitement demandé (l'objectif est de savoir bien spécifier un chemin quelconque) ;

- chercher à solutionner chaque demande avec une seule commande ;

- conseil : exécuter la commande ls après chaque commande effectuée afin d'en visualiser ses effets.

 

·        Exercice 2 (commandes cd, mkdir ; caractères « joker »)

o   Définir comme répertoire courant  le répertoire jdk1.6.0-u21 (ou, s’il n’existe plus, le répertoire jdk* le plus récent) qui se trouve dans /usr/lib [commande cd]

o   Lister les fichiers d'extension .jar du sous-répertoire lib du répertoire courant en utilisant les caractères "joker"  [commande ls]

o   Créer un répertoire IN3S02-tp1 à la racine de votre compte  [commande mkdir]

 

·        Exercice 3 (commandes cp, mv, more ; caractères « joker »)

o   Dupliquer le fichier README.txt de  ../bluej3/examples/shapes  dans votre répertoire IN3S02-tp1 [commande cp]

o   Afficher le contenu de README.txt [commande more]

o   Changer de répertoire en définissant IN3S02-tp1 comme répertoire courant [commande cd]

o   Renommer README.txt en file1.tmp [commande mv]

o   Créer quatre copies de file1.tmp nommées respectivement : file2.tmp,   file11.tmp,   file12.tmp,   file22.tmp  [commande cp]

o   En utilisant les caractères « joker », quel paramètre fournir à la commande ls pour afficher uniquement les noms des fichiers .tmp désirés dans chacun des cas suivants :

                        file1  file2

file1  file11 file12 file2 file22

file1  file11 file12

file12 file22

file11 file12 file22

o   Créer un sous-répertoire Essais [commande mkdir] ; y déplacer en une commande tous les fichiers commençant par file [commande mv] ;

 

·        Exercice 4 (commandes chmod, rm, rmdir)

o   Définir Essais comme répertoire courant [commande cd

o   Visualiser les droits des fichiers commençant par file [commande ls

o   Modifier les droits d’accès aux fichiers dont les noms commencent par file2 pour que vous n’ayez plus le droit d’écriture  ; modifier les droits de ces mêmes fichiers afin que tout autre utilisateur n’ai plus aucun droit [commande chmod] ; vérifier.

o   Détruire en une commande tous les fichiers commençant par file [commande rm

o   Détruire le répertoire Essais [commande rmdir


2.2- Prise en main de BlueJ

BlueJ est un environnement de développement de programmes Java destiné à l'enseignement initial de la programmation. Il a été conçu et développé par l'équipe BlueJ de l'université Monash de Melbourne, en Australie, et l'université de Southern Denmark, à Odense.

Pour plus d'information se reporter au site www.bluej.org
Le logiciel BlueJ et sa documention sont en libre utilisation pour des usages non commerciaux.

BlueJ est exécutable sur toute plate-forme (Windows, Linux, …) équipée d’une machine virtuelle java (le JDK doit être installé).

2.2.0- Exercices préparatoires

·        Si pas fait antérieurement, créer un répertoire IN3S02-tp1 à la racine de votre compte. C'est dans ce répertoire que devront être stockés tous les programmes Java et exercices relevant de ce tp.

·        Trouver le répertoire bluej3 dans /usr/lib . Vérifier qu'il contient bien un sous-répertoire examples. Dessiner (simplement pour en disposer facilement par la suite) l'arborescence des sous-répertoires du répertoire bluej3, sur deux niveaux de profondeur. Noter le chemin d'accès absolu au sous-répertoire shapes de bluej3/examples

·        A titre d’essai, ouvrir votre messagerie électronique (via ThunderBird) et envoyer à votre binôme un message avec comme fichiers attachés les fichiers *.java de IN3S02-tp1

 

2.2.1- Charger un projet BlueJ

 

Démarrer bluej3 et ouvrir le projet shapes du répertoire examples de la distribution standard de BlueJ (/usr/lib/bluej3/examples/shapes). Un diagramme s'affiche dans la fenêtre principale de BlueJ. Il se compose de 4 rectangles : Canvas, Circle, Square, Triangle. Chacun de ces rectangles représente une classe. Les flèches matérialisent les relations de dépendance entre classes : par exemple, le lien de Circle à Canvas indique que la classe Circle utilise les services de la classe Canvas. L’ensemble de ces classes et des liens qui les unissent définit le projet shapes.

Afin de ne pas risquer de modifier l'original de ce projet, nous allons travailler sur une copie : enregistrer ce projet dans le répertoire IN3S02-tp1, créé préalablement, sous le nom shapes2 [ menu Project, choix Save As ... ].

2.2.2- Créer un objet

 

Pour créer un objet d'une classe donnée, il faut que cette classe soit activable, c'est-à-dire compilée. Sous BlueJ, les classes non compilées apparaissent hachurées. Si donc la classe considérée apparaît hachurée, commencer par la compiler :  clic droit sur cette classe puis choisir la fonction Compile.

Compiler si nécessaire la classe Circle, puis, après un clic droit sur la classe Circle, choisir new Circle( ). Le système propose un nom d'instance par défaut : Circle1. Le valider par Ok. Un rectangle rouge apparaît dans le présentoir à objets : il représente l'objet Circle1 qui vient d'être créé. Circle1 est une instance de la classe Circle. A noter que le cercle ne se dessine pas graphiquement : ceci est normal ; la façon de faire pour le visualiser va être vue par la suite.

Exercice. Créez un autre cercle puis un carré.

2.2.3- Inspecter un objet

 

Pour visualiser l'état d'un objet, activer le clic droit sur cet objet et choisir la fonction Inspect. Si on ne ferme pas la fenêtre d'inspection (fenêtre Object Inspector), tout changement de l'état de l'objet (par exemple par moveLeft) sera immédiatement visualisé dans la fenêtre d'inspection. Le vérifier sur l’objet Circle1 de l’exercice suivant (positionner les deux fenêtres pour qu’elles soient visibles simultanément).

 

2.2.4- Exécuter une méthode

 

Après un clic droit sur l'objet Circle1, choisir la méthode makeVisible. Le cercle (le disque) s'affiche dans une fenêtre séparée.

Exercice. Invoquez (appelez) les méthodes moveRight et moveLeft un certain nombre de fois pour déplacer le cercle vers le centre de la fenêtre graphique.

Invoquer la méthode moveHorizontal, spécifier comme paramètre la valeur 50, et valider par Ok. Le cercle se déplace de 50 pixels vers la droite.

Exercice. Utilisez la méthode moveHorizontal pour déplacer le cercle de 70 pixels à gauche.

La méthode moveHorizontal a un paramètre de type int, c'est à dire de type nombre entier. D'autres méthodes peuvent avoir des paramètres d'autres types. Par exemple, la méthode changeColor a un paramètre de type String, c'est à dire de type chaînes de caractères (i.e. mot ou phrase).

Exercice. Invoquez la méthode changeColor avec le paramère "red" (guillemets compris!!). Que se passe-t-il ? Que se passe-t-il si le paramètre est fourni sans ses guillemets ? Que se passe-t-il si on spécifie une couleur inconnue ?

2.2.5- Editer une classe

 

Pour consulter ou modifier le code source d'une classe, activer le clic droit sur cette classe et choisir la fonction Open Editor (ou double-cliquer sur la classe).

Dès que le code source d'une classe est modifié :

o   toutes les instances de cette classe sont supprimées du présentoir à objets

o   l'icône de cette classe dans la fenêtre principale BlueJ apparaît hachurée

o   si une autre classe utilisait la classe modifiée, elle apparaît aussi hachurée

 

2.2.6- Modifier et compiler une classe

 

Une classe dont l'icône apparaît hachurée dans la fenêtre principale BlueJ n'est pas ou n'est plus opérationnelle. Pour le (re)devenir, il est nécessaire de (re)compiler cette classe. Pour compiler une classe, activer le clic droit sur cette classe et choisir la fonction Compile :

o   Tous les objets disparaissent du présentoir.

o   Si la compilation s'opère sans erreur, l'apparence hachurée de la classe disparaît.

o   Si une erreur est détectée, l'icône de classe reste hachurée et l'éditeur s'ouvre automatiquement et indique l'emplacement et la nature de l'erreur. Pour obtenir de l'aide au sujet d'une erreur de compilation, cliquer sur le point d'interrogation situé à proximité du message d'erreur.

 

Exercice. Editez le code source de la classe Circle et y changer la couleur par défaut de "blue" en "red", en suivant les étapes suivantes :

o   utiliser l'outil de recherche de l'éditeur [ menu Tools, choix Find... ] pour trouver l'expression default color ;

o   dans l'instruction color="blue" qui suit, remplacer "blue" par "red" ;

o   sauvegarder le code source ainsi modifié [ menu Class, choix Save ] ;

o   fermer l'éditeur [ bouton Close ].

 

On peut remarquer que, la classe Circle ayant été modifiée, son icône dans le diagramme des classes apparaît maintenant hachurée. Recompilez cette classe et vérifiez son bon comportement.

Exercice. Editez le code source de la classe Circle et, afin de simuler une faute de syntaxe, supprimez un point-virgule quelque part. Recompilez et analysez le message d'erreur. Corrigez et recompilez.

On peut remarquer dans le répertoire IN3S02-tp1/shapes2 que chaque fichier source .java qui a été compilé a donné lieu à un fichier binaire .class

2.2.6- Terminer

 

Sauvegarder le projet shapes2 [ menu Project, choix Save ], le fermer [ menu Project, choix Close ], puis fermer BlueJ [ menu Project, choix Quit ].

 

Ne conserver dans le répertoire IN3S02-tp1 que les fichiers sources .java

 

S'il reste du temps dans cette séance de TP, enchaîner immédiatement sur le TP2.

Se déloger [ Ctrl-Alt-Suppr, Fermeture de session ]