Travaux Dirigés N 1
Exercice 1 Qu’affiche le programme suivant ?
using System;
public class Ex1
{
int a = 0;
public void f()
{
a++;
}
public void affiche()
{
Console.WriteLine(a);
}
public static void Main(String[] args)
{
Ex1 p = new Ex1();
Ex1 q = new Ex1();
p.affiche();
q.affiche();
p.f();
p.affiche();
q.affiche();
p = q;
p.f();
p.affiche();
Publicité
q.affiche();
}
}
Exercice 2 Qu’affiche le programme suivant ?
using System;
public class Ex2
{
int a = 0;
public static void f(Ex2 o)
{
o.a++;
o.affiche();
}
public void affiche()
{
Console.WriteLine(a);
}
public static void Main(String[] args)
{
Ex2 obj = new Ex2();
obj.affiche();
f(obj);
obj.affiche();
}
}
Exercice 3 Qu’affiche le programme suivant ?
Publicité
using System;
public class Ex3
{
int a = 0;
public void f(int a)
{
Console.WriteLine(a);
}
public static void Main(String[] args)
{
Ex3 p = new Ex3();
p.f(12);
}
}
Dans la fonction f, comment faire si on veut également afficher la valeur de l’attribut a ?
Exercice 4 Soit le programme suivant :
class Point
{
// deux attributs de type int
int abscisse;
int ordonnee;
// constructeur
Point()
{
abscisse = 0;
ordonnee = 0;
Publicité
}
// méthode permettant de changer les coordonnées d’un point
void set(int u, int v)
{
abscisse = u;
ordonnee = v;
}
// méthode permettant de translater un point
void translate(int u, int v)
{
abscisse = abscisse + u;
ordonnee = ordonnee + v;
}
}
1. Ajouter à la classe Point la méthode affiche, de type de retour void, de sorte que p.affiche()
affiche à l’écran l’abscisse et l’ordonnée de p.
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.
2. écrire un deuxième constructeur de la classe Point, dont la signature est Point( int u , int v )
qui permet d’initialiser l’abscisse et l’ordonnée avec u et v. écrire une seconde méthode set,
prenant en argument un objet de la classe Point, et qui recopie les attributs de ces arguments.
3. 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.
4. On veut numéroter les points au fur et à mesure de leur création. On ajoute donc les variables
Publicité
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 affiche pour
observer la valeur de ces nouveaux attributs.
Exercice 5 Ecrire une classe implémentant une paire d’entier :
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.
Exercice 6
1. 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).
2. Le principe du tri bulle est de parcourir un tableau jusqu’à ce qu’il soit trié. A chaque
parcours, on compare deux à deux les éléments consécutifs et on les permute s’ils ne sont pas
dans l’ordre. Si lors d’un parcours on n’a permuté aucun élément, le tableau est trié. Créer une
classe Tri, et une méthode statique Tribulle qui trie un tableau de paires.