Exercice – Apprivoiser la surcharge d'opérateurs

Quelques exercices pour apprivoiser la surcharge d'opérateurs avec C#.

Activité – Classe TiTableau

Nous allons coder une classe TiTableau, qui modélisera... un petit tableau unidimensionnel d'entiers de taille fixée à la construction.

Cette classe offrira une gamme de services de base, soit :

Nous allons aussi implémenter quelques opérateurs pour cette classe, soit :

Un programme de test possible serait :

TiTableau tt0 = new (5);
for (int i = 0; i != tt0.Taille; ++i)
   tt0[i] = i + 1;
Console.WriteLine($"tt0 : {tt0}");
TiTableau tt1 = new (5);
for (int i = 0; i != tt1.Taille; ++i)
 tt1[i] = i + 1;
Console.WriteLine($"tt1 : {tt1}");
TestRelationnels(tt0, tt1);
Console.WriteLine($"{tt0} + {tt1} == {tt0 + tt1}");
TestRelationnels(tt0, tt0 + tt1);
Console.WriteLine($"-({tt0}) == {-tt0}");
TestRelationnels(tt0, -tt0);

static void TestRelationnels(TiTableau tt0, TiTableau tt1)
{
   if (tt0 == tt1)
      Console.WriteLine($"{tt0} == {tt1}");
   if (tt0 != tt1)
      Console.WriteLine($"{tt0} != {tt1}");
   if (tt0 < tt1)
      Console.WriteLine($"{tt0} < {tt1}");
   if (tt0 <= tt1)
      Console.WriteLine($"{tt0} <= {tt1}");
   if (tt0 > tt1)
      Console.WriteLine($"{tt0} > {tt1}");
   if (tt0 >= tt1)
      Console.WriteLine($"{tt0} >= {tt1}");
}

... ce qui devrait afficher :

tt0 : 1 2 3 4 5
tt1 : 1 2 3 4 5
1 2 3 4 5 == 1 2 3 4 5
1 2 3 4 5 <= 1 2 3 4 5
1 2 3 4 5 >= 1 2 3 4 5
1 2 3 4 5 + 1 2 3 4 5 == 2 4 6 8 10
1 2 3 4 5 != 2 4 6 8 10
1 2 3 4 5 < 2 4 6 8 10
1 2 3 4 5 <= 2 4 6 8 10
-(1 2 3 4 5) == -1 -2 -3 -4 -5
1 2 3 4 5 != -1 -2 -3 -4 -5
1 2 3 4 5 > -1 -2 -3 -4 -5
1 2 3 4 5 >= -1 -2 -3 -4 -5

Exercice – Classe Point

À titre d'exercice, vous allez coder une classe Point modélisant un point 2D. Cette classe offrira les services suivants :

Écrivez un programme de test pour valider votre oeuvre.

Exercice – Classe Naturel

À titre d'exercice, vous allez coder une classe Naturel modélisant entier naturel, donc dont la valeur est supérieure ou égale à zéro. Cette classe offrira les services suivants :

Écrivez un programme de test pour valider votre oeuvre. Toute tentative de placer un Naturel dans un état incorrect devrait lever ErreurDomaineException.


Valid XHTML 1.0 Transitional

CSS Valide !