Sunteți pe pagina 1din 5

Fiches JAVA

Classes et objets

Les elements de base en java sont des objets. On peut avoir differents types
dobjets en Java. Le type dun objet est appele sa classe. Chaque fichier java
decrit une classe. Une classe dobjets decrit en particulier quels sont les differents
elements qui caracterisent un objet de cette classe (attributs) et quelles sont les
fonctions (methodes) qui permettent de le manipuler.
Par exemple, les objets de type Robot (TP 2 et 5) etaient decrits par leurs
positions (x et y, deux entiers) et leurs noms (une chane de caract`ere). On
pouvait les manipuler en leur demandant de monter, descendre aller a` gauche
ou a` droite. La classe Robot est decrite de la mani`ere suivante :
class Robot {
int x;
int y;
String nom;
Robot(int X, int Y, int NOM)
this.x = X;
this.y = Y;
this.nom = NOM;
}
void
void
void
void

haut()
bas()
gauche()
droite()

{
{
{
{

this.y
this.y
this.x
this.x

=
=
=
=

this.y-1;
this.y+1;
this.x-1;
this.x+1;

}
}
}
}

}
Une methode particuli`ere est ici le constructeur. Cest une fonction qui na
pas de type de retour et qui a le meme nom que la classe (ici Robot(int X,
int Y, String NOM) ). Elle est appelee lorsquun objet de type Robot est cree.
Elle sert a` initialiser les attributs du robot.
Notez que le mot clef this, utilise dans une classe est une reference a` lobjet
courant : comprendre this comme moi. Par exemple quand un robot va a`
droite, son x augmente (this.x = this.x+1).

Cr
eation et utilisation dun objet

Pour creer un Robot dans notre programme, on utilisera le code suivant :


Robot r1 = new Robot(2, 5, "Bob");
Robot r2 = new Robot(3, 2, "R2D2");
1

On cree ici deux objets de types Robot (r1 et r2), ils disposeront alors tous
deux dun attribut x, dun attribut y, dun nom, et des methodes haut, bas,
gauche et droite. Par exemple, le code suivant permet de demander au robot r1
de monter et au robot r2 de descendre. :
r1.haut();
r2.bas();

Private/Public

Les attributs et les methodes peuvent etre declares private ou public. Un attribut ou une methode publique est accessible de partout. Un attribut ou une
methode privee ne peut etre modifie que dans le fichier de la classe. Par exemple,
dans le fichier Machin.java :
Class Machin {
...
public int a1;
private int a2;
...
public int f1() {
...
return a2; /* autoris
e */
}
private void f2() {
...
a1 = 0; /* autoris
e */
a2 = 1; /* autoris
e */
...
}
}
Dans le fichier Truc.java :
Class Truc {
...
public void bidule()
{
Machin m;
...
m.a1 = 0; /* autoris
e */
m.a2 = 1; /* interdit ! a2 est priv
e */
m.f1(); /* autoris
e */
m.f2(); /* interdit ! f2() est priv
e */
}
...
}
2

Le mot clef private sert surtout pour proteger certains attributs dun
objet.

static

Par defaut, les attributs et methodes dun objet lui sont propres. On parle
dattributs et de methodes dinstance : chaque instance de la classe (chaque
objet) a son propre jeu dattributs et son propre jeu de methodes (dans lexemple
plus haut r1.bas() et r2.bas() sont deux methodes distinctes). On peut desirer
avoir des attributs ou des methodes qui concernent la classe dans son entier.
On parle dattribut ou de methode de classes et on prec`ede leur definition. Par
exemple :
class Robot {
static private int nb_robots;
...
static int combien_de_robots() {
...
}

return nb_robots;

Le nombre de robots nest pas une caracteristique dun robot particulier mais
de lensemble des robots, cest donc un attribut de classe ce qui justifie lemploi
du mot clef static. Meme chose pour une fonction qui permet de connatre le
nombre de robots.
Pour acceder a` ces attributs ou methodes, on doit les preceder du nom de la
classe (Robot.nb robots; ou Robot.combien de robots() dans lexemple).
Notons que la methode main est toujours une methode statique : elle indique
le classe peut etre executee (on peut faire un run).

h
eritage

En Java, une classe peut heriter dune autre. Par exemple :


public class Robot2 extends Robot {
public Robot2() {
this.x = 0;
this.y = 0;
this.nom = "Robot2";
}
public void haut() { this.x = this.x + 2;
}

La classe Robot2 herite de la classe Robot. Elle recup`ere tous les attributs et
toutes les methodes de Robot (`
a lexception du constructeur quil faut recrire).
3

Cest un peu comme si on avait fait un copier-coller de tous les attributs


et methodes de Robot. On peut tout de meme remplacer certaines methodes.
Dans lexemple, la classe Robot2 poss`ede les methodes bas(), gauche() et droite
de Robot, par contre, la methode haut() a ete remplacee (pour avancer de deux
pas au lieu dun). Voir lexemple suivant :
...
Robot2 r2d2 = new Robot2();
...
r2d2.haut(); /* le robot r2d2 avance de 2 pas :
* cest la m
ethode de Robot2 qui est appel
ee
*/
r2d2.bas(); /* il descend dun pas :
* la m
ethode bas() de Robot2 est celle de Robot
*/
On notera quune classe ne peut heriter que dUNE seule classe en Java.

Interface

Une interface est un ensemble de fonctions. Cest en quelque sorte un contrat


que dois remplir une classe. Une interface se note ainsi :
public interface Lutin {
public void avance();
public int getX();
}
On a donc juste une liste de methodes sans leur code (on parle de prototype
de methode). Pour indiquer quune classe suit une interface (ou implemente
linterface), on utilise le mot cle implements. Les fonctions de linterface doivent
alors exister dans la classe. Par exemple :
/* la classe Robot3 h
erite de Robot et impl
emente linterface Lutin */
public class Robot3 extends Robot implements Lutin {
/* le constructeur */
public Robot3() { ...
}
...
/* la fonction avance de linterface */
public void avance() { haut(); }
/* la fonction getX de linterface */
public int getX() { return this.x; }
}

Une interface peut etre utilisee comme type dans les param`etres dune methode.
Par exemple :
public void bouge(Lutin l) {
...
}
Cette fonction prend en entree un objet l quelconque dont on sait juste quil respecte linterface (ici, cela signifie quil poss`ede les fonctions getX() et avance()).
Ce peut etre un objet dont la classe est Robot3 ou nimporte quelle classe
qui implemente linterface Lutin. On notera par ailleurs quune classe peut
implementer plusieurs interfaces.

Javadoc

Pour utiliser loutil de generation automatique de documentation Javadoc, deux


choses sont a` realiser :
1. commentez les attributs et les methodes. Les commentaires ont le forme
suivante, pour les attributs :
/**
* description
*/
int x;
(notez bien la double etoile en debut de commentaire), et pour les methodes :
/**
* description
*
* @param x description de x
* @param y description de y
* @return description de ce qui est renvoy
e par la fonction.
*/
int machin(int x, int y)
On commente ainsi tous les param`etres de la methode, ainsi que son
eventuel resultat (si la fonction est de type void machin(...), pas besoin
de @return evidemment).
2. Appelez javadoc avec comme argument les fichiers java. Par exemple :
javadoc Robot.java
pour le fichier Robot.java, ou plus directement, pour generer une documentation pour tous vos fichiers :
javadoc *.java

S-ar putea să vă placă și