TP sur les classes

Objectifs et prérequis

Prérequis : cours sur la POO

À l’issue de ce TP, vous saurez :

  • définir une classe avec un constructeur, des attributs et des méthodes ;
  • écrire des méthodes qui renvoient un booléen ou une nouvelle instance ;
  • utiliser la programmation défensive (préconditions, levée d’exceptions) ;
  • manipuler des objets mathématiques (intervalles, fractions) à travers le paradigme objet.

Partie 1 - Intervalles

Le but de cette partie est de construire la classe Intervalle, représentant des intervalles de nombres réels. La classe possède deux attributs borne_inf et borne_sup qui représentent respectivement la borne inférieure et la borne supérieure de l’intervalle. Ces deux bornes seront toujours considérées comme incluses.
Si borne_sup < borne_inf, l’intervalle est considéré comme vide.

  1. Programmer le constructeur de la classe. Il aura deux paramètres a et b correspondant respectivement à
    borne_inf et borne_sup.
  2. Écrire une méthode est_vide qui renvoie True si l’intervalle est vide, False sinon.
  3. Écrire une fonction affichage qui renvoie une représentation sous forme de chaîne de caractère :
    "[borne_inf; borne_sup]". Si l’intervalle est vide, l’affichage sera : "[ ]".
  4. Écrire une méthode longueur qui renvoie l’amplitude de l’intervalle. Si l’intervalle est vide, la méthode renvoie None.
  5. Écrire une méthode contient de paramètre x qui renvoie True si le réel x appartient à l’intervalle, False sinon.
  6. Écrire une méthode equivaut, de paramètre une (autre) instance de la classe Intervalle, qui renvoie True s’il sont égaux, False sinon. Tous les intervalles vides sont considérés comme égaux.
  7. Écrire une méthode inclus, de paramètre une instance de Intervalle, qui renvoie True si le premier intervalle est inclus dans l’autre, intervalle False sinon.
  8. Bonus 1. Écrire une méthode union, de paramètre une instance de la classe Intervalle, qui renvoie une instance de la classe Intervalle dont les bornes correspondent au plus petit intervalle contenant la réunion des deux intervalles.
  9. Bonus 2. Écrire une méthode intersection, de paramètre une instance de la classe Intervalle, qui renvoie une instance de la classe Intervalle dont les bornes correspondent à l’intersection entre les deux intervalles.

Partie 2 - Fractions

Le but de cette partie est de construire la classe Fraction, représentant le quotient de deux nombres relatifs. La classe possèdera deux attributs numerateur et denominateur.

  1. Programmer le constructeur de la classe. Il aura deux paramètres a et b correspondant respectivement à
    numerateur et denominateur. On utilisera une programmation défensive pour assurer les préconditions.

  2. Écrire une fonction affichage qui renvoie une représentation sous forme de chaîne de caractère :

    "numerateur/denominateur".

    Si le dénominateur vaut 1 ou −1, l’affichage ne comportera pas de "/".

  3. Écrire une méthode simplifie qui modifie les attributs numerateur et denominateur pour que la fraction soit irréductible. Si la fraction est négative, c’est le numerateur qui est négatif. Indice : penser à programmer le pgcd dans cette méthode.

  4. Écrire une méthode egal de paramètre un instance de la classe Fraction, qui renvoie True si les deux fractions sont égales, False sinon.

  5. Écrire une méthode produit de paramètre une instance de la classe Fraction, qui renvoie une instance de la classe Fraction correspondant au produit des deux fractions. La nouvelle instance sera irréductible.

  6. Écrire une méthode quotient, de paramètre une instance de la classe Fraction, qui renvoie une instance de la classe Fraction correspondant au quotient des deux fractions. La nouvelle instance sera irréductible.

  7. Écrire une méthode somme de paramètre une instance de la classe Fraction, qui renvoie une instance de la classe Fraction correspondant à la somme des deux fractions. La nouvelle instance sera irréductible.