0% ont trouvé ce document utile (0 vote)
221 vues6 pages

TP-2 (Corrigé)

Le document contient 4 exercices sur la programmation orientée objet en Java. L'exercice 1 concerne la classe Rectangle, l'exercice 2 concerne la classe Robot et ses méthodes de déplacement, l'exercice 3 concerne la classe Segment, et l'exercice 4 concerne la classe Compte bancaire.

Transféré par

aymenkrid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
221 vues6 pages

TP-2 (Corrigé)

Le document contient 4 exercices sur la programmation orientée objet en Java. L'exercice 1 concerne la classe Rectangle, l'exercice 2 concerne la classe Robot et ses méthodes de déplacement, l'exercice 3 concerne la classe Segment, et l'exercice 4 concerne la classe Compte bancaire.

Transféré par

aymenkrid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 6

Université de Sfax

Ecole Nationale des Ingénieurs de Sfax


Département de Génie Informatique et de Mathématiques Appliquées
TP 2 : Classe et Objet en Java
Matière : Programmation Orientée Objet A.U : 2021/2022 Classe: GI1

Exercice 1 :
Programmer l’objet Rectangle qui comporte :
les attributs :
Largeur et Longueur de type float, et
les méthodes :
périmètre(…) qui calcule et retourne le périmètre du rectangle,
diagonale(…) qui calcule et retourne la valeur de la diagonale du rectangle,
doubler(…) qui double la longueur du rectangle.
Ecrire la classe TestRectangle qui contient une fonction main appelant les fonctions périmètre,
diagonale, doubler, et affiche leurs résultat sur l’écran.

Exercice 2 :
Ecrire une classe Robot qui simule le mouvement d’un robot simple. Un tel robot :
- a un nom
- a une position : donnée par les attributs entiers x et y, sachant que x augmente en allant vers
l’EST et y augmente en allant vers le Nord
- a une orientation : donnée par l’attribut direction qui prend une valeurs parmi {"Nord", "Est",
"Sud", "Ouest"}.
- peut avancer d’un pas en avant avec la méthode avancer(…)
- peut tourner à droite de 90° pour changer de direction avec la méthode tournerDroite(…) : si sa
direction était "Nord" elle devient "Est", si sa direction était "Est" elle devient "Sud", etc.) qui
modifie l’orientation du robot sans changer sa position
- peut afficher son état en détails avec la méthode afficheRobot(…)

Le nom, la position et la direction d’un robot lui sont données au moment de sa création. Le nom est
obligatoire mais on peut ne pas spécifier la position et la direction, qui sont définis par défaut à (0,0)
et "Est". Ecrire aussi un programme qui teste la classe Robot.

Exercice 3:
Ecrire un programme qui contient :
une classe Segment comportant
- deux attributs de type int, extr1 et extr2, représentant les coordonnées (entières) des extrémités
d'un segment sur un axe,
- une méthode retournant la longueur du segment
- une méthode indiquant si un point, dont la coordonnée (entière) (int) est donnée en argument,
appartient ou non au segment
- une méthode redéfinissant la méthode :
public String toString() : Celle-ci écrira un segment d'extrémités 44 et -35 (par exemple)
sous la forme : segment [-35, 44]
- une classe EssaiSegment testant la classe Segment et comportant une méthode main à laquelle
on devra fournir trois paramètres entiers par la ligne de commande : origine et extrémité d'un segment
et coordonnée d'un point dont on voudra savoir s'il appartient ou non au segment. On utilisera
nécessairement la méthode toString pour exprimer le segment.

1
Exercice 4 :
Définir une classe nommée Compte destinée à gérer le ou les comptes d’une personne. Cette classe
possède les deux attributs suivants :
- solde : attribut de type double,
- nombreComptes : attribut de type entier (comptabilise le nombre de comptes créés)
et les méthodes suivantes :
- MonCompte (double x) : crée un compte avec un solde initial x
- MonCompte ( ) : crée un compte avec un solde 0
- getsolde (… ) : renvoie le solde du compte
- retirer (…) : retire une somme d’argent du solde si le montant est inférieur au solde, sinon
affiche un message d’erreur.
- deposer ( …) : dépose une somme d’argent sur un compte
- transferer (…) : transfère une somme d’argent d’un compte à un autre

