Académique Documents
Professionnel Documents
Culture Documents
2. Ajouter à la classe Point la méthode origine, de type de retour boolean qui teste si les coordonnées
du point sont nulles. Ajouter également une méthode egale telle que p.egale(q) renvoie true si et
seulement si les abscisses et ordonnées des points p et q sont égaux.
boolean origine(){ return ( ( abscisse == 0 ) && ( ordonnee == 0 ) ) ; }
boolean egale( Point q ){ return ( ( abscisse == q.abscisse ) && ( ordonnee == q.ordonnee ) ) ; }
3. Ecrire un deuxième constructeur de la classe Point, dont le prototype est Point( int u , int v ) qui
permet d’initialiser l’abscisse et l’ordonnée avec u et v. Ecrire une seconde méthode set, prenant
en argument un objet de la classe Point, et qui recopie les attributs de ces arguments.
Point( int u , int v ){ abscisse = u ; ordonnee = v ; }
void set( Point q ){ abscisse = q.abscisse ; ordonnee = q.ordonnee ; }
4. Ajouter à la classe Point une méthode symetrie telle que p.symetrie() renvoie un nouvel objet
Point qui représente le symétrique du point p, dans une symétrie centrale par rapport à l’origine du
repère.
Point symetrie(){ Point q = new Point(0-abscisse,0-ordonnee) ; return q ; }
5. On veut numéroter les points au fur et à mesure de leur création. On ajoute donc les variables
suivantes :
static int nombre ; int numero ; où l’attribut numero indique le numéro du point et où la variable
de classe nombre indique combien d’objets ont été créés. Réécrire les constructeurs Point en
conséquence. Réécrire également la méthode afficher pour observer la valeur de ces nouveaux
attributs.
Point(){ abscisse = 0 ; ordonnee = 0 ; nombre++ ; numero = nombre ; }
Point( int u , int v ){ abscisse = u ; ordonnee = v ; nombre++ ; numero = nombre ; }
void affiche(){ System.out.println( "abscisse = " + abscisse + " ordonnee = " + ordonnee + " nombre
de points = " + nombre + " numero = " + numero) ; }
1/5
Exercice n°2
Nous nous proposons dans cet exercice d’écrire une classe implémentant une paire d’entier,
pour cela :
1. Définir une classe Paire dont le constructeur initialise les attributs privés de la paire.
2. Définir une méthode affiche et une fonction main pour tester cette classe.
3. Définir un deuxième constructeur, qui initialisera à 0 les composants de la paire.
4. Définir un troisième constructeur, qui initialisera une paire à l’aide d’une autre paire.
5. Définir des fonctions permettant d’accéder et de modifier chaque élément de la paire. Enrichir la
classe Paire d’une méthode définissant quand une paire est inférieure à une autre selon la règle
lexicographique suivante : (x1, y1) < (x2, y2) ssi (x1 < x2) ou (x1 = x2 et y1 < y2).
public class Paire{
private int first ;
private int second ;
public Paire( int first , int second ){ this.first = first ; this.second = second ; }
public Paire(){ this.first = 0 ; this.second = 0 ; }
public Paire( Paire p ){ this.first = p.first ; this.second = p.second ; }
public int getFirst(){ return first ; }
public int getSecond(){ return second ; }
public void setFirst( int x ){ first = x ; }
public void setSecond( int y ){ second = y ; }
public void affiche(){ System.out.print( "("+ first + ","+ second +")" ) ; }
public static void main( String[] args ){ Paire p1 = new Paire( 1 , 2 ) ; Paire p2 = new Paire() ; Paire
p3 = new Paire( p1 ) ;
p1.affiche() ;
p2.affiche() ;
p3.affiche() ;
p3.setFirst(6) ;
System.out.println( "(" + p3.getFirst() + ","+ p3.getSecond() + ")" ) ; } }
public boolean strictInf( Paire q ){ return ( (this.first < q.first) || (this.first == q.first && this.second <
q.second) ) ; }
Exercice 3
Ecrivez une classe Rationnel qui définit les nombres rationnels.
La classe a les attributs privés suivants :
• numerateur : Le numérateur;
• denominateur : Le dénominateur.
La classe Rationnel doit disposer des constructeurs suivants :
• Rationnel();
• Rationnel(int numerateur, int denominateur);
• Rationnel(Rationnel r).
La classe Rationnel doit contenir des accesseurs (get) et mutateurs (set) pour les différents
attributs.
Elle doit aussi contenir les méthodes :
• void additionner(Rationnel r) : ajout du Rationnel en paramètre;
• void soustraire(Rationnel r) : soustraction du Rationnel en paramètre;
• void multiplier(Rationnel r) : multiplication avec le Rationnel en paramètre;
• void diviser(Rationnel r) : division par Rationnel en paramètre;
2/5
• double evaluer() : renvoie le résultat sous la forme d'un nombre réel;
• Rationnel inverser() : renvoie le Rationnel inverse ;
• void afficher() : affiche une représentation du rationnel (a/b).
Ecrivez aussi une classe TestRationnel afin de tester la classe Rationnel.
Exercice 4
Fournissez la classe Point conçue de manière à ce que le programme suivant fonctionne
correctement :
class TestPoint
{
public static void main(String[] args)
{
// Création du point de coordonnées x=1 et y=3
Point p1 = new Point(1.0, 3.0);
// Création du point de coordonnées x=5 et y=6
Point p2 = new Point(5.0, 6.0);
// Création du point de coordonnées x=2 et y=7
Point p3 = new Point(2.0, 7.0);
p1.affiche( ); // affiche : p = (1.0 , 3.0)
p2.affiche( ); // affiche : p = (5.0 , 6.0)
p3.affiche( ); // affiche : p = (2.0 , 7.0)
}
}
Indications :
La distance entre deux points (x1,y1) et (x2,y2) est égale à :
La classe prédéfinie Math contient des méthodes static permettant de calculer la racine carré et
la puissance d'un certain nombre, voici la déclaration de ces méthodes :
class Math {
// Méthode sqrt : retourne la racine carré de nb
public static double sqrt(double nb) {…}
3/5
class Polynome {
private double donnees [ ];
private int ordre;
4/5
// La méthode affiche le polynôme sous sa forme habituelle
void affiche() {boolean affichePlus = false; if (ordre == -1 || (ordre == 0 && egalite(donnees[0], 0)))
System.out.print(0); else for (int i = ordre; i >= 0; i--) { double coef = coefficient(i); if (!egalite(coef, 0)) if (coef > 0
&& affichePlus) System.out.print("+" + afficheMonome(coef, i)); else { System.out.print(afficheMonome(coef, i));
affichePlus = true; } } System.out.println();
}
private String afficheMonome(double coef, int ordre) { if (ordre == 0) return new
Double(coef).toString(); else if (ordre == 1) return coef + "*X"; else return coef + "*X^" + ordre; }
private boolean egalite(double a, double b) { final double EPSILON = 1E-6; return ((a - b) * (a - b) <
EPSILON * EPSILON); }
5/5