Enseignement > Programmation orientée objet > Java > Travaux Pratiques > TP n°1 - Composition et héritage  

TP n°1

1. Une classe Rationnel

On désire représenter les nombres rationnels sous la forme d’une fraction de 2 entiers.

On écrira des constructeurs permettant d’instancier des nombre rationnels, de manière à obtenir la forme canonique (c’est à dire sous la forme d’une faction qui ne peut pas être simplifiée)
Pour simplifier la fraction, on divisera les 2 entiers par leur PGCD.

On écrira donc une fonction PGCD utilisant l’algorithme d’Euclide :

Calcul du PGCD de deux entiers naturels m et n tels que m > n.
Itérer les manipulations suivantes :
Effectuer la division euclidienne de m par n. Soit r le reste.
Remplacer m par n et n par r. On a n > r d'après la définition de la division euclidienne.
Le PGCD est le dernier reste non nul. (Si n divise m, le PGCD est n)

On voudra pouvoir récupérer le numérateur ou le dénominateur, afficher un rationnel, tester l'égalité de deux rationnels, d'additionner, de multiplier, de diviser des rationnels, de calculer l'inverse...

Solution

2. Fractions égyptiennes

Les égyptiens ne connaissaient comme rationnels que les inverses des nombres entiers.
Ecrire une classe FractionEgyptienne qui hérite de la classe Rationnel, permettant de manipuler uniquement des inverses de nombres entiers.

En 1201, Fibonacci prouva que tout nombre rationnel pouvait s'écrire sous la forme d'une somme de fractions égyptienne. Remarque : cette décomposition n'est pas unique.
Voici une méthode pour l'obtention de cette somme :
Soit une fraction n/d que l'on cherche à décomposer.
Si n/d est négatif, on traitera son opposé et on changera les signes de la somme.
Si n=1, la décomposition est terminée.
Sinon, chercher la fraction égyptienne 1/a la plus proche de n/d et recommencer avec (n/d-1/a)
Programmer une méthode statique DecomposeEnFractionEgyptienne(Rationnel r) qui ramène sous forme d'une chaine de caractère la décomposition d'un rationnel en une somme de fractions rationnelles.

Solution