CLASSES ET OBJETS
ISIC-S1 144
Class et objet
Objet
Représente une entité dans le monde réel.
Possède des propriétés et des comportements (des opérations)
Classe
La classe est la description d'un objet.
Un objet est une instance d'une classe la classe décrit l'objet.
Description des propriétés des attributs de la classe
Description des comportements des méthodes de la classe.
Une classe permet d’encapsuler les objets:
les membres public sont vus de l’extérieur
mais les membres private sont cachés
ISIC-S1 145
1
public class Point{
private int x ; // abscisse Classe
private int y ; // ordonnee Attributs
public Point (int abs, int ord){
x = abs ;
y = ord ; Constructeur
}
public int getX(){
return x;
} Accesseurs
public int getY(){
return y;
}
public void setX(int newX){
x = newX; Méthodes
}
public void setY(int newY){ Modificateurs
y = newY;
}
public void deplace (int dx, int dy){
x += dx ;
y += dy ;
}
public void affiche(){
System.out.println ("Mes coordonnees " + x + " " + y);
}
}
Classe
2
Classe: syntaxe
Exemple:
ISIC-S1 148
Modificateurs de classe
Modificateur Rôle
La classe contient une ou des méthodes abstraites, qui n'ont
pas de définition explicite. Une classe déclarée abstract ne
abstract peut pas être instanciée : il faut définir une classe qui hérite de
cette classe et qui implémente les méthodes nécessaires pour
ne plus être abstraite.
La classe ne peut pas être modifiée, sa redéfinition grâce à
final l'héritage est interdite. Les classes déclarées final ne peuvent
donc pas avoir de classes filles.
La classe n'est accessible qu'à partir du fichier où elle est
private
définie.
public La classe est accessible partout
ISIC-S1 149
3
Modificateurs de classe
Les modificateurs abstract et final ainsi que public et private sont
mutuellement exclusifs.
Le mot clé extends permet de spécifier une superclasse éventuelle :
ce mot clé permet de préciser la classe mère dans une relation
d'héritage.
Le mot clé implements permet de spécifier une ou des interfaces que
la classe implémente. Cela permet de récupérer quelques avantages
de l'héritage multiple.
ISIC-S1 150
Encapsulation
L’accès direct aux variables d'un objet est possible en JAVA
MAIS ... n'est pas recommandé car contraire au principe
d'encapsulation
les données d'un objet doivent être privées (c'est à dire protégées et
accessibles (et surtout modifiables) qu'au travers de méthodes prévues à
cet effet).
En JAVA, il est possible lors de leur définition d'agir sur la visibilité
(accessibilité) des membres (attributs et méthodes) d’une classe vis à
vis des autres classes
Plusieurs niveaux de visibilité peuvent être définis en précédant la
déclaration de chaque attribut ou méthode d’un modificateur
(private, public, protected, -)
ISIC-S1 151
4
Les modificateurs d'accès
public protected private
La classe peut être
On ne peut pas La classe n'est accessible
utilisée dans
Classe qualifier une classe qu'à partir du fichier où
n’importe quelle
avec protected. elle est définie.
classe.
Attribut accessible
Attribut accessible Attribut accessible
dans les classes filles
Attributs depuis code de n’im- uniquement dans le code
et classes du même
porte quelle classe. de la classe qui le définit
package.
Méthode pouvant être
Méthode pouvant être
invoquée dans les L'usage de la méthode est
invoquée depuis
Méthode classes filles et classes réservé aux méthodes de
n’importe quelle
du même package. la même classe.
classe.
Sans modificateur, une entité (classe, méthode ou attribut) est visible par
toutes les classes se trouvant dans le même package.
ISIC-S1 152
Objet
5
Objets
ISIC-S1 154
Exemple: Point a;
6
La création d'un objet
ISIC-S1 156
ISIC-S1 157
7
Les références et la comparaison d'objets
ISIC-S1 158
8
Accès aux variables et méthodes d'un objet
<nomObjet>.<méthode>([<paramètres effectifs>])
pour appeler/exécuter une méthode sur l'objet désigné
ISIC-S1 160
ISIC-S1 161
9
Destruction de l’objet
ISIC-S1 162
Le Garbage Collector
ISIC-S1 163
10
La valeur « null »
ISIC-S1 164
11
La création d'objets identiques
ISIC-S1 166
Variable This
ISIC-S1 167
12
Attributs
Attributs
variables de classes
constantes
ISIC-S1 169
13
Variables d’instance
ISIC-S1 170
Variables de classes
14
Constantes
Les constantes sont définies avec le mot clé final : leur valeurs
ne peuvent pas être modifiées une fois qu'elles sont initialisées.
ISIC-S1 172
ISIC-S1 173
15
Méthodes
Méthodes
ISIC-S1 175
16
Les modificateurs de méthode
Modificateur Rôle
public La méthode est accessible aux méthodes des autres classes
private L'usage de la méthode est réservé aux méthodes de la même classe.
La méthode ne peut être invoquée que par les classes filles ou les
protected
classes du même package.
La méthode ne peut être modifiée (redéfinition lors de l'héritage
final
interdite)
La méthode appartient simultanément à tous les objets de la classe
(comme une constante déclarée à l'intérieur de la classe). Il est donc
static
inutile d'instancier la classe pour appeler la méthode. Elle ne peut
utiliser que des variables de classes.
La méthode fait partie d'un thread. Lorsqu'elle est appelée, elle barre
synchronized l'accès à son instance. L'instance est à nouveau libérée à la fin de son
exécution.
native Le code source de la méthode est écrit dans un autre langage.
ISIC-S1 176
Types de Méthodes
ISIC-S1 177
17
Constructeurs
ISIC-S1 178
ISIC-S1 179
18
Constructeurs multiple
ISIC-S1 180
Exemple de constructeurs
public class Point{
private int x ; // abscisse
private int y ; // ordonnee
public Point (int x, int y){
this.x = x ;
this.y = y ;
}
public Point (){
this.x = this.y = 1 ;
}
public Point (Point p){
this.x = p.x ;
this.y = p.y ;
}
………
}
ISIC-S1 181
19
Appel d’un constructeur par un autre
ISIC-S1 182
………
}
ISIC-S1 183
20
Surcharge des méthodes
ISIC-S1 184
ISIC-S1 185
21
Méthodes de classe
ISIC-S1 186
A a = new A();
a.f() ; // reste autorisé, mais déconseillé
ISIC-S1 187
22
Exemple de méthode de classe (2/2)
public class MathUtil {
final static double PI = 3.14 ;
static double getPI() {
return PI;
}
static double carre(double x) {
return x * x;
}
static double demi(double x) {
return x / 2;
}
}
double i = MathUtil.carre(5);
double x = MathUtil.getPI();
ISIC-S1 188
ISIC-S1 189
23
Méthodes accesseurs / modificateurs
public class Point{
private int x ;
private int y ;
public Point (int x, int y){
this.x = x ;
this.y = y;
}
public int getX(){
return x;
}
public int getY(){ Accesseurs
return y;
}
public void setX(int x){
this.x = x;
} Modificateurs
public void setY(int y){
this.y = y;
}
}
ISIC-S1 190
24
Utilisation d’une classe
ISIC-S1 192
ISIC-S1 193
25
Ecriture des classes
ISIC-S1 194
ISIC-S1 195
26
Compilation et exécution
ISIC-S1 196
27
Compilation et exécution
ISIC-S1 198
Le main()
Le point d’entrée pour l’exécution d’une application Java est la méthode
statique main de la classe spécifiée à JVM.
Les différentes classes d’une même application peuvent éventuellement
chacune contenir leur propre méthode main().
Au moment de l’exécution pas d’hésitation quant à la méthode main() à
exécuter: c’est celle de classe indiquée à la JVM.
Classe1.classe
Classe2.classe Java Classe1
Classe3.classe Java Classe3
… main(…)
… main(…)
… main(…)
ISIC-S1 199
28
Exercice 4
ISIC-S1 200
Exercice 4 - suite
ISIC-S1 201
29