![Page 1: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/1.jpg)
Java
Les Classes et les Objets Ahcène Bounceur
![Page 2: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/2.jpg)
La Programmation Orientée Objet
Elle se fonde sur la programmation
structurée
Elle contribue à la fiabilité des logiciels
Elle facilite la réutilisation de code existant
Elle introduit de nouveaux concepts :
◦ Objets
◦ Encapsulation
◦ Classe
◦ Héritage
![Page 3: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/3.jpg)
But de ce cours
Aborder la notion de classe dans toute sa généralité, telle qu'elle apparaît dans les concepts de P.O.O
Définir une classe et l’utiliser
◦ Utiliser une classe signifie instancier des objets du type correspondant
◦ Introduire la notion de référence d'un objet
Étudier l'importante notion de constructeur
◦ C'est une méthode appelée automatiquement lors de la création d'un objet
Examiner comment se présente l'affectation d'objets
◦ La comparer à celle des variables de type primitif
![Page 4: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/4.jpg)
But de ce cours
Préciser les propriétés des méthodes (arguments, variables, etc.)
Aborder les possibilités de la surdéfinition (surcharge)
Présenter les modes de transmission (par valeur et par référence)
Étudier les champs (attributs) et les méthodes de classes
Présenter la notion de classe interne
Présenter la notion de paquetage (package)
![Page 5: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/5.jpg)
La notion de classe
Définir une classe
◦ Prenons comme exemple d'objet un point
◦ Voici comment définir une classe Point
public class Point {
}
![Page 6: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/6.jpg)
La notion de classe
Définir le contenu d'une classe :
◦ Les champs (ou les attributs)
◦ Les méthodes
![Page 7: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/7.jpg)
La notion de classe
Définition des attributs :
◦ Pour le cas du point, les attributs sont son
absicsse et son ordonnée
public class Point {
private int x ; // abscisse
private int y ; // ordonnee
}
![Page 8: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/8.jpg)
La notion de classe
Définition des méthodes :
◦ Supposons que nous souhaition disposer des
méthodes suivants :
initialiser : pour initialiser la position du point
deplacer : pour déplacer les point
afficher : pour afficher le point
![Page 9: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/9.jpg)
La notion de classe
Définition des attributs :
◦ La méthode initialiser public class Point {
private int x ; // abscisse
private int y ; // ordonnee
public void initialiser(int abs, int ord) {
x = abs ;
y = ord ;
}
}
![Page 10: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/10.jpg)
La notion de classe
Définition des attributs :
◦ Les méthodes deplacer et afficher
public class Point {
private int x ; // abscisse
private int y ; // ordonnee
public void initialiser(int abs, int ord) {
x = abs ;
y = ord ;
}
public void deplacer(int dx, int dy) {
x += dx ;
y += dy ;
}
public void afficher(int abs, int ord) {
System.out.println("Point ( "+x+", "+y+")" ) ;
}
}
![Page 11: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/11.jpg)
La notion de classe
La classe Point va permettre d'instancier des
objets de type Point et leur appliquer à
vonlonter les méthode publiques
Instancier = création en mémoire
Remarque :
◦ Toutes les instructions java appartiennent à une
méthode
◦ Pour tester la classe Point, on créera une autre
classe contenant la méthode main
![Page 12: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/12.jpg)
Utiliser la classe Point
Déclaration d'une variable de type Point
Point p ;
◦ à ce stade, p n'existe pas dans la mémoire. C'est
juste une déclaration, contrairement à int x; où x
est tout de suite créé en mémoire
Pour instancer un objet de type Point, on
utilisera le mot clé new
p = new Point() ;
![Page 13: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/13.jpg)
Utiliser la classe Point
Cette situation peut être schématisée
comme suit :
?
? a
x
y
![Page 14: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/14.jpg)
Utiliser la classe Point
p.initialiser(3, 5)
3
5 a
x
y
![Page 15: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/15.jpg)
Utiliser la classe Point
Exemple
public class TestPoint {
public void main(String [] args) {
Point p ;
p = new Point() ;
p.initialiser(3, 5) ;
p.afficher() ;
p.deplacer(2, 0) ;
p.afficher() ;
Point b = new Point() ;
b.initialiser(6, 8) ;
b.afficher() ;
}
} Exécution : Point (3, 5)
Point (5, 5)
Point (6, 8)
![Page 16: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/16.jpg)
Utiliser la classe Point
Attention !
public class TestPoint {
public void main(String [] args) {
Point p ;
p = new Point() ;
p.x = 4 ;
}
}
Erreur : car l’attribut x est privé (précédé par private)
![Page 17: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/17.jpg)
Programme à plusieurs classes
Il faut créer un fichier java pour chaque
classe
L'extension d'un fichier java et .java
Le nom du fichier doit être le même que
celui de la classe
◦ Pour la classe Point, le nom du fichier
correspondant est : Point.java
◦ Sa compilation donner le fichier : Point.class
![Page 18: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/18.jpg)
Programme à plusieurs classes
◦ Pour la classe TestPoint, le nom du fichier
correspondant est : TestPoint.java
◦ Sa compilation donner le fichier : TestPoint.class
L'execution de ce programme se fait comme
suit : javac Point.java
javac TestPoint.java
java TestPoint
javac : pour compiler
java : pour lancer l'application
![Page 19: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/19.jpg)
Programme à plusieurs classes
Tout dans un même fichier c'est possible public class TestPoint {
public static void main(String [] args) {
Point p = new Point();
p.initialiser(10, 20);
p.afficher();
}
}
class Point {
private int x ;
private int y ;
public void initialiser(int abs, int ord) {
x = abs ;
y = ord ;
}
public void deplacer(int dx, int dy) {
x += dx ;
y += dy ;
}
public void afficher() {
System.out.println("Point ("+x+", "+y+")");
}
}
Attention ! Ne pas mettre public ici
![Page 20: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/20.jpg)
La notion de constructeur
Un constructeur est une méthode qui n'a pas de valeur de retour et qui porte le même nom que la classe
Il peut être utilisé avec ou sans arguments
Permet d'initialiser automatiquement un objet au moment de sa création
L'initialisation ne se limite pas à la mise en place des valeurs initiales : on peut effectuer n'importe quelle action utile au bon fonctionnement de l'objet
![Page 21: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/21.jpg)
La notion de constructeur
Exemple de la classe Point :
◦ Supposons que nous voulons initialiser le point au
moment de sa création. C'est-à-dire, appeler
automatiquement la méthode initialiser au
moment de l'instanciation d'un point
Solutions :
On crée un constructeur qui fait appel à la méthode initialiser
On remplace la méthode initialiser par un constructeur
![Page 22: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/22.jpg)
La notion de constructeur
Constructeur faisant appel à une méthode public class Point {
private int x ; // abscisse
private int y ; // ordonnee
public Point(int a, int o) {
initialiser(a, o) ;
}
public void initialiser(int abs, int ord) {
x = abs ;
y = ord ;
}
public void deplacer(int dx, int dy) {
x += dx ;
y += dy ;
}
public void afficher(int abs, int ord) {
System.out.println("Point ( "+x+", "+y+")" ) ;
}
}
![Page 23: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/23.jpg)
La notion de constructeur
Constructeur avec initialisation public class Point {
private int x ; // abscisse
private int y ; // ordonnee
public Point(int abs, int ord) {
x = abs ;
y = ord ;
}
public void deplacer(int dx, int dy) {
x += dx ;
y += dy ;
}
public void afficher(int abs, int ord) {
System.out.println("Point ( "+x+", "+y+")" ) ;
}
}
![Page 24: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/24.jpg)
La notion de constructeur
Constructeur : Rappel
public class Point {
private int x ; // abscisse
private int y ; // ordonnee
public Point(int abs, int ord) {
x = abs ;
y = ord ;
}
public void deplacer(int dx, int dy) {
x += dx ;
y += dy ;
}
public void afficher(int abs, int ord) {
System.out.println("Point ( "+x+", "+y+")" ) ;
}
}
Un constructeur est une méthode qui n'a pas de valeur de retour
(il n’est précédé ni par void, ni int, float, …)
![Page 25: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/25.jpg)
La notion de constructeur
Constructeur : Rappel
public class Point {
private int x ; // abscisse
private int y ; // ordonnee
public Point(int abs, int ord) {
x = abs ;
y = ord ;
}
public void deplacer(int dx, int dy) {
x += dx ;
y += dy ;
}
public void afficher(int abs, int ord) {
System.out.println("Point ( "+x+", "+y+")" ) ;
}
}
Un constructeur est une méthode qui porte le même nom que la
classe
![Page 26: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/26.jpg)
Construction et initialisation d’un
objet
La création d'un objet entraîne, par ordre
chronologique, les oéprations suivantes :
◦ Initialisation par défaut de tous les attirbuts
◦ Initialisation explicite lors de la déclaration des
attributs
◦ Initialisation par exécution des instructions du
corps du constructeur
![Page 27: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/27.jpg)
Construction et initialisation d’un
objet Initialisation par défaut de tous les attirbuts :
chaque déclaration d'un attribut entraine
automatiquement son initialisation par défaut. Les valeurs
initialisées par défauts sont données comme suit :
Type de l’attribut Valeur par défaut
booleen
char
entier (byte, short, int, long)
flottant (float, double)
objet
false
caractère code nul
0
0.f ou 0.
null
![Page 28: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/28.jpg)
Construction et initialisation d’un
objet Initialisation explicite des attributs d'un objet :
public class A {
private int n = 10 ;
private int p ;
private int y = n+2 ;
public A(...) {...}
...
}
![Page 29: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/29.jpg)
Construction et initialisation d’un
objet Initialisation par constructeur :
public class A { private int n = 10, p = 20 ;
private int y = n+2 ;
private int np ;
public A() {
np = n * p ;
n = 5 ;
}
...
} n = 5
p = 20
y =12
np = 200
![Page 30: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/30.jpg)
Déclaration des constantes
Les attributs final :
◦ Déclarer une constante n initiélisée à 20 :
public class A {
private final int n = 20 ;
...
}
![Page 31: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/31.jpg)
Déclaration des constantes
Une constante peut être initialisée dans un
constructeur : public class A {
private final int n;
public A() {
n = 20 ;
}
}
![Page 32: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/32.jpg)
Déclaration des constantes
Attention 1 : une constante s’initialise une
seule fois uniquement : public class A {
private final int n;
public A() {
n = 20 ;
...
n = 30 ; // erreur de compilation
}
}
public class A {
private final int n = 20 ;
public A() {
n = 30 ; // erreur de compilation
}
}
![Page 33: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/33.jpg)
Déclaration des constantes
Attention 2 : une constante doit être
obligatoirement initialisée : public class A {
private final int n;
public A() { //erreur de compilation
...
}
}
![Page 34: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/34.jpg)
Éléments de conception des classes
Une conception orientée objet s'appuie sur la
notion de contrat (ce que fait une classe) et
d'implémentation (comment elle le fait) :
◦ Le Contrat : une classe est caractérisée par
Les en-têtes de ses méthodes publiques
Le comportement de ses méthodes publiques
◦ L’Implémentation : dans une classe,
Les attributs et les corps des méthodes publiques
doivents être privés
![Page 35: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/35.jpg)
Éléments de conception des classes
L’ENCAPSULATION :
◦ des données privées (private) permet à
l'utilisateur de modifier le comportement d'une
classe sans à modifier le programme qui l'exploite.
◦ D'une autre manière :
Modifier les valeurs des attributs en passant par des
méthodes
![Page 36: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/36.jpg)
Éléments de conception des classes
MESSAGE :
◦ Une classe peut modifier le comportement (ou un
attribut) d'une autre classe par l'intérmédiaire des
méthodes
◦ Une classe qui appelle une méthode d'une autre
classe s'appelle aussi une classe qui envoie un
message à une autre classe
![Page 37: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/37.jpg)
Typologie des méthodes
Parmi les méthodes d'une classe, on
distingue :
◦ Les constructeurs
◦ Les accesseurs (accessors ou méthodes d'accès)
Elles fournissent des informations relatives d'un état
d'un objet, c'est-à-dire les attributs d'une classe
◦ Les mutateurs (mutators ou méthode
d'altération)
Ils modifient l'état d'un objet, c'est-à-dire les valeurs des
attributs
![Page 38: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/38.jpg)
Typologie des méthodes
Exemple : cas de la classe Point public class Point {
private int x ; // abscisse
private int y ; // ordonnee
public int getX() {return x ;}
public int getY() {return y ;}
public void setX(int x) {this.x = x ;}
public void setY(int y) {this.y = y ;}
public void setPosition(int x, int y) {
this.x = x ;
this.y = y ;
}
...
}
![Page 39: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/39.jpg)
Affectation et comparaison d’objets
Premier exemple :
Point a, b ;
...
a = new Point (3, 5) ;
b = new Point (2, 1) ;
2
1 b
x
y
3
5 a
x
y
![Page 40: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/40.jpg)
Affectation et comparaison d’objets
Premier exemple :
Point a, b ;
...
a = new Point (3, 5) ;
b = new Point (2, 1) ;
a = b ;
2
1 b
x
y
3
5 a
x
y
![Page 41: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/41.jpg)
Affectation et comparaison d’objets
Premier exemple :
Point a, b ;
...
a = new Point (3, 5) ;
b = new Point (2, 1) ;
a = b ;
2
1 b
x
y
3
5 a
x
y
![Page 42: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/42.jpg)
Affectation et comparaison d’objets
Exemple 2 : exercice
Point a, b, c ;
...
a = new Point (1, 10) ;
b = new Point (2, 20) ;
c = b ;
a = b ;
b = c ;
2
20 c
x
y
1
10 a
x
y
b
![Page 43: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/43.jpg)
Affectation et comparaison d’objets
Attention !
◦ Une variable de type classe (l'instanciation d'une
classe) est une référence et non pas une valeur
◦ Il peut y avoir des conséquences dans la
transmission d'un objet en argument d'une
méthode
![Page 44: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/44.jpg)
Initialisation de référence
Point p ;
p.afficher() ; // erreur de compilation : p
n'est pas initilisé
Point p ;
if (p == null) … // juste : on compare p à
null
Point p = null ; // juste
p.afficher(); // erreur de compilation
![Page 45: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/45.jpg)
Comparer deux objets
Point a, b ;
On peut écrire : (a == b) et (a != b)
(a == b) est vrai :
◦ Si a et b font référence à un seul et même objet
◦ Leurs attributs auront par conséquent les mêmes
valeurs
![Page 46: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/46.jpg)
Comparer deux objets
Exercice :
Point a, b ;
...
a = new Point (1, 10) ;
b = new Point (1, 10) ;
if (a == b) ... // VRAI ou FAUX ?
![Page 47: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/47.jpg)
Le ramasse miette
Garbage Collector
Ce point est supprimé automatiquement de
la mémoire après son affichage
Tous les objets non référencés seront
autmatiquement supprimée de la mémoire
(new Point (1, 10)).afficher() ;
![Page 48: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/48.jpg)
Le ramasse miette
La méthode finalize est appelée par le
garbage collector avant qu'il supprime un
objet
On peut lancer cette méthode dans un
programme, ce qui peremttra de forcer
l'élimination des objets par le garbage
collector
Le grarbage collector ne se déclanche que si
la mémoire commence à se faire rare …
![Page 49: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/49.jpg)
Méthodes fonctions
On ajoutera la méthode distance à la classe Point :
public class Point {
private int x ; // abscisse
private int y ; // ordonnee
...
public double distance() {
double d = Math.sqrt(x*x + y*y) ;
return d ;
}
...
}
Règles d’écriture des méthodes
distance calcule la distance du point P par rapport à l’origine.
![Page 50: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/50.jpg)
Règles d’écriture des méthodes
Méthodes fonctions
Voici un exemple de l'utilisation de la méthode
distance de la classe Point
Point a = new Point() ;
double u, v ;
...
u = 2. * a.distance() ;
v = Math.sqrt(a.getX() * a.getX() + a.getY() * a.getY() ) ;
![Page 51: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/51.jpg)
Les arguments d’une méthode
Arguments muets
◦ Lorsuqu'une méthode est déclarée, l'ensemble de ses arguments sont appelés arguments muets,
◦ Lorsqu'une méthode est appelée, l'ensemble des arguments spécifiés (ou utilisés) sont appelés arguments effectifs.
Exemple :
public void f (final int n, double x) {
n = 12 ; // erreur de compilation
x = 2.5 ;
}
![Page 52: Java Les Classes et les Objets - univ-brest.frpagesperso.univ-brest.fr/~bounceur/cours_pdf/java/poo/Java_6_1-Le… · But de ce cours Aborder la notion de classe dans toute sa généralité,](https://reader031.vdocuments.net/reader031/viewer/2022020922/5e8f937f9c6e842339377748/html5/thumbnails/52.jpg)
Merci de votre attention