Définir une classe nommée TestCompte qui teste la classe Compte dans laquelle on :

1) Crée un premier compte c1 en spécifiant le solde initial (500 d, par exemple)


2) Crée un second compte c2 en utilisant le second constructeur
3) Affiche les soldes de ces comptes
4) Effectue des dépôts et des retraits d’argents sur ces deux comptes
5) Transfère de l’argent d’un compte à un autre
6) Affiche le nombre des comptes (valeur de l’attribut nombreComptes)
7) Affiche les soldes finaux pour ces comptes

2
TP N°2

Exercice 1:
public class Rectangle {
private float longueur, largeur ;
public Rectangle ( float lo , float la ) {
longueur = lo ;
largeur = la ;
}
public float perimetre() {
return 2 * ( longueur + largeur );
}

public float doubler() {


return 2* longueur ;
}

public String toString() {


return ("le rectangle de longueur " + longueur + " et de largeur " + largeur);
}
}

public class TestRectangle {


public static void main(String[] args) {
Rectangle r1=new Rectangle(5,2);
System.out.println("Le perimetre est "+r1.perimetre());}}
Exercice 2:
public class Robot {
private String nom;
static int x,y;
static String direction ;

Robot(String nom ){
x=0;
y=0;
direction="Est";
this.nom=nom;
}

Robot(String nom, int x ,int y, String direction ){


this.x=x;
this.y=y;
this.direction=direction;
this.nom=nom;
}

static void avancer () {


if (direction=="Nord")
y++;
if (direction=="Est")
x++;
if (direction=="Sud")
x--;
if (direction=="Ouest")
y--;}
static void tournerDroite () {
if (direction=="Nord")
direction="Est";
if (direction=="Est")
direction="Ouest";
if (direction=="Ouest")
direction="Sud";
if (direction=="Sud")
direction="Nord";
}

public void afficheRobot () {


System.out.println("le robot "+nom+" a la position ("+x+","+y+") et la
direction est "+direction);
}
}

public class Test_Robot {


public static void main(String[] args) {
Robot R;
R= new Robot("oussama");
R.avancer ();
R.avancer ();
R.tournerDroite ();
R.avancer ();

R.afficheRobot ();
}
}

Exercice 3:
public class Segment {
private int extr1;
private int extr2;
public Segment(int extr1, int extr2) {
this.extr1 = extr1;
this.extr2 = extr2;
}
public double length() {
return Math.abs(extr2 - extr1);
}
public boolean contains(int point) {
return (point >= Math.min(extr1, extr2)) && (point <= Math.max(extr1, extr2));
}
public String toString() {
return "segment [" + Math.min(extr1, extr2) + ", " + Math.max(extr1, extr2) + "]";
}
}

import java.util.Scanner;
public class EssaiSegment {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int extr1,extr2;
extr1= sc.nextInt();
extr2= sc.nextInt();
Segment s =new Segment(extr1,extr2);
int point= sc.nextInt();
if (s.contains( point) == true )
System.out.print(" Oui ");
else
System.out.print(" non ");
}
}

Exercice 4:
public class Compte {
float solde;
static int nbComptes=0;
public Compte(float s){
this.solde=s;
nbComptes++;
}

public Compte(){
solde=0;
nbComptes++;
}
public void deposer(float mt){
solde=solde+mt;
}

public void retirer(float mt){


solde-=mt;
}

public String getsolde(){


return ("Solde= "+solde);
}

public String afficheNbComptes(){


return ("nbComptes="+nbComptes);
}

public void transferer(Compte cb, float mt){


cb.deposer(mt);
retirer(mt);
}
}

public class TestCompte {


public static void main(String[] args) {
// Question 1
Compte c1=new Compte(500);
// Question 2
Compte c2=new Compte();
// Question 3
System.out.println("Le solde de premier est "+c1.getsolde());
System.out.println("Le solde de deuxieme est "+c2.getsolde());
// Question 4
c1.deposer(500);
c2.deposer(80);
// Question 5
c2.transferer(c1, 80) ;
// Question 6
int nbre = c2.nbComptes;
System.out.println("Le nbre total de compte est "+nbre);
// Question 7
System.out.println("Le solde de premier est "+c1.getsolde());
System.out.println("Le solde de deuxieme est "+c2.getsolde());
}}

Vous aimerez peut-être aussi