TP1 - Mise en route

De $1

Version de 04:14, 18 Aoû 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Support de cours 

Avant de commencer les TPs vous devez avoir installer votre environnement de travail.

Organisation du travail

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 est à votre convenance. Le plus simple serait de le mettre directement sous votre répertoire HOME.

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/exo1/Hello.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.

Application Hello, World!

 Voici le code 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

Applet Hello, World!

Voici le code source de l'applet HelloWorldApplet:

import java.awt.Graphics;
import java.applet.Applet;

public class HelloWorldApplet extends Applet {
  public void paint(Graphics g) {
    g.drawString("Hello world!", 50, 25);
  }
}

Compilez cette classe à l'aide de la commande : javac HelloWorldApplet.java

Une applet doit s'exécuter dans un fichier html (ex. HelloWorld.html):

<object width="200" height="100">
  <param name="code" value="HelloWorld.class">
</object>

Testez avec l'appletviewer : appletviewer HelloWorldApplet.html.

La classe Moyenne

Créer un fichier Moyenne.java qui contient la classe Moyenne vue en cours.

class Moyenne {
  int notes = 0 ;
  int nombreDeNotes = 0 ;

  void ajouteNote (int note) {
    notes += note;
    nombreDeNotes += 1;
  }

  double calculMoyenne() {
    return ((double)notes) / nombreDeNotes ;
  }
}

  1. Comment faire pour tester cette classe ?
  2. Que se passe-t-il si on calcule la moyenne sans avoir saisi de notes ?
  3. Que se passe-t-il si on enlève le (double) ligne 11 ? Que ce passe-t-il dans ce cas si on calcule la moyenne sans avoir saisi de notes ?
  4. Peut-on mettre la méthode main directement dans la classe Moyenne ou faut-il nécessaire créer une classe TestMoyenne ?

Une calculatrice

Calculatrice.PNGOn veut créer une classe qui représente une calculatrice (cf. figure ci-contre).

  1. Quels sont les champs nécessaires pour cette classe ? Quel est leur type ?
  2. Quelles sont les méthodes qu'il faut créer ? Quelle est leur signature ? On veut réaliser toutes les opérations de cette calculatrice, y compris la flèche à gauche qui enlève le chiffre unité dans le nombre présent dans l'accumulateur.
  3. Pourles touches chiffre (0, 1, ..., 9), on proposera deux façons de faire. La première façon consiste à définir une méthode par chiffre (zero(), un(), ...). La deuxième méthode

Note: Si x est une variable numérique, l'instruction Java Math.sqrt(x) calcule la racine carrée de x.

 

 

Les nombres complexes et les références

Implanter les deux classes ComplexeCartesien et ComplexePolaire vues en cours. Ceux qui veulent (et qui savent) pourront ajouter un constructeur. Les autres attendront le prochain cours pour savoir de quoi l'on parle et utiliseront simplement la notation pointée pour choisir les valeurs des champs.

  1. Sachant que la norme d'un nombre complexe est le carré du module sauriez vous ajouter une méthode module dans ces deux classes ?

Créer deux objets c1 et c2 de type ComplexeCartesien qui représentent la même valeur, par exemple le nombre complexe i.

  1. Que se passe-t-il si l'on compare c1 et c2 avec l'opérateur de comparaison == ?
  2. Ajouter une méthode boolean egalA(ComplexeCartesien c) qui permet de comparer la valeur d'un nombre complexe avec un autre. 

Exercice supplémentaire

Seriez-vous faire une calculatrice qui fonctionne avec des nombres complexes ?