MIM1
TD 2 de POOGL
Découverte des Objets

Vincent BOUDET
Bureau 343 (84-70)
email vboudet@ens-lyon.fr

23 Janvier 2000

A   Avant l' Objet : les méthodes statiques

Question A.1   À partir du canevas suivant, écrire un programme de résolution d' équation du second degré.

/** Résolution d' une équation du second degré par des 
    méthodes statiques 
    @author Vous
    @version 1
*/
class EquationSta {
  /** Méthode principale, 
      les coefficients seront passés en paramètres 
   */
  public static void main (String[] args) {
    //Initialisation des coefficients
    a=. . .
    b=. . .
    c=. . .
    //Calcul des racines
    x1=racine1(a,b,c);
    x2=racine2(a,b,c);
    //Impression des résultats
  }
  /** calcul de la première racine 
    @param coeffa Coefficient du terme en x*x
    @param coeffb Coefficient du terme en x
    @param coeffc Coefficient du terme constant
  */
  static double racine1(double coeffa, double coeffb, double coeffc) {
    . . .
  }
  /** calcul de la seconde racine
    @param coeffa Coefficient du terme en x*x
    @param coeffb Coefficient du terme en x
    @param coeffc Coefficient du terme constant
  */
  static double racine2(double coeffa, double coeffb, double coeffc) {
    . . .
  }
}
Les fonctions mathématiques classsiques se trouvent dans la classe Math (plus précisément java.lang.Math). On trouve dans la classe Math les fonctions acos, asin, atan, cos, sin, tan, exp, log, pow, sqrt, abs, min, max, round, rand. Pour utiliser ces fonctions, il faut les préfixer par «Math», par exemple Math.sqrt(discriminant).

B   Résolution d' une équation du second degré : version objet

La méthode qui vient d'être utilisé pour calculer les racines d' une équation du second degré est inspiré de la façon de programmer dans des langages classiques comme le C. Dans ces langages, il est possible de transmettre des arguments par référence. Java, qui est résolument un langage de programmation objet, n' a pas cette capacité. Il est, par exemple, maladroit d' utiliser deux fonctions pour calculer les racines. Il est beaucoup plus efficace et élégant d' utiliser des objets pour faire ce calcul.

On souhaite avoir une classe Equation qu' on pourrait utiliser dans le programme suivant.

/** Programme de résolution d' une équation du second degré.
    Utilisation dún objet de type Equation
*/
public class EquationTest {
  /** Méthode principale */
  public static void main (String[] args) {
    Equation uneEquation;  // Déclaration de l' objet uneEquation
    uneEquation = new Equation(); //Création de l' objet uneEquation
    uneEquation.coeffX2 = 1;
    uneEquation.coeffX1 = 5;
    uneEquation.coeffX0 = 1;
    uneEquation.resolution();
    System.out.println(``Racine no 1 `` + uneEquation.racine1);
    System.out.println(``Racine no 2 `` + uneEquation.racine2);
  }
}
Question B.1   Écrivez la classe Equation qui doit avoir comme champs coeffX2, coeffX1, coeffX0, racine1, racine2 et comme méthode resolution().

C   Résolution d' une équation du second degré : version objet avec constructeur

Le langage Java fournit un constructeur implicite, il est toutefois possible de définir un ou plusieurs constructeurs.

Un constructeur porte obligatoirement le nom de la calsse qu' il permet d' instancier, il n' a pas de type. Le différents constructeurs se distinguent par leur signatures. La signature d' un constructeur est constitué du nom du constructeur suivi de la liste ordonée des types de ses arguments. Pour coexister dans une même classe, deux constructeurs doivent avoir des signatures différentes. Dès qu' un constructeur est défini, le constructeur vide implicite disparait.

Question C.1   Définir une classe EquationCons (équation avec constructeur) qui contient les constructeurs suivant :
Question C.2   Modifiez EquationTest de manière à tester votre classe.

D   À vous...

D.1   Des complexes

Question D.1   Créer la classe Complexe dont la structure est donnée dans le tableau suivant :
Nature Nom Signification
Classe Complexe  
Champ re partie réelle
Champ im partie imaginaire
Constructeur Complexe() constructeur vide
Constructeur Complexe(double x, double y) constructeur normal
Constructeur Complexe(double x) constructeur pour nombre réel
Méthode Affiche() affiche le nombre complexe

Créez aussi une classe ComplexeTest pour vous assurer du bon fonctionnement de votre programme.

Question D.2   Ajouter à la classe précédente les deux méthodes suivantes :

Question D.3   Ajoutez maintenant les méthodes moins, mult, inv, div, affiche selon le modèle de la méthode plus précédente.

D.2   Des vecteurs

Question D.4   Créez une classe de vecteurs dans un espace à 3 dimensions réelles. Il faut un constructeur à base de réels et un à base d' un autre vecteur. Ajoutez aussi les méthodes plus, moins, mult, scal, vect, afficher.

This document was translated from LATEX by HEVEA.