TP 0 (mise en route)
Page Home (contact) Retour
TPs
Support de cours
Avant de commencer ce premier TP vous devez déjà
avoir installé l'environnement de travail comme il est indiqué
ici.
Organisation du travail :
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 ; emacs est conseillé mais vous pouvez en choisir un autre.
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, on ajoute des méthodes ou des
variables à 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é d'avoir des répertoires
différents).
Vous aurez ainsi à créer, par exemple, un fichier java\tp\tp1\exo2\Livre.java.
Si vous n'avez pas terminé un TP, vous devez le terminer seul (ou avec
l'aide de vos camarades) pour le prochain 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.
Compiler et exécuter une application
Voici le source de l'application HelloWorld
:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Compilez cette classe à l'aide de la commande : javac HelloWorld.java
Exécuter la classe HelloWorld à l'aide de la commande
: java HelloWorld
Une première "vraie" classe
Voici le source de la classe Livre :
public class Livre {
// Variables
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;
}
Corrigez quelques petites erreurs et ajoutez une méthode main
pour
Créer 2 livres,
Faire afficher les auteurs de ces 2 livres.
Lancez l'exécution de la classe Livre.
Correction :
Classe Livre
Accesseurs et modificateurs
Modifiez la classe Livre :
-
Ajoutez un accesseur pour la variable titre et la variable nbPages.
-
Ajouter un modificateur pour les variables auteur et titre.
-
Changez le modificateur de nbPages : il ne devra changer le nombre
de pages que si on lui passe en paramètre un nombre positif, et
ne rien faire sinon, en affichant un message d'erreur. On remarquera l'intérêt
des variables private : on peut contrôler leur modification
dans les éventuelles méthodes qui permettent de les modifier.
-
Dans la méthode main,
-
donnez le nombre de pages de chacun des 2 livres,
-
faites afficher ces nombres de pages,
-
calculez le nombre de pages total de ces 2 livres et affichez-le.
Lancez l'exécution de la classe Livre.
Correction :
Classe Livre
2 classes dans 2 fichiers
source pour une application
Ecrivez 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.
Faites exécuter la méthode main de la classe
TestLivre.
Correction :
Classe TestLivre
2 classes dans un seul fichier source
Supprimez le fichier TestLivre.class.
Insérez 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).
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.
Correction :
Fichier Livre.java
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.
Méthode toString()
- Dans la classe Livre, ajoutez une méthode afficheToi()
qui affiche une description du livre (auteur, titre et nombre de pages). Utilisez
afficheToi() dans la méthode 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.
- Ajoutez une méthode toString() qui renvoie une chaîne
de caractères qui décrit le livre. Donnez à la méthode
toString() le même profil que la méthode de même
nom de la classe java.lang.Object (cherchez dans les API du JDK).
Exécutez à nouveau la classe TestLivre. Voyez ce qui est affiché
maintenant par l'instruction System.out.println(livre). Miracle !
println() utilise automatiquement la méthode toString()
de la classe de l'objet qu'il a à imprimer. Essayez de trouver une
explication rationnelle en faisant la question suivante.
- Il faut savoir chercher dans la documentation de l'API (javadoc). En partant
de la classe java.lang.System
et en cliquant sur les liens, retrouvez dans la documentation que System.out.println(objet)
affiche ce que retourne la méthode toString
de la classe de objet.
- Modifiez la méthode afficheToi() pour utiliser toString().
- Vérifiez le bon fonctionnement de la méthode en lançant l'exécution de la classe TestLivre.
Correction :
Fichier Livre.java
Fichier TestLivre.java
Recherche dans la javadoc du JDK
Constructeurs
- Enlevez (provisoirement) le seul constructeur de la classe Livre. Sans ajouter
de nouveau constructeur, peut-on quand même créer un nouveau livre
dans la méthode main ?
Si c'est possible, créez un livre écrit par Victor Hugo et faites
afficher son titre et son auteur.
- Remettez le constructeur que vous avez enlevé. Est-ce que le code
de la méthode main de
la question précédente fonctionne toujours (testez) ?
- Ajoutez 2 constructeurs pour avoir 3 constructeurs dans la classe :
- un constructeur qui n'a pas de paramètre,
- un qui prend en paramètre l'auteur et le titre du livre,
- et l'autre qui prend en plus le nombre de pages.
Utilisez les 3 constructeurs (et éventuellement d'autres méthodes)
pour créer 3 livres de 300 pages dans la méthode main
de TestLivre.
- Testez en lançant l'exécution.
Correction :
Questions 1 et 2
Fichier Livre.java avec
les 3 constructeurs
Fichier TestLivre.java
Pour ceux qui ont déjà fini :
Ajoutez des méthodes à la classe Livre et testez-les.
Retour TPs
Modifié le 6/11/14