fopen
, printf
…), jQuery est une bibliotèque de Web 2.0….h
standard du C (stdio.h
, stdlib.h
…)En Java, l’API est décrite par:
Avec les commentaires Javadoc.
L’API réalise l’interface entre le programme que vous écrivez et la bibliothèque utilisée :
Contrat sous-jacent :
Si l’on utilise l’API conformément à la documentation, le comportement sera celui indiqué dans la documentation
Conséquences :
Exemple : JOptionPane
Un point technique : il est possible de surcharger les méthodes et les constructeurs en Java.
Surcharger une méthode signifie avoir plusieurs méthodes avec :
Surcharger un constructeur signifie avoir plusieurs constructeurs avec :
this(arg1,arg2)
Exemple :
public class Vecteur {
private double r;
private double theta;
public Vecteur(double x,double y) {
this(x,y,false);
}
public Vecteur(double a,double b,boolean polar) {
if (polar) {
r=a;
theta=b;
} else {
r=Math.sqrt(a*a+b*b);
theta=Math.atan2(b, a);
}
}
public double projectionX() {
return r*Math.cos(theta);
}
public double projectionY() {
return r*Math.sin(theta);
}
public double module() {
return r;
}
public double argument() {
return theta;
}
public void echelle(double d) {
r=r*d;
}
public void echelle(double dx, double dy) {
double x = projectionX()*dx;
double y= projectionY()*dy;
r=Math.sqrt(x*x+y*y);
theta=Math.atan2(y,x);
}
}
On obtient :
public class Vecteur {
private double r;
private double theta;
private Vecteur(double r, double theta) {
this.r = r;
this.theta = theta;
}
public static Vecteur creerCartesien(double x,double y) {
return new Vecteur(Math.sqrt(x*x+y*y),Math.atan2(y, x));
}
public static Vecteur creerPolaire(double r,double theta) {
return new Vecteur(r,theta);
}
public double projectionX() {
return r*Math.cos(theta);
}
public double projectionY() {
return r*Math.sin(theta);
}
public double module() {
return r;
}
public double argument() {
return theta;
}
public void echelle(double d) {
r=r*d;
}
public void echelle(double dx, double dy) {
double x = projectionX()*dx;
double y= projectionY()*dy;
r=Math.sqrt(x*x+y*y);
theta=Math.atan2(y,x);
}
}
printf
)Exemple :
public class OutilsVecteur {
public static Vecteur somme(Vecteur u, Vecteur v, Vecteur... vecteurs) {
double x=u.projectionX()+v.projectionX();
double y=u.projectionY()+v.projectionY();
for(int i=0;i<vecteurs.length;i=i+1) {
x=x+vecteurs[i].projectionX();
y=y+vecteurs[i].projectionY();
}
return Vecteur.creerCartesien(x,y);
}
}
Les méthodes suchargés pouvant être appelées l’un à la place de l’autre doivent avoir le même comportement.
Exemple :
void f(int x)
void f(double x)
void f(int... x)
Afin de créer la documentation de son programme ou de sa bibliothèque, on ajouter des commentaires JavaDoc.
Exemple :
/**
* Cette classe représente un vecteur en dimension 2.
*/
public class Vecteur {
private double r;
private double theta;
private Vecteur(double r, double theta) {
this.r = r;
this.theta = theta;
}
/**
* Retourne un vecteur nouvellement alloué dont les coordonnées cartésiennes sont passées en argument.
* @param x la coordonnée x du vecteur.
* @param y la coordonnée y du vecteur.
* @return le vecteur nouvellement alloué.
* @see #creerPolaire(double, double)
*/
public static Vecteur creerCartesien(double x,double y) {
return new Vecteur(Math.sqrt(x*x+y*y),Math.atan2(y, x));
}
/**
* Retourne un vecteur nouvellement alloué dont les coordonnées polaires sont passées en argument.
* @param r la coordonnée r du vecteur.
* @param theta la coordonnée theta du vecteur.
* @return le vecteur nouvellement alloué.
* @see #creerCartesien(double, double)
*/
public static Vecteur creerPolaire(double r,double theta) {
return new Vecteur(r,theta);
}
/**
* Retourne la projection du vecteur sur l'axe X.
* @return la projection du vecteur sur l'axe X.
*/
public double projectionX() {
return r*Math.cos(theta);
}
/**
* Retourne la projection du vecteur sur l'axe Y.
* @return la projection du vecteur sur l'axe Y.
*/
public double projectionY() {
return r*Math.sin(theta);
}
/**
* Retourne le module du vecteur.
* @return le module du vecteur.
*/
public double module() {
return r;
}
/**
* Retourne l'argument du vecteur.
*
* L'argument du vecteur est l'angle en radians formé par l'axe des X et le vecteur.
* @return l'argument du vecteur.
*/
public double argument() {
return theta;
}
/**
* Modifie {@code ce} vecteur en l'allongant d'un facteur d.
* @param d le facteur d'allongement
*/
public void echelle(double d) {
r=r*d;
}
/**
* Modifie {@code ce} vecteur en l'allongant d'un facteur dx suivant l'axe X et
* d'un facteur dy suivant l'axe Y
* @param dx le facteur d'allongement suivant l'axe X
* @param dy le facteur d'allongement suivant l'axe Y
*/
public void echelle(double dx, double dy) {
double x = projectionX()*dx;
double y= projectionY()*dy;
r=Math.sqrt(x*x+y*y);
theta=Math.atan2(y,x);
}
}
La javadoc obtenue est disponible à cet endroit. Notez qu’une fois en anglais le ce
prend un sens différent.
En Java, la documentation d’une API de bibloithèque est donné par le site généré par l’utilitaire Javadoc.
On peut trouver l’API du la bilbiothèque standard de Java à cette adresse.