précédent | suivant | table des matières | s'évaluer |
|
Une classe est la description de données appelées attributs, et d’opérations appelées méthodes.
Une classe est un modèle de définition pour des objets ayant le même ensemble d’attributs, et le même ensemble d’opérations.
A partir d’une classe on peut créer un ou plusieurs objets par instanciation ; chaque objet est une instance d’une seule classe.
Les caractéristiques de la programmation objet sont :
1 Définition d’une classe :
class X extends Y{ // liste des attributs // liste des méthodes }
Si Y est la classe de base de la hiérarchie des objets Java Object , alors la partie extends est facultative.
exemple :
class A extends Object{ int a ; void f(){ ... } } |
est équivalent à |
class A { int a ; void f(){ ... } } |
Une classe a une visibilité :
2 Création d’instances
Pour créer une instance de la classe A, on écrira :
A a ; // définition de la variable référence a = new A() ; // création de l’instance
La création d’une instance par l’opérateur new se déroule en trois temps :
class Point{ int x ; int y ; . . . } Point a, b ; a = new Point(…) ; b = a; |
La destruction des instances se fait automatiquement par un « thread » le garbage collector qui cherche tous les objets qui ne sont plus référencés et les supprime. Le garbage collector peut être appelé directement par System.gc().
3 Attributs et méthodes
3.1 Attribut :
Un attribut se définit en donnant son type, puis son nom, ( [] pour un tableau ), et éventuellement une partie initialisation.
Un attribut a une visibilité :
A l’intérieur de la définition d’une méthode, l’accès à un attribut se fait soit directement, soit en préfixant l'attribut par this qui est une référence à l’objet pour lequel est appelé la méthode.
A l’extérieur de la définition de la classe, l’accès se fait en écrivant le nom de l’instance, un point le nom de l’attribut ou de la méthode.
class Point{ private int x ; public int y ; void f(){ x = 0; this.y = 1; } } |
En dehors de la définition de la classe :
Point p = new Point();
p.x = 0; // Erreur de compilation : la visibilité de x est privée !
p.y = 1;
|
3.2 Méthode :
Une méthode est définie par :
void m(X ... e){
e est un tableau à une dimension d'éléments de type X
}
Un appel de la méthode m se fait alors de la façon suivante :
m(null); m(); m(x1); m(x1, x2); m(x1, x2, x3) ... ce dernier appel est équivalent à : X[] t={x1, x2, x3}; m(t); ou m(new X[]{x1, x2, x3}); }
Une méthode est caractérisée par sa signature :
Dans le corps d’une méthode, on peut utiliser la référence
this, qui référence l’objet pour lequel la méthode est appelée, cet
usage étant facultatif.
this ne peut pas être modifié.
Une méthode a une visibilité :
A l’extérieur de la définition de la classe, l’accès se fait en écrivant le nom de l’instance, un point le nom de l’attribut ou de la méthode.
4 Constructeurs, finalize
Certaines méthodes sont des constructeurs : ils ont pour nom le nom de la classe, ils ne retournent pas de valeur, et sont appelés au moment de la création d’une instance de la classe.
Si aucun constructeur n’est défini, Java fournit un constructeur sans paramètre appelé constructeur implicite ou par défaut, qui appelle le constructeur implicite de la super classe, les attributs ne sont pas initialisés.
Une classe peut être munie de la méthode finalize(). Cette méthode est appelée par le ramasse miettes ( garbage collector ) qui permet de récupérer l’espace occupé par les différents instances d’un programme qui ne sont plus utilisées.
5 Attributs et méthodes de classe.
Les attributs ou les méthodes d’une classe peuvent être static, et on parle de méthode ou d’attribut de classes, alors que pour les méthodes et attributs non statiques, on parle d’attribut et de méthode d’instances.
Pour les attributs, il n’y a qu’une seule représentation des attributs static et non pas une représentation par instance.
Un attribut, ou une méthode static peut être utilisé indépendamment de l’existence d’instances, en le préfixant par le nom de la classe. Une méthode static ne peut donc accéder qu’à des attributs ou méthodes static.
Exemples :
5.1 Bloc Static.
Une classe ( non imbriquée ) peut être munie de un ou plusieurs blocs static qui sont exécutés au chargement de la classe.
Un bloc static est défini par :
static{ . . . }
Un bloc statique peut servir à l’initialisation des attributs static, ou au chargement de librairies.
6 La classe Object
La classe Object est la classe racine de toute la hiérarchie des objets Java, y compris les tableaux.
protected Object clone() |
Création d’une copie de l’objet.
|
public boolean equals(Object obj) |
Retourne true si un objet est égal à un autre. La méthode doit être :
|
protected void finalize() |
Appelée par le ramasse-miettes, quand il n’y a plus de référence à l’objet. |
public Class getClass() |
Retourne la classe de l’objet. |
public int hashCode() |
Retourne une valeur de hash-code pour l’objet. |
public void notify() |
Réveille un seul thread en attente sur le moniteur de l’objet. |
public void notifyAll() |
Réveille tous les threads en attente sur le moniteur de l’objet. |
public String toString() |
Retourne une représentation en chaîne de l’objet : la définition pour Object est getClass().getName() + '@' + Integer.toHexString(hashCode()). |
public void wait() |
Met le thread courant en attente jusqu’à ce qu’il soit réveillé par un notify() ou un notifyAll() |
public void wait(long timeout) |
|
public void wait(long timeout, int nanos) |