Page Home (contact) Retour TPs
Important ; lisez attentivement ce qui suit avant de commencer le TP.
Rappel pour l'environnement de travail : vous ne devez pas utiliser d'IDE (NetBeans par exemple) dans ce TP ni dans les TPs 1 et 2. Utilisez un éditeur de texte qui offre une indentation automatique des sources Java ; cette année c'est VSCode qui a été choisi.
Vous enregistrerez les différents fichiers que vous créerez pour résoudre les exercices, dans un répertoire java\tp (ou poo\tp). L'emplacement exact du répertoire java (ou poo) est à votre convenance.Chaque TP aura son propre répertoire et, sauf exceptions, chaque exercice aura aussi son propre répertoire, ce qui vous permettra de conserver différentes versions d'une même classe. Les exceptions sont les cas où, par exemple, des méthodes ou des variables seront ajoutées à une classe, sans toucher ce qui a déjà été écrit dans les exercices précédents (mais même dans ces cas, il est conseillé de copier le code des exercices précédents dans un nouveau répertoire).
Vous aurez ainsi à créer, par exemple, un fichier java\tp\tp1\exercice2\Livre.java.
Il est très important de coder entre les TPs. Les enseignants vous donneront du travail à faire seul (ou avec l'aide de vos camarades), avant la prochaine séance de TP. Vous pouvez demander de l'aide en envoyant un message électronique à un de vos enseignants si un point précis n'est trouvé par aucun étudiant.
1. Ouvrez une fenêtre "cmd" dans laquelle vous allez taper des lignes de commandes..
Tapez "java -version". Il doit s'afficher quelque chose comme ça (la version de Java doit être la version 15 ou une version plus récente) :
C:\Users\richard>java -version
openjdk version "15" 2020-09-15
OpenJDK Runtime Environment AdoptOpenJDK (build 15+36)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15+36, mixed mode, sharing)
Si la commande java n'est pas reconnue c'est que vous n'avez pas installé correctement votre environnement. Revenez au lien indiqué en rouge au début de ce TP.
2. Sous votre répertoire "HOME" (\Users\toto si vous vous appelez toto), créez un répertoire dédié à ce cours. Pour fixer les idées je l'appelerai "java" (mkdir java
). Vous pouvez placer ce répertoire à un autre endroit si vous voulez, par exemple \Users\toto\Documents\java ; le répertoire final doit s'appeler java ou bien poo (pour Programmation Orientée Objet) pour pouvoir le retrouver facilement plus tard. Tout votre travail de tous les TPs devra être placé dans ce répertoire.
Sans vous déplacer créez un répertoire pour ce TP : mkdir java\tp0
.
Maintenant déplacez-vous dans le répertoire tp0 : cd java\tp0
.
3. Les caractères ne sont pas encodés par défaut en UTF-8 dans une fenêtre "cmd". Pour que UTF-8 soit utilisé, il faut taper cette commande dans la fenêtre "cmd" : chcp 65001
Pensez-y si les accents ou les caractères spéciaux ne s'affichent pas correctement.
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
Comme pour chaque exercice, créez un nouveau répertoire. Vous lui donnez n'importe quel nom significatif (pour pouvoir le retrouver facilement ensuite), par exemple "helloworld" pour ce premier exercice (mkdir helloworld
). Déplacez-vous dans ce répertoire : "cd helloworld
".
Avec votre éditeur de texte (pas d'IDE, je le répète), dans le répertoire helloworld, créez un fichier HelloWorld.java
(attention à bien respecter les majuscules/minuscules) qui contient le source ci-dessus.
Important : pour faciliter la lecture du code et vous aider à repérer le plus tôt possible les fautes de frappe, indentez correctement votre code source. Pour indenter avec VSCode, tapez Alt+Shift+F dans la fenêtre qui contient le code (tout le code de la classe est mis en forme et donc, en particulier, correctement indenté).
Compilez cette classe à l'aide de la commande : javac HelloWorld.java (tapée dans la fenêtre "cmd"). Corrigez les erreurs éventuelles signalées par le compilateur. Pour voir le fichier HelloWorld.class
créé par la compilation, listez les fichiers du répertoire en tapant la commande "dir
".
Exécutez la classe HelloWorld
à l'aide de la commande
: java HelloWorld
public class Livre { // Variables d'instance private String titre, auteur; private int nbPages // Constructeur public Livre(String unAuteur, String unTitre) { auteur = unAuteur; titre = unTitre; } // Accesseur public String getAuteur() { return auteur; } // Modificateur public void setNbPages(int n) { nbPages = nb; }
Si vous n'avez jamais programmé avec un langage orienté objet, lisez cette rapide introduction à la programmation objet et à la notion de classe. Vous aurez plus d'informations dans le cours.
1. Créez un nouveau répertoire pour cet exercice (par exemple livre1 : "cd ..
" pour se déplacer dans le répertoire au-dessus, c'est-à-dire le répertoire "java", puis "mkdir livre1
" ; vous auriez aussi pu taper plus simplement "mkdir ..\livre1
" sans vous déplacer dans le répertoire "java"). Déplacez vous dans ce nouveau répertoire (cd livre1
, ou cd ..\livre1
si vous ne vous étiez pas déjà déplacé dans le répertoire "java").
2. Copiez le code ci-dessus de la classe Livre
dans le fichier Livre.java
avec votre éditeur de texte.
Corrigez quelques petites erreurs (si vous ne les trouvez pas, une première compilation vous y aidera).
Ajoutez ensuite une méthode main (attention à bien écrire l'en-tête de cette méthode) pour
Créer 2 livres, Faire afficher les auteurs de ces 2 livres.
Compilez. Lancez l'exécution de la classe Livre ; vérifiez que les auteurs des 2 livres sont bien affichés.
3. Est-ce que vous avez besoin du fichier Livre.java pour faire exécuter la classe Livre
? Vérifiez en renommant (commande "ren" pour rename) provisoirement le fichier Livre.java : "ren Livre.java machin
". Lancez ensuite l'exécution de la classe Livre
.
Redonnez le nom Livre.java
au fichier que vous avez renommé.
Créez un nouveau répertoire pour cet exercice (c'est la dernière fois que je le rappelle mais il faudra le faire pour tous les exercices) et déplacez vous dans ce nouveau répertoire. Copiez le fichier Livre.java dans le nouveau répertoire : "copy ..\livre1\Livre.java .
" (le "." final désigne le répertoire courant, là où vous vous trouvez ; c'est dans le répertoire courant que vous voulez copier le Livre.java).
Avec le menu de votre éditeur de texte, ouvrez le nouveau fichier Livre.java (attention à bien modifier le bon Livre.java qui est dans le nouveau répertoire, pas celui qui est sous le répertoire livre1) et modifiez-le :
Lancez l'exécution de la classe Livre.
1. Écrivez une classe TestLivre dans un fichier TestLivre.java. Cette classe a une seule méthode main qui fait ce que fait la méthode main de la classe Livre.
Compilez avec la commande javac TestLivre.java Livre.java
Faites exécuter la méthode main de la classe TestLivre.
2. Supprimez les fichiers ".class" du répertoire courant (del *.class
; "del" pour "delete") ; vérifiez en tapant dir
. Compilez avec la commande
javac TestLivre.java
. Vérifiez (avec dir
) que Livre.class
a bien été créé avec TestLivre.class
. Pourquoi ?
copy ..\2classes2sources\*.java .
".
Avec l'éditeur de texte copiez le code de la classe TestLivre dans le fichier Livre.java
et supprimez la méthode main de la classe Livre
(si ce n'est déjà fait). Supprimez ensuite le fichier TestLivre.java
.
2. Compilez le fichier Livre.java. Vérifiez que le compilateur a créé 2 fichiers ".class" et faites exécuter la méthode main de la classe TestLivre ; quelle commande devez-vous taper pour cela ?
En général il vaut mieux avoir un fichier .java par classe. Vous terminerez donc ce TP avec les 2 classes Livre et TestLivre dans 2 fichiers séparés.
main
de TestLivre
, ajoutez l'instruction System.out.println(livre)
où livre
désigne un des livres que vous avez créés. Lancez l'exécution de la classe TestLivre. Vous essaierez
de comprendre ce qui est affiché après avoir fait les 2 questions
suivantes.java.base
si ça n'est pas déjà fait (voir l'aide que vous avez déjà utilisée à la question précédente). Ensuite, choisir le paquetage "java.lang" en cliquant dessus dans le volet "Packages" (les paquetages sont rangés par ordre alphabétique). Dans le volet des classes ("Package Summary"), cliquez sur la classe System. Rappel : le champ SEARCH vous aurez aussi permis de trouver directement la classe System
.Fichier Livre.java
Fichier TestLivre.java
Questions 1 et 2
Fichier Livre.java avec
les 3 constructeurs
Fichier TestLivre.java
Modifié le 17/10/20