TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
Correction Série TP N°:1
Éléments de base du langage JAVA
Objectif : Le but de ce TP est de vous familiariser avec l'environnement de
développement sur lequel vous allez travailler et de maitriser la syntaxe de base du langage JAVA.
Exercice 1:
Ce code compile-t-il et, si non, quelle(s) erreur(s) le compilateur va-t-il indiquer?
class Toto{
int toto = 0;
Toto())
{
}
toto = toto + 1;
public static void main (String[] args)
{
Toto t1 = new Toto();
Toto t2 = new Toto();
[Link]("Toto : " +
toto); }
}
REPONSE :
Non, ce code ne compile pas. Le compilateur va indiquer plusieurs
erreurs :
1. Le constructeur de la classe Toto est mal défini, car il n'a pas de parenthèses avant
l'accolade ouvrante
2. L'expression toto = toto + 1; est en dehors de toute méthode ou constructeur et
ne peut donc pas être évaluée
3. La variable toto est définie comme une variable d'instance de la classe Toto
class Toto{
int toto = 0;
Toto() {
toto = toto + 1;
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
}
public static void main (String[] args) {
Toto t1 = new Toto();
Toto t2 = new Toto();
[Link]("Toto : " + [Link]);
}
}
Exercice 2:
Écrire une classe nommée «< Carre » servant à calculer la racine carrée d'un
nombre réel de type double. On peut utiliser le package [Link].
REPONSE :
Voici une implémentation possible de la classe Carre qui utilise la méthode sqrt() de la
classe Math pour calculer la racine carrée d'un nombre réel :
---------------------------------------------------------------------------------------------------------------------------
public class Carre {
public static double racineCarree(double x) {
return [Link](x);
}
}
---------------------------------------------------------------------------------------------------------------------------
public class Main {
public static void main(String[] args) {
double x = 9.0;
double racine = [Link](x);
[Link]("La racine carrée de " + x + " est " +
racine);
}
}
---------------------------------------------------------------------------------------------------------------------------
Exercice 3:
Écrivez une classe nommée «< Somme » qui permet de lire deux nombres à partir de
l'utilisateur, puis de calculer leur somme.
REPONSE
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
---------------------------------------------------------------------------------------------------------------------------
public class Somme {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez le premier nombre : ");
double premierNombre = [Link]();
[Link]("Entrez le deuxième nombre : ");
double deuxiemeNombre = [Link]();
double somme = premierNombre + deuxiemeNombre;
[Link]("La somme de " + premierNombre + " et " + deuxiemeNombre + " est
" + somme);
}
}
---------------------------------------------------------------------------------------------------------------------------
Exercice 4:
Créer une classe nommée << Perimetre_Rectangle » qui lit la longueur et la largeur d'un rectangle en
entrée et calcule ensuite son périmètre. Périmètre = 2*(longueur + largeur)
REPONSE :
classe Perimetre_Rectangle qui lit la longueur et la largeur d'un rectangle en entrée et
calcule son périmètre :
------------------------------------------------------------------------------------------------------------------
public class Perimetre_Rectangle {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez la longueur du rectangle : ");
double longueur = [Link]();
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
[Link]("Entrez la largeur du rectangle : ");
double largeur = [Link]();
double perimetre = 2 * (longueur + largeur);
[Link]("Le perimetre du rectangle de longueur " + longueur + " et de largeur
" + largeur + " est " + perimetre);
}
}
---------------------------------------------------------------------------------------------------------------------------
Exercice 5 :
Créer une classe nommée « Conversion » qui lit la longueur en centimètres en entrée et la
convertit ensuite en mètres et kilomètres.
REPONSE :
public class Conversion {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez une longueur en centimètres : ");
double longueurCm = [Link]();
double longueurM = longueurCm / 100.0; // conversion en mètres
double longueurKm = longueurCm / 100000.0; // conversion en kilomètres
[Link](longueurCm + " cm équivaut à " + longueurM + " mètres et " +
longueurKm + " kilomètres.");
}
}
---------------------------------------------------------------------------------------------------------------------
Exercice 6:
Créer une classe nommée «< Etudiant » et compléter le code de cette classe en lui ajoutant :
Un attribut de type String nommé << nom
>> ;
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
Un constructeur public qui a un paramètre de type String servant à initialiser le nom de l'étudiant ; Une
méthode publique sans paramètre et qui ne renvoie rien, nommée travailler, qui écrit à l'écran, si le
nom de l'étudiant a pour nom toto : « toto se met au travail ! ». Pour cela, il faut utiliser l'instruction:
[Link]([Link] + " se met au travail !");
Une méthode publique sans paramètre et qui ne renvoie rien, nommée seReposer, qui écrit à
l'écran, si le nom de l'étudiant a pour nom toto : « toto se repose >>
Vous allez ensuite créer parallèlement à la classe << Etudiant », une classe << TestEtudiant >> (dans le
paquetage) contenant une méthode main qui :
1
TP Programmation OO – 2SE | Dr. Hajer
Nabli
Crée un étudiant (instance de la classe Etudiant) en lui donnant un nom écrit directement dans le
fichier source;
Invoque la méthode travailler de l'étudiant créé
-
Invoque la méthode seReposer de l'étudiant créé
REPONSE :
implémentation de la classe Etudiant :
public class Etudiant {
private String nom;
public Etudiant(String nom) {
[Link] = nom;
}
public void travailler() {
if ([Link]("toto")) {
[Link]([Link] + " se met au travail !");
} else {
[Link]([Link] + " travaille.");
}
}
public void seReposer() {
if ([Link]("toto")) {
[Link]([Link] + " se repose.");
} else {
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
[Link]([Link] + " se repose aussi.");
}
}
}
implémentation de la classe TestEtudiant :
public class TestEtudiant {
public static void main(String[] args) {
Etudiant etudiant = new Etudiant("toto");
[Link]();
[Link]();
}
}
---------------------------------------------------------------------------------------
Exercice 7:
Soit le programme
suivant :
class MaClasse {
private double a;
public double b;
public double
c;
public double delta=0;
public MaClasse (int x, int y, int z) { a=x; b=y;
z=c; }
public MaClasse ()
{}
public void Delta() {delta=[Link](b,2)-
4*a*c}
public void Solution()
{
Delta();
if ((a==0)&&(b==0)) [Link]("pas de
solution");
if ((a==0)&&(b!=0)) [Link]("la solution est
:+"c/b); if ((a!=0)&&(b!=0))
if((delta>0)||(delta==0)) {
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
}
else
[Link]("la première solution est :"+((-[Link](delta))/(2*a)));
[Link]("la deuxième solution est :"+((-b+[Link](delta))/(2*a)));
[Link]("pas de
solution");
}
public static void main(string[] args) { //Méthode main pour
le test
MaClasse x=new MaClasse
(0.5,2,1);
[Link]()
;
MaClasse y=new MaClasse
();
y.a=1;
y.b=2;
y.c=1;
[Link]()
;
}
}
1. Trouvez et expliquez les erreurs dans ce programme.
2. Exécutez ce programme avec des exemples différents.
3. Déterminez que fait ce programme.
REPONSE :
1. Erreurs dans le programme:
La méthode Delta() ne contient pas de point-virgule à la fin de la ligne delta=[Link](b,2)-4ac,
ce qui provoque une erreur de syntaxe.
Dans le constructeur MaClasse(int x, int y, int z), z devrait être c, sinon l'attribut c ne sera pas
initialisé correctement.
Dans la méthode Solution(), l'expression "[Link]("la solution est :+"c/b);" contient une
erreur de syntaxe, car il manque une double citation après le signe "+".
Dans la méthode Solution(), le cas où delta est égal à zéro n'est pas pris en compte. En effet, la
condition delta>0||(delta==0) n'est pas suivie d'une instruction, ce qui entraînera une erreur de
syntaxe.
Dans la méthode Solution(), la condition pour vérifier si a et b sont égaux à zéro est incorrecte.
Elle doit être écrite comme suit: if ((a==0)&&(b==0))
2. Exécution du programme avec des exemples différents:
------------------------------------------------------------------------------------------------------------------
class MaClasse {
private double a;
public double b;
public double c;
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
public double delta=0;
public MaClasse (double x, double y, double z) {
a=x;
b=y;
c=z;
}
public MaClasse (){}
public void Delta() {
delta=[Link](b,2)-4*a*c;
}
public void Solution() {
Delta();
if ((a==0)&&(b==0))
[Link]("pas de solution");
if ((a==0)&&(b!=0))
[Link]("la solution est : "+c/b);
if ((a!=0)&&(b!=0)) {
if((delta>0)||(delta==0)) {
[Link]("la première solution est : "+((-[Link](delta))/(2*a)));
[Link]("la deuxième solution est : "+((-b+[Link](delta))/(2*a)));
} else {
[Link]("pas de solution");
}
}
}
public static void main(String[] args) {
//Méthode main pour le test
MaClasse x=new MaClasse (0.5,2,1);
[Link]();
MaClasse y=new MaClasse ();
y.a=1;
y.b=2;
y.c=1;
[Link]();
}
}
---------------------------------------------------------------------------------------------------------------
Résultat de l'exécution :
la première solution est : -3.0
la deuxième solution est : -1.0
la première solution est : -1.0
la deuxième solution est : -1.0
3. Fonctionnement du programme:
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5
Le programme permet de calculer les solutions d'une équation du second degré de la
forme ax²+bx+c=0. Il prend en entrée les valeurs des coefficients a, b et c et utilise la
méthode Solution() pour afficher les solutions de l'équation.