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!");
- }
- }
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);
- }
- }
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>
<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 ;
- }
- }
class Moyenne {
int notes = 0 ;
int nombreDeNotes = 0 ;
void ajouteNote (int note) {
notes += note;
nombreDeNotes += 1;
}
double calculMoyenne() {
return ((double)notes) / nombreDeNotes ;
}
}
- Comment faire pour tester cette classe ?
- Que se passe-t-il si on calcule la moyenne sans avoir saisi de notes ?
- 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 ? - Peut-on mettre la méthode main directement dans la classe
Moyenne
ou faut-il nécessaire créer une classe TestMoyenne
?
Une calculatrice
On veut créer une classe qui représente une calculatrice (cf. figure ci-contre).
- Quels sont les champs nécessaires pour cette classe ? Quel est leur type ?
- 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.
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.
- 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
.
- Que se passe-t-il si l'on compare
c1
et c2
avec l'opérateur de comparaison ==
? - 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 ?