SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
VI. Champs et méthodes de classe
1. Champs de classe (variable de classe)
Considérons la définition simpliste suivante:
class ClasseTest {
int n;
double y;
}
Chaque objet de type ClasseTest possède ses propres champs n et y.
Par exemple avec les déclarations
ClasseTest objA1=new ClasseTest(), objA2= new ClasseTest();
objA1.n et objA2.n désignent deux données différentes.
objA1.y et objA2.y désignent aussi deux données différents.
1
objA1.n
objA1.y
objet objA1
objA2.n
objA2.y
objet objA2
Certains attributs peuvent être partagés par toutes les
instances d’une classe. C’est-à-dire ils peuvent être définis
indépendamment des instances (objets):
Par exemple le nombre d’étudiants = le nombre d’objets
étudiant créés.
Ces attributs sont nommés champs de classe ou variables de
classe. Ils sont comparables aux «variables globales ».
Ces variables n’existent qu’en un seul exemplaire,
quel que soit le nombre d’objets de la classe. Elles sont
définies comme les attributs mais précédés du mot-clé static.
2
Les attributs statiques ne sont pas instanciés dans les objets
Considérons la classe:
class ClasseTest {
double y;
}
Soient objA1 et objA2 deux instances différentes.
ClasseTest objA1=new ClasseTest(), objA2=new ClasseTest();
static int n; // la valeur de n est partagée par toutes les instances
ClasseTest.n // champs (statique) de la classe ClasseTest
objA1 et objA2 partagent la même variable n:
- Pour y accéder, on utilise le nom de la classe
objA1.n et objA2.n désignent la même donnée.
La valeur de l’attribut n est indépendante de l’instance (objet).
3
objA1.n ou ClasseTest.n
objA1.y
objet objA1
objA2.y
objet objA2
objA2.n ou ClasseTest.n
4
Champs de classe (variable de classe)
Exemple1:
class ClasseTest {
int n;
double y;
}
public class MethodeStatic{
public static void main(String[] args) {
ClasseTest objA1=new ClasseTest();
ClasseTest objA2=new ClasseTest();
// objA2.n = ?
}
}
objA1.n +=4; // objA1.n vaut 4 puisque n vaut 0
// initialisation par défaut des attributs
// objA2.n vaut 0 : initialisation par défauts des attributs.
5
Exemple2:
class ClasseTest {
float y;
}
public class MethodeStatic{
public static void main(String[] args) {
ClasseTest objA1=new ClasseTest();
ClasseTest objA2=new ClasseTest();
// objA2.n = ?
}
}
static int n; // la valeur de n est partagée par toutes les instances
objA1.n +=4; // objA1.n vaut 4
// objA2 vaut 4 car champs statique .
// équivalent à ClasseTest.n=4;
6
 La classe Employé caractérisée par les attributs
code, nom et nbEmployés
 Les attributs code et nom sont des caractéristiques
de chaque objet Employé contrairement au champ
nbEmployés qui est une caractéristique
commune à tous les objets (attribut statique)
 Chaque objet, instance d’une classe, donne des
