Travaux Dirigés N°1

Page 1 sur 4Lecteur de document UniversityLib

Travaux Dirigés N°1

Programming and Object-Oriented Design in C# · notes

Voir tous les documents en programmation

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.