IN
ISI
S T I TUT
SUPERIEUR Année Universitaire
INFORMATIQUE
الـمعهـد العـالـي لإلعـالمــيـة 2022-2023
Matière : Programmation Orientée Objet Niveau : 2ème année SE
Correction TP N°3 JAVA
Exercice N°1 :
Classe Point:
package TP3;
import java.lang.Math;
public class Point {//contient les attributs,les constructeurs
//et les méthodes
// attributs membres
double x,y;
char nom;
//Si le attributs sont privés ont doit ajouter
// les accesseurs getters et setters
/*
private double x,y;
private char nom;
public char getNom() {//récupérer la valeur du nom
return nom;
}
public void setNom(char nom) {//affecter la valeur "nom"
à l'attribut nom
this.nom = nom;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
*/
// méthodes membres
Point(char a,double b,double c){//constructeur paramétré qui serve à créer
//un point quelconque
nom = a; // ou bien this.nom =a;
// this est reference sur l'objet
// courant(objet appelé au moment de l'execution)
x=b; y=c;
1
}
//constructeur sans paramètres pour créer le point O(0,0)
Point(){
nom = 'O';
x=0;
y=0;
}
//autre ecriture pour le constructeur sans paramètres
/*Point(){
this('O',0,0);
}*/
//méthode affiche : affiche le point sous la forme A(-2,3)
void affiche(){
System.out.println(nom+"("+x+","+y+")");
}
//méthode translate : obtention d'un même
// point mais des coordonnées différentes
void translate(double d){
x+=d;
y+=d;
}
//méthode milieu: obtention d'un nouveau point M
Point milieu(Point p){//retourne le point milieu entre le point
//courant et le point p
return new Point('M',(x+p.x)/2,(y+p.y)/2);
}
/*ou bien
Point milieu(Point p){
Point M=new Point();
M.nom='M';
M.x=(x+p.x)/2;
M.y=(y+p.y)/2;
return M;
}
*/
//méthode symetrique: obtention d'un nouveau point S
Point symetrique(){//retourne le point symétrique d'un point
Point s = new Point();
s.nom='S';
s.x=-x;
s.y=-y;
return s;
}
//solution 2
/*Point symetrique(){
return new Point('S',-x,-y);
}
*/
//méthode distance
double distance(Point p){
2
return (Math.sqrt(Math.pow(x-p.x, 2)+Math.pow(y-p.y, 2)));
}
//méthode compare
boolean compare(Point p){
return ((x == p.x) && (y == p.y)); //retourne le résultat
//d'une éxpression logique (vrai ou faux)
}
}
Classe TestPoint:
package TP3;
public class TestPoint {
//cette classe contient l'instanstiation des objet Point
// et les appels des méthodes
public static void main(String[] args) {
Point o=new Point();//instanstiation de l'objet de type
//point O(0,0) en appelant le constructeur sans paramètres
Point p1=new Point('A',1,1);//instanstiation de l'objet
//de type point A(1,1) en appelant le constructeur avec
paramétres
Point p2=new Point('B',2,3);
p2.affiche();//affichage de p1
p1.affiche();
o.affiche();
p1.translate(2);
p1.affiche();//affichage de p1 après translation
/*p2.x=7;//affecter la valeur 7 àl'abscisse de p2
si x est private on écrit p2.setX(7);
p2.affiche();*/
p2.translate(2);//A(3,3)
p1.milieu(p2).affiche();
/*ou bien
Point M=p1.milieu(p2);
M.affiche();*/
p2.symetrique().affiche();//S(-3,-3)
System.out.println("la distance entre p1 et p2 est "
+p1.distance(p2));
//p1.distance(p2) retourne la distance entre p1 et p2
if(p1.compare(p2))//compare 2 points selon la valeur de x et y
System.out.println("2 points identiques");
else
System.out.println("2 points différents");