valeurs particulières à tous les attributs définis dans
sa classe sauf les attributs statiques ce qui détermine
son état
Attributs de la classe Employé
7
Champs de classe (variable de classe)
: Employé
code =1
nom ="jamil"
: Employé
code =2
nom ="alami "
2 objets de la classe
Employé
Un attribut statique d’une classe est un attribut qui appartient à la classe
et qui est partagé par tous les objets de cette classe. Un attribut statique est
considéré comme étant une variable globale à tous les objets.
Les attributs statiques ne sont pas instanciés dans les objets.
Employé
code : int
nom : String
nbEmployés : static int
8
Une variable de classe (précédée du mot clef static) est partagée par tous les objets de la même classe.
Au début lors de la création des
3 objets chacun des champs x
vaut -58 et des champs y vaut
20,
l'affichage par
System.out.println(...) donne les
résultats suivants qui
démontrent le partage de la
variable x par tous les objets.
Après exécution :
obj1.x = 101
obj1.y = 100
obj2.x = 101
obj2.y = 20
obj3.x = 101
obj3.y = 20
AppliStatic.x = 99
Variables de classe
Variable de classe
public class UneClasse
{
public static int compteur = 0;
public UneClasse ()
{
compteur++;
}
}
class AutreClasse
{
public void uneMethode()
{
int i = UneClasse.compteur;
}
}
Utilisation de la variable de classe
compteur dans le constructeur de
la classe
Utilisation de la variable de classe
compteur dans une autre classe
9
Exécution ???
class Obj
{ private static long nb=0 ;
public Obj()
{ System.out.print ("++creation objet Obj ; ") ;
nb ++ ;
System.out.println ("il y en a maintenant " + nb) ;
}
}
public class TstObj
{ public static void main (String args[])
{ Obj a ;
System.out.println ("Main 1") ;
a = new Obj() ;
System.out.println ("Main 2") ;
Obj b ;
System.out.println ("Main 3") ;
b = new Obj() ;
Obj c = new Obj() ;
System.out.println ("Main 4") ;
}
}
Exécution
Main 1
++ creation objet Obj ; il y en a maintenant 1
Main 2
Main 3
++ creation objet Obj ; il y en a maintenant 2
++ creation objet Obj ; il y en a maintenant 3
Main 4
Exemple 1 d’utilisation d’un champ de classe
10
2. Méthodes de classe
Ce sont des méthodes qui ont un rôle indépendant d’un objet
spécifique. Elles exécutent une action indépendante d’une
instance particulière de la classe.
La déclaration d’une méthode de classe se fait à l’aide du
mot clé static.
L’appel d’une telle méthode ne nécessite que le nom de la
classe correspondante.
Une méthode de classe ne peut utiliser que des variables de
classe et jamais des variables d'instance. Par contre, une méthode
d'instance peut accéder aux deux catégories de variables.
Une méthode de classe ne peut avoir la même signature
qu’une méthode d’instance
11
Exemple
class Test{
…
private static int n; // champs de classe
private float x; // champs usuel
… //ici, on ne peut pas accéder au champs x car champs usuel
… // ici on peut accéder au champs statique n
}
}
………
Test obj ;
Test.f() ; // appel la méthode de classe f de la classe Test
obj.f() ; // reste autorisé, mais déconseillé
public static void f() { // méthode de classe
12
Exécution
class Obj
{ private static long nb=0 ;
public Obj()
{ System.out.print ("++ creation objet Obj ; ") ;
nb ++ ;
System.out.println ("il y en a maintenant " + nb) ;
}
public static long nbObj ()
{ return nb ;
}
}
public class TstObj2
{ public static void main (String args[])
{ Obj a ;
System.out.println ("Main 1 : nb objets = " + Obj.nbObj() ) ;
a = new Obj() ;
System.out.println ("Main 2 : nb objets = " + Obj.nbObj() ) ;
Obj b ;
System.out.println ("Main 3 : nb objets = " + Obj.nbObj() ) ;
b = new Obj() ;
Obj c = new Obj() ;
System.out.println ("Main 4 : nb objets = " + Obj.nbObj() ) ;
}
}
Exécution
Main 1 : nb objets = 0
++ creation objet Obj ; il y en a maintenant 1
Main 2 : nb objets = 1
Main 3 : nb objets = 1
++ creation objet Obj ; il y en a maintenant 2
++ creation objet Obj ; il y en a maintenant 3
Main 4 : nb objets = 3
Exemple d’utilisation d’une méthode de classe
13
VII. Le mot clé final
L’attribut final indique que la valeur de la variable ne peut être
modifiée : on pourra lui donner une valeur une seule fois dans
le programme.
Variable d’instance final
• Une variable d’instance final est une constante pour chaque
objet.
• Une variable d'instance final peut ne pas être initialisée à sa
déclaration mais elle doit avoir une valeur à la sortie de tous
les constructeurs
14
Constantes de classe
• Usage
–
–
–
–
Ce sont des variables de classes déclarées avec le mot-clé final
Ce sont des constantes liées à une classe
Elles sont écrites en MAJUSCULES
Pour y accéder, il faut utiliser non pas un identificateur d’objet
mais le nom de la classe
Exemple:
public class Galerie {
public static final int MASSE_MAX = 150;
}
if (maVoiture.getWeightLimite() <= Galerie.MASSE_MAX)
{...}
15
Le mot réservé final
 Une classe est déclarée final lorsqu'on ne souhaite pas
qu'elle puisse être sous-classée. Par conséquent, ses
méthodes ne peuvent pas être redéfinies.
 Une méthode est déclarée final lorsqu'on ne souhaite
pas qu'elle puisse être redéfinie dans les classes
dérivées.
 Une variable déclarée final est une constante.
16
Classe java type
Une classe java types contient trois grands types de membres :
toujours déclarer les constructeurs après les attributs et
avant les autres méthodes.
Les constructeurs sont des méthodes particulières, vous devez
public class Rectangle {
// ( 1 ) A ttributs
private double L , l ;
// ( 2 ) Constructeurs
public Rectangle (double L , double l ) { . . . }
// ( 3 ) Méthodes
public double surface (double L , double l) { . . . }
}
Remarque
17

Contenu connexe

Tendances

Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Csharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceCsharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceAbdoulaye Dieng
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Java uik-chap4-poo3
Java uik-chap4-poo3Java uik-chap4-poo3
Java uik-chap4-poo3Amel Morchdi
 
Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++Amel Morchdi
 

Tendances (17)

Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Csharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interfaceCsharp3 heritage-polymorphisme-interface
Csharp3 heritage-polymorphisme-interface
 
POO
POOPOO
POO
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Cpp3 : heritage
Cpp3 : heritageCpp3 : heritage
Cpp3 : heritage
 
Cours de JAVA de base
Cours de JAVA  de baseCours de JAVA  de base
Cours de JAVA de base
 
Les Classe en Java
Les Classe en JavaLes Classe en Java
Les Classe en Java
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Clonage d'objets
Clonage d'objetsClonage d'objets
Clonage d'objets
 
JAVA
JAVAJAVA
JAVA
 
Memo java
Memo javaMemo java
Memo java
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
Java uik-chap4-poo3
Java uik-chap4-poo3Java uik-chap4-poo3
Java uik-chap4-poo3
 
Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++
 
Université des langages scala
Université des langages   scalaUniversité des langages   scala
Université des langages scala
 

En vedette

La theorie des dependances et la normalisation des relations-base de données
La theorie des dependances et la normalisation des relations-base de donnéesLa theorie des dependances et la normalisation des relations-base de données
La theorie des dependances et la normalisation des relations-base de donnéesYassine Badri
 
Théorie de normalisation-base de données
Théorie de normalisation-base de donnéesThéorie de normalisation-base de données
Théorie de normalisation-base de donnéesYassine Badri
 
.logistique gestion des stock
.logistique gestion des stock .logistique gestion des stock
.logistique gestion des stock Yassine Badri
 

En vedette (6)

La theorie des dependances et la normalisation des relations-base de données
La theorie des dependances et la normalisation des relations-base de donnéesLa theorie des dependances et la normalisation des relations-base de données
La theorie des dependances et la normalisation des relations-base de données
 
Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
 
Arbre de décision
Arbre de décisionArbre de décision
Arbre de décision
 
Théorie de normalisation-base de données
Théorie de normalisation-base de donnéesThéorie de normalisation-base de données
Théorie de normalisation-base de données
 
.logistique gestion des stock
.logistique gestion des stock .logistique gestion des stock
.logistique gestion des stock
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 

Similaire à Chap 03 poo en java partie2

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxTarikElMahtouchi1
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objetsAbdoulaye Dieng
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdfAabidiHafid
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Rahma Boufalgha
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptxSafaeLhr1
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdframadanmahdi
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de ClasseabdoMarocco
 
System c eniso_jan_fev_07
System c eniso_jan_fev_07System c eniso_jan_fev_07
System c eniso_jan_fev_07haythem_2015
 
Java-3eme partie.pptx
Java-3eme partie.pptxJava-3eme partie.pptx
Java-3eme partie.pptxHassanAbdel
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfAabidiHafid
 

Similaire à Chap 03 poo en java partie2 (20)

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptxfdocuments.fr_chap-03-poo-en-java-partie1.pptx
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
Classes et Objets.pdf
Classes et Objets.pdfClasses et Objets.pdf
Classes et Objets.pdf
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
22-reflection.pdf
22-reflection.pdf22-reflection.pdf
22-reflection.pdf
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptx
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdf
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
ExJava.pdf
ExJava.pdfExJava.pdf
ExJava.pdf
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de Classe
 
System c eniso_jan_fev_07
System c eniso_jan_fev_07System c eniso_jan_fev_07
System c eniso_jan_fev_07
 
Cours c++
Cours c++Cours c++
Cours c++
 
Java-3eme partie.pptx
Java-3eme partie.pptxJava-3eme partie.pptx
Java-3eme partie.pptx
 
Cours_Java.pdf
Cours_Java.pdfCours_Java.pdf
Cours_Java.pdf
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
Héritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdfHéritage et Polymorphisme .pdf
Héritage et Polymorphisme .pdf
 

Plus de Yassine Badri

Conception des bases de données relationelles
Conception des bases de données relationellesConception des bases de données relationelles
Conception des bases de données relationellesYassine Badri
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du meriseYassine Badri
 
base de données -note de cours
base de données -note de cours base de données -note de cours
base de données -note de cours Yassine Badri
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql Yassine Badri
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence Yassine Badri
 
exercices gestion de stock
exercices gestion de stock exercices gestion de stock
exercices gestion de stock Yassine Badri
 
Exercice arbre de décision
Exercice arbre de décision Exercice arbre de décision
Exercice arbre de décision Yassine Badri
 
script site e-commerce -php
script site e-commerce -php script site e-commerce -php
script site e-commerce -php Yassine Badri
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
cours base de données
cours base de donnéescours base de données
cours base de donnéesYassine Badri
 
les métiers d'informatique
les métiers d'informatiqueles métiers d'informatique
les métiers d'informatiqueYassine Badri
 
les métiers d'informatique
les métiers d'informatiqueles métiers d'informatique
les métiers d'informatiqueYassine Badri
 

Plus de Yassine Badri (14)

Conception des bases de données relationelles
Conception des bases de données relationellesConception des bases de données relationelles
Conception des bases de données relationelles
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
 
base de données -note de cours
base de données -note de cours base de données -note de cours
base de données -note de cours
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
exercices gestion de stock
exercices gestion de stock exercices gestion de stock
exercices gestion de stock
 
Exercice arbre de décision
Exercice arbre de décision Exercice arbre de décision
Exercice arbre de décision
 
script site e-commerce -php
script site e-commerce -php script site e-commerce -php
script site e-commerce -php
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
cours base de données
cours base de donnéescours base de données
cours base de données
 
Cours php
Cours php Cours php
Cours php
 
les métiers d'informatique
les métiers d'informatiqueles métiers d'informatique
les métiers d'informatique
 
les métiers d'informatique
les métiers d'informatiqueles métiers d'informatique
les métiers d'informatique
 

Dernier

Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...NaimDoumissi
 

Dernier (18)

Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
 

Chap 03 poo en java partie2

  • 1. VI. Champs et méthodes de classe 1. Champs de classe (variable de classe) Considérons la définition simpliste suivante: class ClasseTest { int n; double y; } Chaque objet de type ClasseTest possède ses propres champs n et y. Par exemple avec les déclarations ClasseTest objA1=new ClasseTest(), objA2= new ClasseTest(); objA1.n et objA2.n désignent deux données différentes. objA1.y et objA2.y désignent aussi deux données différents. 1 objA1.n objA1.y objet objA1 objA2.n objA2.y objet objA2
  • 2. Certains attributs peuvent être partagés par toutes les instances d’une classe. C’est-à-dire ils peuvent être définis indépendamment des instances (objets): Par exemple le nombre d’étudiants = le nombre d’objets étudiant créés. Ces attributs sont nommés champs de classe ou variables de classe. Ils sont comparables aux «variables globales ». Ces variables n’existent qu’en un seul exemplaire, quel que soit le nombre d’objets de la classe. Elles sont définies comme les attributs mais précédés du mot-clé static. 2 Les attributs statiques ne sont pas instanciés dans les objets
  • 3. Considérons la classe: class ClasseTest { double y; } Soient objA1 et objA2 deux instances différentes. ClasseTest objA1=new ClasseTest(), objA2=new ClasseTest(); static int n; // la valeur de n est partagée par toutes les instances ClasseTest.n // champs (statique) de la classe ClasseTest objA1 et objA2 partagent la même variable n: - Pour y accéder, on utilise le nom de la classe objA1.n et objA2.n désignent la même donnée. La valeur de l’attribut n est indépendante de l’instance (objet). 3 objA1.n ou ClasseTest.n objA1.y objet objA1 objA2.y objet objA2 objA2.n ou ClasseTest.n
  • 4. 4 Champs de classe (variable de classe)
  • 5. Exemple1: class ClasseTest { int n; double y; } public class MethodeStatic{ public static void main(String[] args) { ClasseTest objA1=new ClasseTest(); ClasseTest objA2=new ClasseTest(); // objA2.n = ? } } objA1.n +=4; // objA1.n vaut 4 puisque n vaut 0 // initialisation par défaut des attributs // objA2.n vaut 0 : initialisation par défauts des attributs. 5
  • 6. Exemple2: class ClasseTest { float y; } public class MethodeStatic{ public static void main(String[] args) { ClasseTest objA1=new ClasseTest(); ClasseTest objA2=new ClasseTest(); // objA2.n = ? } } static int n; // la valeur de n est partagée par toutes les instances objA1.n +=4; // objA1.n vaut 4 // objA2 vaut 4 car champs statique . // équivalent à ClasseTest.n=4; 6
  • 7.  La classe Employé caractérisée par les attributs code, nom et nbEmployés  Les attributs code et nom sont des caractéristiques de chaque objet Employé contrairement au champ nbEmployés qui est une caractéristique commune à tous les objets (attribut statique)  Chaque objet, instance d’une classe, donne des valeurs particulières à tous les attributs définis dans sa classe sauf les attributs statiques ce qui détermine son état Attributs de la classe Employé 7 Champs de classe (variable de classe) : Employé code =1 nom ="jamil" : Employé code =2 nom ="alami " 2 objets de la classe Employé Un attribut statique d’une classe est un attribut qui appartient à la classe et qui est partagé par tous les objets de cette classe. Un attribut statique est considéré comme étant une variable globale à tous les objets. Les attributs statiques ne sont pas instanciés dans les objets. Employé code : int nom : String nbEmployés : static int
  • 8. 8 Une variable de classe (précédée du mot clef static) est partagée par tous les objets de la même classe. Au début lors de la création des 3 objets chacun des champs x vaut -58 et des champs y vaut 20, l'affichage par System.out.println(...) donne les résultats suivants qui démontrent le partage de la variable x par tous les objets. Après exécution : obj1.x = 101 obj1.y = 100 obj2.x = 101 obj2.y = 20 obj3.x = 101 obj3.y = 20 AppliStatic.x = 99
  • 9. Variables de classe Variable de classe public class UneClasse { public static int compteur = 0; public UneClasse () { compteur++; } } class AutreClasse { public void uneMethode() { int i = UneClasse.compteur; } } Utilisation de la variable de classe compteur dans le constructeur de la classe Utilisation de la variable de classe compteur dans une autre classe 9
  • 10. Exécution ??? class Obj { private static long nb=0 ; public Obj() { System.out.print ("++creation objet Obj ; ") ; nb ++ ; System.out.println ("il y en a maintenant " + nb) ; } } public class TstObj { public static void main (String args[]) { Obj a ; System.out.println ("Main 1") ; a = new Obj() ; System.out.println ("Main 2") ; Obj b ; System.out.println ("Main 3") ; b = new Obj() ; Obj c = new Obj() ; System.out.println ("Main 4") ; } } Exécution Main 1 ++ creation objet Obj ; il y en a maintenant 1 Main 2 Main 3 ++ creation objet Obj ; il y en a maintenant 2 ++ creation objet Obj ; il y en a maintenant 3 Main 4 Exemple 1 d’utilisation d’un champ de classe 10
  • 11. 2. Méthodes de classe Ce sont des méthodes qui ont un rôle indépendant d’un objet spécifique. Elles exécutent une action indépendante d’une instance particulière de la classe. La déclaration d’une méthode de classe se fait à l’aide du mot clé static. L’appel d’une telle méthode ne nécessite que le nom de la classe correspondante. Une méthode de classe ne peut utiliser que des variables de classe et jamais des variables d'instance. Par contre, une méthode d'instance peut accéder aux deux catégories de variables. Une méthode de classe ne peut avoir la même signature qu’une méthode d’instance 11
  • 12. Exemple class Test{ … private static int n; // champs de classe private float x; // champs usuel … //ici, on ne peut pas accéder au champs x car champs usuel … // ici on peut accéder au champs statique n } } ……… Test obj ; Test.f() ; // appel la méthode de classe f de la classe Test obj.f() ; // reste autorisé, mais déconseillé public static void f() { // méthode de classe 12
  • 13. Exécution class Obj { private static long nb=0 ; public Obj() { System.out.print ("++ creation objet Obj ; ") ; nb ++ ; System.out.println ("il y en a maintenant " + nb) ; } public static long nbObj () { return nb ; } } public class TstObj2 { public static void main (String args[]) { Obj a ; System.out.println ("Main 1 : nb objets = " + Obj.nbObj() ) ; a = new Obj() ; System.out.println ("Main 2 : nb objets = " + Obj.nbObj() ) ; Obj b ; System.out.println ("Main 3 : nb objets = " + Obj.nbObj() ) ; b = new Obj() ; Obj c = new Obj() ; System.out.println ("Main 4 : nb objets = " + Obj.nbObj() ) ; } } Exécution Main 1 : nb objets = 0 ++ creation objet Obj ; il y en a maintenant 1 Main 2 : nb objets = 1 Main 3 : nb objets = 1 ++ creation objet Obj ; il y en a maintenant 2 ++ creation objet Obj ; il y en a maintenant 3 Main 4 : nb objets = 3 Exemple d’utilisation d’une méthode de classe 13
  • 14. VII. Le mot clé final L’attribut final indique que la valeur de la variable ne peut être modifiée : on pourra lui donner une valeur une seule fois dans le programme. Variable d’instance final • Une variable d’instance final est une constante pour chaque objet. • Une variable d'instance final peut ne pas être initialisée à sa déclaration mais elle doit avoir une valeur à la sortie de tous les constructeurs 14
  • 15. Constantes de classe • Usage – – – – Ce sont des variables de classes déclarées avec le mot-clé final Ce sont des constantes liées à une classe Elles sont écrites en MAJUSCULES Pour y accéder, il faut utiliser non pas un identificateur d’objet mais le nom de la classe Exemple: public class Galerie { public static final int MASSE_MAX = 150; } if (maVoiture.getWeightLimite() <= Galerie.MASSE_MAX) {...} 15
  • 16. Le mot réservé final  Une classe est déclarée final lorsqu'on ne souhaite pas qu'elle puisse être sous-classée. Par conséquent, ses méthodes ne peuvent pas être redéfinies.  Une méthode est déclarée final lorsqu'on ne souhaite pas qu'elle puisse être redéfinie dans les classes dérivées.  Une variable déclarée final est une constante. 16
  • 17. Classe java type Une classe java types contient trois grands types de membres : toujours déclarer les constructeurs après les attributs et avant les autres méthodes. Les constructeurs sont des méthodes particulières, vous devez public class Rectangle { // ( 1 ) A ttributs private double L , l ; // ( 2 ) Constructeurs public Rectangle (double L , double l ) { . . . } // ( 3 ) Méthodes public double surface (double L , double l) { . . . } } Remarque 17