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 :
-
EquationCons(double a, double b, double c)
- EquationCons(int a, int b, int c)
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 :
-
Complexe plus(Complexe z) : la méthode retourne un nouveau nombre
complexe, résultat de l' addition de l' instance courante et de l' argument z.
- void plusModif(Complexe z) : à la différence de la méthode plus(), le
résultat n' est pas retourné par la méthode mais placé dans l' instance courante.
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.