Académique Documents
Professionnel Documents
Culture Documents
POOChapi 4
POOChapi 4
2
CHAPITRE4
3
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
4
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
5
Une classe permet de modéliser des objets du monde Réel.
Une classe permet de présenter des objets qui sont conceptuellement similaires.
Les objets sont des instances de classe.
Le mot class doit être écrit entièrement en minuscule
6
Syntaxe:
7
Exemple
class Point{
int x ; // abscisse du point Attributs
int y ; // ordonnée du point
void translater()
{
x=x+4;
y=y+4;
} méthodes
void afficher()
{
System.out.println("x="+x+" y="+y);
}
} 8
détermine l’accessibilité de la classe par rapport
Syntaxe:
aux autres classes
9
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
10
Public package
pa
pa pa
11
Par défaut: package
Si aucun modificateur d'accès n'est déclaré, la classe sera
class
accessible par l'ensemble des classes et sous-classes situées pa
point
} pa pa pa
12
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
13
Déclaration
La déclaration d’une instance d’une classe se fait de la façon
similaire à la déclaration d’une variable:
<class_name> nom_instance;
Exemple:
Point p;
Déclare une instance p de la classe Point
14
Instanciation:
L’opérateur new instancie une classe par:
Allocation de mémoire pour le nouvel objet
Retour d’ une référence à cette mémoire.
15
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
16
Définition
Un constructeur est une méthode qui porte le même nom que la classe sans
valeur de retour et qui peut disposer d’arguements.
Le constructeur permet de:
allouer de la mémoire pour l’objet
initialiser les attributs de l’objet
17
Exemple :
public class Point {
int x; // x: abscisse du point
int y; // y: ordonnée du point
public Point(int a, int b){
x=a; y=b;}
public double distance(Point p){
return(Math.sqrt((Math.pow(x-p.x,2)+Math.pow(y-p.y, 2))));}
18
Suite Exemple :
19
Si aucun constructeur n’est défini, java offre pour chaque classe un
constructeur par défaut, implicite et sans arguments qui instancie
par défaut les attributs:
entiers et réels à 0
Objets à null
boolean à false
20
Exemple :
public class Point {
int x; // x: abscisse du point
int y; // y: ordonnée du point
public Point(int a, int b){
x=a; y=b;}
public double distance(Point p){
return(Math.sqrt(Math.pow(x-p.x,2)+Math.pow(y-p.y, 2))));}
21
Suite Exemple :
22
Une classe peut avoir plusieurs constructeurs qui diffèrent par le nombre et la nature de
leurs paramètres: possibilité d'initialiser un objet de plusieurs manières différentes
Exemple:
public class Point {
int x; // x: abscisse du point
int y; // y: ordonnée du point
public Point(int a, int b){x=a; y=b;}
public Point( ){} deux constructeurs
public double distance(Point p){
return(Math.sqrt((Math.pow(x-p.x,2)+Math.pow(y-p.y,2))));}
24
Le mot clé this représente une référence sur l’objet courant (celui qui est entrain
d’exécuter la méthode contenant le this).
La référence this peut être utile :
25
Exemple
class Date {
int jour=1, mois=1, an=1990;
Date(){
an=2000;} // peut s’écrire : this.an=2000
Date(int an){
this.an=an;} // le paramètre en cache l’attribut an
Date(int an, int mois, int jour){
this(an); // Appel du deuxième constructeur
this.jour=jour;
this.mois=mois;
}
}
26
Le mot clé null permet de représenter la référence qui ne représente rien.
On peut assigner cette valeur a n’importe quelle variable ou attribut contenant une
référence.
C’est aussi la valeur par défaut d’initialisation des attributs représentant des références.
class Test{
Voiture v1; //initialisation a null par défault.
void methode(){
…
if (v1==null) v1 = new Voiture();
…
}
}
27
Les variables de type objet que l'on déclare ne contiennent pas un objet mais une
référence vers cet objet.
Création d’une copie d'un objet : avec l’opérateur "="
28
Création d’une copie d'un objet : la méthode clone() :
Cette méthode permet de créer un deuxième objet indépendant mais identique
à l'original.
Cette méthode est héritée de la classe Object qui est la classe mère de toutes
les classes en Java.
29
L'opérateur "==" compare les références de deux objets.
Deux objets avec des propriétés identiques sont deux objets distincts.
la méthode equals (Object o) héritée de la classe Object peut être redéfinie pour
comparer l'égalité des variables de deux instances.
Par défaut (sans redéfinition), la méthode renvoie ‘’true’’ si les 2 objets ont les mêmes
références
Personne P1 = new Personne ("Foulen","Ben Foulen", 25, 1.85 );
Personne P2 = new Personne ("Foulen","Ben Foulen", 25, 1.85 );
if (P1 == P1) { ... } // vrai
if (P1 == P2) { ... } // faux
if (P1.equals(P2)) { ... } // faux si pas de redéfinition
30
gc: Le Garbage Collector ou ramasse-miettes est chargé de détecter les objets
devenus inaccessibles
31
En A, ni 1 ni 2 ne
Compte Tab [ ] = new Compte[3];// 1 peuvent être GC, car
Compte c1 = new Compte( ); // 2 Tab et c1 sont toujours
référencés
Tab[0] = c1;
System.gc( ); //A
Tab[1] = new Compte( ) ;//3 En B, 1 peut être libéré,
ainsi que 3 par voie de
Tab=null; conséquence.
System.gc(); //B
c1=null;
En C, 1, 2 et 3 peuvent
System.gc(); //C être libéré.
32
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
33
Définition
On désigne par membres d’instance les attributs et les méthodes
non statiques qui ne sont accessibles qu’à partir d’une instance de
classe (objet).
L’accès aux membres nécessite l’instanciation de la classe les
contenant.
La valeur d’un attribut d’instance est différente pour chaque
instance
34
Exemple :
35
l’accès aux membres se fait par un « . » précédé par le nom de l’instance
36
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
37
Un membre (attribut ou méthode) déclaré avec le modificateur static est un
membre de classe.
Les attributs statiques sont communs à toutes les instances de classe
Les attributs statiques sont initialisés par défaut à 0 pour les nombres entier et
réels, à false pour les booléens et à null pour les références.
Une méthode de classe ne peut utiliser que les attributs et les méthodes statiques
et ne peut pas faire référence à l'objet courant ( this)
Il n’est pas nécessaire d’instancier une classe pour accéder à un des membres
statiques. On peut y accéder sans création d’instance de la classe.
NomClasse.membre
38
Exemple
public class Personne{
String Nom;
static int nbPersonne;
public Personne(String n){Nom=n; NbPersonne ++;}
public void afficher(){
System.out.println("Je m’appelle "+ Nom);
}
}
41
Les classes peuvent être organisées dans une structure de paquetage
package (java,…)
namespace (c++,…)
42
43
44
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
45
public : Un membre public est visible par les membres qui sont hors de sa portée,
tant que la classe parent est visible.
protected : Un membre protégé peut être accédé par les autres membres de sa
classe et par les membres des classes du même paquet et aussi par des classes
filles (qui héritent de la classe parente) hors paquet.
Si aucun modificateur d’accès n’est déclaré, le membre est disponible pour toutes
les classes se trouvant dans le paquet parent, mais pas à l’extérieur du paquet.
46
Modificateur classe package Sous-classe Autres
packages
public oui oui oui oui
protected oui oui oui non
oui oui non non
private oui non non non
47
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
48
Plusieurs méthodes peuvent porter le même nom dans une même classe
Les méthodes doivent différer par le nombre des arguments, ou par le type des
arguments
49
Plusieurs méthodes peuvent porter le même nom dans une même classe
Les méthodes doivent différer par le nombre des arguments, ou par le type des
arguments
50
class Rectangle {
void doubler() {
largeur*=2;
hauteur*=2; }
void doubler(boolean l, boolean h){
if (l) largeur*=2;
if (h) hauteur*=2;}
}
class TestRecDisk{
public static void main (String arg[]) {
r.doubler(); // largeur et hauteur
r.doubler(false, true); // uniquement la //hauteur
}
51
Exercice:
1. Définissez une classe Point qui surcharge le constructeur comme suit:
créer un objet Point dont les coordonnées sont égaux à 0.
créer un objet Point dont les coordonnées sont initialisés à un entier donné en
paramètres.
créer un objet Point dont les coordonnées sont initialisés avec deux valeurs données en
paramètres
créer un objet Point dont les coordonnées sont identiques à ceux d’un autre objet Point
donné en paramètres.
2. Créer la classe TestPoint qui permet de tester la classe Point.
52
PLAN DU CHAPITRE 4
1. Classe
2. Modificateurs de classe
3. Objet
4. Constructeurs
5. Membres d’instances
6. Membres de classe
7. Le packetage
8. Les modes d’accès
9. La surcharge
10. Les accesseurs et les mutateurs
53
Les accesseurs : méthodes pour récupérer la valeur d'une variable (« getters »)
Nom de la méthode commence par get
Retourne la valeur d'une variable d'instances ou de classe
Type du retour = type de la variable accédée
54
public class Point{
private double x ;
private double y ; //Variables d'instance
public Point(){ this(0,0) ; } //Constructeur par défaut
public Point(double x, double y){ this.setX(x); this.setY(y);} //Constructeur avec arguments
public double getX(){ return this.x ; }
public void setX(double x){ this.x = x ; } //Accesseurs à la variable x.
public double getY(){ return this.y ; }
public void setY(double y){ this.y = y ; } //Accesseurs à la variable y.
55
Merci pour votre attention !