Ecole des Mines de Nancy


Clinique Informatique
Séance 5
Remarque: Le but n'est pas de "faire" une liste d'exercice, mais de comprendre ce qui se passe. Les exercices doivent servir de support à la discussion, n'hésitez pas à poser des questions !

Objectifs de la séance: classes, objets, réponse aux questions...



Pour les exercices suivants, on créera un nouveau projet sous Eclipse.


Lors de la séance de clinique précédente, on a fait des rappels de cours.



Exercice 1 - classe << Rationnel >>

Écrivez une classe Rationnel permettant de représenter les rationnels (c'est-à-dire les fractions p/q où p et q sont entiers, q non nul), selon les indications suivantes.

Spécification de la classe:
constructeur: Rationnel(int p, int q)
signatures des méthodes:
int numerateur()   renvoie le numérateur de l'appelant;
int denominateur()   pour le dénominateur;
double toDouble()  pour renvoyer un double approchant l'appelant;
void affiche()  pour afficher sur la console le rationnel sous la forme "p / q";
Rationnel oppose()  renvoie l'opposé de l'appelant;
Rationnel inverse()  renvoie l'inverse de l'appelant;
Rationnel somme(Rationnel r)  renvoie un rationnel égal à la somme du rationnel appelant et de r;
Rationnel produit(Rationnel r)  pour le produit.

Ecrivez une classe de test TestRationnel qui comprendra une méthode main pour effectuer des tests.

Ecrivez une méthode statique de la classe TestRationnel (appelée fonction en cours) qui permet de calculer de manière exacte la moyenne d'un tableau de rationnels. 
Sa signature est:
public static Rationnel moyenne(Rationnel[] tab)

Ajoutez une méthode dans la classe Rationnel qui simplifie les fractions (pensez au calcul du pgcd par l'algorithme d'Euclide).



Exercice 2 - fractions continues, approximation rationnelle du nombre d'or

Connaissez-vous les fractions continues ?
Il se trouve que le nombre d'or (1+sqrt(5))/2 est la limite de la suite définie par récurrence:
u_0=1, et pour tout entier n>=0:  u_{n+1} = 1+1/u_n
A l'aide de la classe Rationnel, calculez et affichez les valeurs successives prises par cette suite.
Vérifiez la convergence.



Exercice 3 - classe << CplxRat >>

De la même façon que pour l'exercice 1, créez une classe CplxRat qui permet de représenter les complexes rationnels, i.e. les nombres complexes de la formes p/q + i r/t (avec p,q,r,t entiers). Bien sûr il faudra utiliser la classe Rationnel de l'exercice 1.
On aura des méthodes pour additionner, inverser, multiplier de tels complexes. Ces méthodes appelleront les méthodes déjà écrites pour la classe Rationnel.



Contact:
Frédéric Sur, ATER au département d'informatique.