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 :

    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()

    1. 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.
    2. Ajoutez l'instruction System.out.println(livre)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.
    3. 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.
    4. 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.
    5. Modifiez la méthode afficheToi() pour utiliser toString().
    6. 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

    1. 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.
    2. 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) ?
    3. Ajoutez 2 constructeurs pour avoir 3 constructeurs dans la classe : 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.
    4. 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