SlideShare une entreprise Scribd logo
3
Plus lue
6
Plus lue
18
Plus lue
Chapitre 2
Encapsulation
Mouna Torjmen Khemakhem
Définition d’encapsulation
Le principe d'encapsulation dit qu'un objet ne doit pas
exposer sa représentation interne au monde extérieur.
2
représentation interne d’un objet:
• Les attributs
• Les méthodes
monde extérieur
• Les autres classes dans la même package
• Les classes des autres packages
Mouna Torjmen Khemakhem
Les packages
Projet
package 1
ClassA
ClassB
• Package = répertoire.
• Les classes Java peuvent être regroupées dans
des packages.
Déclaration d’un package
package pack1;
Utilisation d’un package
1- Nom du package suivi de nom de la classe
3
Package 2
ClassB
ClassC
ClassD
2- Import de la classe du package
Package 21
ClassE
java.util.Date now = new java.util.Date() ;
System.out.println(now) ;
1- Nom du package suivi de nom de la classe
import java.util.Date ;
…
Date now = new Date() ;
System.out.println(now) ;
2- Import de tout le package
import java.util.*;
…
Date now = new Date() ;
System.out.println(now) ;Mouna Torjmen Khemakhem
Les packages
Les packages sont eux-mêmes organisés hiérarchiquement. : on
peut définir des sous-packages, des sous-sous-packages, …
Mouna Torjmen Khemakhem
Encapsulation des classes
class C est la fille de class A
5
Package 1
class A
class B
Package 2
class C
class D
Mouna Torjmen Khemakhem
Encapsulation des classes
Package 1
class A
class B
Package 2
class C
class D
La classe public
6
public class A {
…
}
public class A
class B {
A a;
…
}
La classe public est visible depuis n’importe quelle classe du projet.
class C extends A{
A a;
…
}
class B class D
class D {
A a;
…
}
Mouna Torjmen Khemakhem
Encapsulation des classes
Package 1
class A
class B
Package 2
class C
class D
La classe default
7
class A {
…
}
class A
class B {
A a;
…
}
class C extends A {
A a;
…
}
class D {
A a;
…
}
La classe default est visible seulement par les classes de son package.
class B class D
Mouna Torjmen Khemakhem
Encapsulation des attributs
Package 1
class A
public int x;
private int y;
int z;
protected int w;
class B
Package 2
class C
class D
L’attribut public
8
public class A {
public int x;
…
}
public int x
class B {
A a=new A();
int t=a. x ;
…
}
L’attribut public est visible par toutes les classes
protected int w;
class B class D
class C extends A {
A a=new A();
int t=a. x ;
…
}
class D {
A a=new A();
int t=a. x ;
…
}
Mouna Torjmen Khemakhem
Encapsulation des attributs
Package 1
class A
public int x;
private int y;
int z;
protected int w;
class B
Package 2
class C
class D
L’attribut private
9
public class A {
private int y;
…
}
private int y
class B {
A a=new A();
int t=a. y ;
…
}
L’attribut private n'est accessible que depuis l'intérieur même de
la classe.
class C extends A {
A a=new A();
int t=a. y ;
…
}
class D {
A a=new A();
int t=a. y ;
…
}
protected int w;
class B class D
Mouna Torjmen Khemakhem
Encapsulation des attributs
Package 1
class A
public int x;
private int y;
int z;
protected int w;
class B
Package 2
class C
class D
L’attribut default
10
public class A {
int z;
…
}
int z
class B {
A a=new A();
int t=a. z ;
…
}
L’attribut default n'est accessible que depuis les classes faisant
partie du même package.
class C extends A {
A a=new A();
int t=a. z ;
…
}
class D {
A a=new A();
int t=a. z ;
…
}
protected int w;
class B class D
Mouna Torjmen Khemakhem
Encapsulation des attributs
Package 1
class A
public int x;
private int y;
int z;
protected int w; class B
Package 2
class C
class D
L’attribut protected
11
public class A {
protected int w;
…
}
protected int w
class B {
A a=new A();
int t=a. w ;
…
}
L’attribut protected est accessible uniquement aux classes d'un
même package et à ses classes filles (même si elles sont définies
dans un package différent.)
class C extends A {
A a=new A();
int t=a.w;
…
}
class D {
A a=new A();
int t=a.w;
…
}
protected int w;
Mouna Torjmen Khemakhem
Encapsulation des attributs
Package 1
class A
public int x;
private int y;
int z;
protected int w;
class B
Package 2
class C
class D
12
Visibilité à
partir de:
Classe
A
Package
B
Classe fille
C
Tout le
reste
D
public (x)
private (y)
default (z)
protected (w)
Mouna Torjmen Khemakhem
Encapsulation des méthodes
Package 1
class A
public void meth1(){};
private void meth2(){};
void meth3(){};
protected void meth4(){}; class B
Package 2
class C
class D
La méthode public
13
public class A {
public void meth1(){}
…
}
public void meth1()
class B {
A a=new A();
a.meth1() ;
…
}
class C extends A {
A a=new A();
a.meth1() ;
…
}
class D {
A a=new A();
a.meth1();
…
}
protected void meth4(){}; class B class D
Mouna Torjmen Khemakhem
La méthode public est accessible par toutes les classes du
projet.
Encapsulation des méthodes
Package 1
class A
public void meth1(){};
private void meth2(){};
void meth3(){};
protected void meth4(){}; class B
Package 2
class C
class D
La méthode private
14
public class A {
private void meth2(){}
…
}
private void meth2()
class B {
A a=new A();
a.meth2() ;
…
}
La méthode private n'est accessible que depuis l'intérieur
même de la classe.
class C extends A {
A a=new A();
a.meth2() ;
…
}
class D {
A a=new A();
a.meth2();
…
}
protected void meth4(){}; class B class D
Mouna Torjmen Khemakhem
Encapsulation des méthodes
Package 1
class A
public void meth1(){};
private void meth2(){};
void meth3(){};
protected void meth4(){}; class B
Package 2
class C
class D
La méthode default
15
public class A {
void meth3(){}
…
}
void meth3()
class B {
A a=new A();
a.meth3() ;
…
}
La méthode default n'est accessible que depuis les classes
faisant partie du même package.
class C extends A {
A a=new A();
a.meth3() ;
…
}
class D {
A a=new A();
a.meth3();
…
}
protected void meth4(){}; class B class D
Mouna Torjmen Khemakhem
Encapsulation des méthodes
Package 1
class A
public void meth1(){};
private void meth2(){};
void meth3(){};
protected void meth4(){}; class B
Package 2
class C
class D
La méthode protected
public class A {
protected void meth4(){}
…
}
protected void meth4()
class B {
A a=new A();
a.meth4() ;
…
}
La méthode protected est accessible uniquement aux
classes du même package et à ses sous-classes (même
si elles sont définies dans un package différent.)
class C extends A {
A a=new A();
a.meth4() ;
…
}
class D {
A a=new A();
a.meth4();
…
}
protected void meth4(){};
16Mouna Torjmen Khemakhem
Encapsulation des méthodes
Package 1
class A
public void meth1(){};
private void meth2(){};
void meth3(){};
protected void meth4(){};
class B
Package 2
class C
class D
17
Visibilité à partir de: Classe
A
Package
B
Classe
fille
C
Tout le
reste
D
public (meth1)
private (meth2)
default (meth3)
protected (meth4)
Mouna Torjmen Khemakhem
Encapsulation des attributs/méthodes
Dans le but de renforcer le contrôle de l'accès aux attributs d'une
classe, il est recommandé de les déclarer private.
Pour la manipulation des attributs private, on utilise:
• Un mutateur (setter): une méthode qui permet de définir
la valeur d'un attribut particulier.
• Un accesseur (getter): une méthode qui permet d'obtenir
la valeur d'un attribut particulier.
18
Le setter et le getter doivent être déclarés public
private float prix;
public void setPrix(float prix){
this.prix=prix;
}
public float getPrix(){
return prix;
}
private boolean exist;
public void setExist(boolean exist){
this.exist=exist;
}
public boolean isExist(){
return exist;
}
Mouna Torjmen Khemakhem
Exemple
class Rectangle {
private int longueur;
private int largeur ;
Rectangle (){
this. longueur = 0 ;
this. largeur = 0 ;
}
Rectangle(int longueur, int largeur){
19
Rectangle(int longueur, int largeur){
this. longueur = longueur ;
this. largeur = largeur ;
}
void allongerRectangle (int lg) { longueur+=lg ;}
void affiche () {System.out.println(" longueur= "+longueur+ " ; largeur =" +
largeur) ; }
public int getLongueur () {return(longueur) ;}
public int getLargeur () {return(largeur) ;}
}
19
Mouna Torjmen Khemakhem
Exemple
class TestRectangle {
public static void main (String[] args){
Rectangle r1;
r1=new Rectangle();
longueur=0, largeur=0
r1.affiche(); // Affiche longueur=? ; largeur=?
r1.longueur=20; // instruction incorrecte car l’attribut longueurest privé
20
r1.longueur=20; // instruction incorrecte car l’attribut longueurest privé
r1.largeur=10; // instruction incorrecte car l’attribut largeur est privé
r1=new Rectangle (20, 10) ;
r1.affiche () ; // Affiche longueur=? ; largeur=?
r1.allongerRectangle (5) ;
System.out.println (" longueur= "+r1.longueur) ; // erreur car l’attribut longueur
est privé
System.out.println (" longueur= "+r1.getLongueur() ) ; // Affiche longueur = ?
r1.affiche () ; // Affiche longueur=? ; largeur=?
}
}
Mouna Torjmen Khemakhem

Contenu connexe

PDF
POO Java Chapitre 4 Heritage et Polymorphisme
PDF
POO Java Chapitre 1 Classe & Objet
PDF
POO Java Introduction
PDF
Chapitre 5 classes abstraites et interfaces
PDF
POO Java Chapitre 6 Exceptions
PPSX
Fondamentaux java
PDF
Corrige tp java
PDF
Correction Examen 2016-2017 POO .pdf
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 1 Classe & Objet
POO Java Introduction
Chapitre 5 classes abstraites et interfaces
POO Java Chapitre 6 Exceptions
Fondamentaux java
Corrige tp java
Correction Examen 2016-2017 POO .pdf

Tendances (20)

PDF
POO Java Chapitre 3 Collections
PDF
Chap 6 : classes et interfaces
PDF
Chapitre 6 traitement des exceptions
PPTX
Chap1lla génèricité.pptx
PDF
Chapitre5: Classes et objets
PDF
Exercice 2 java Héritage
PDF
Cours design pattern m youssfi partie 3 decorateur
PDF
Tp n 4 linux
PDF
Cours JavaScript
PDF
Support de cours technologie et application m.youssfi
PDF
résumé POO java .pdf
PDF
Tp n 3 linux
PDF
Polymorphisme, interface et classe abstraite
PDF
Exercice 1 java Héritage
DOCX
PFE :: Application de gestion des dus d'enseignement
PDF
Chap1: Cours en C++
PDF
Cours design pattern m youssfi partie 7 facade bridge flyweight
PDF
Cours php
PDF
Polymorphisme (cours, résumé)
PDF
Cours design pattern m youssfi partie 6 proxy
POO Java Chapitre 3 Collections
Chap 6 : classes et interfaces
Chapitre 6 traitement des exceptions
Chap1lla génèricité.pptx
Chapitre5: Classes et objets
Exercice 2 java Héritage
Cours design pattern m youssfi partie 3 decorateur
Tp n 4 linux
Cours JavaScript
Support de cours technologie et application m.youssfi
résumé POO java .pdf
Tp n 3 linux
Polymorphisme, interface et classe abstraite
Exercice 1 java Héritage
PFE :: Application de gestion des dus d'enseignement
Chap1: Cours en C++
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours php
Polymorphisme (cours, résumé)
Cours design pattern m youssfi partie 6 proxy
Publicité

Similaire à POO Java Chapitre 2 Encapsulation (12)

PDF
Chapitre 2 classe et objet
PPTX
Csharp2 : classes et objets
PDF
Chapitre3 2013 POO
PPTX
Cours de JAVA de base
PPTX
Les Classe en Java
PDF
Chap 03 poo en java partie1
PPTX
Cpp2 : classes et objets
PPTX
cours (1).pptxhggvjhbjkhggvjhbjkhggvjhbjk
PPTX
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
PDF
Programmation orientée objet : Object, classe et encapsulation
PPT
XB-Java.ppt
PDF
coursJavaOopmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.pdf
Chapitre 2 classe et objet
Csharp2 : classes et objets
Chapitre3 2013 POO
Cours de JAVA de base
Les Classe en Java
Chap 03 poo en java partie1
Cpp2 : classes et objets
cours (1).pptxhggvjhbjkhggvjhbjkhggvjhbjk
fdocuments.fr_chap-03-poo-en-java-partie1.pptx
Programmation orientée objet : Object, classe et encapsulation
XB-Java.ppt
coursJavaOopmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.pdf
Publicité

Plus de Mouna Torjmen (6)

PDF
TIC & E-Learning
PDF
Apprentissage Par Projet APP
PDF
Chapitre 4 no sql
PDF
Chapitre 3 spark
PDF
Chapitre 2 hadoop
PDF
Chapitre1 introduction
TIC & E-Learning
Apprentissage Par Projet APP
Chapitre 4 no sql
Chapitre 3 spark
Chapitre 2 hadoop
Chapitre1 introduction

Dernier (16)

PPTX
FormationFormation e pFormationour HC .pptx
PPTX
UMAPON Cours de traitement des minerais 2.pptx
PDF
TP de La Masse Volumique apparente et absolue
PDF
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
PPTX
Introduction aux Systèmes temps réel.pptx
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PDF
Visite de chantier – Projet de Polyclinique à Laghouat
PDF
TP L’analyse granulométrique par tamisage
PDF
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
PDF
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
PPTX
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
PPTX
mon_expose_de_geophysique_disposotif_de_wener.pptx
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PPTX
Logique séquentielle : les fondamentaux
FormationFormation e pFormationour HC .pptx
UMAPON Cours de traitement des minerais 2.pptx
TP de La Masse Volumique apparente et absolue
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
Introduction aux Systèmes temps réel.pptx
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
Visite de chantier – Projet de Polyclinique à Laghouat
TP L’analyse granulométrique par tamisage
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
A Recurrent Neural Network (RNN)s a type of artificial neural network
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
mon_expose_de_geophysique_disposotif_de_wener.pptx
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
Logique séquentielle : les fondamentaux

POO Java Chapitre 2 Encapsulation

  • 2. Définition d’encapsulation Le principe d'encapsulation dit qu'un objet ne doit pas exposer sa représentation interne au monde extérieur. 2 représentation interne d’un objet: • Les attributs • Les méthodes monde extérieur • Les autres classes dans la même package • Les classes des autres packages Mouna Torjmen Khemakhem
  • 3. Les packages Projet package 1 ClassA ClassB • Package = répertoire. • Les classes Java peuvent être regroupées dans des packages. Déclaration d’un package package pack1; Utilisation d’un package 1- Nom du package suivi de nom de la classe 3 Package 2 ClassB ClassC ClassD 2- Import de la classe du package Package 21 ClassE java.util.Date now = new java.util.Date() ; System.out.println(now) ; 1- Nom du package suivi de nom de la classe import java.util.Date ; … Date now = new Date() ; System.out.println(now) ; 2- Import de tout le package import java.util.*; … Date now = new Date() ; System.out.println(now) ;Mouna Torjmen Khemakhem
  • 4. Les packages Les packages sont eux-mêmes organisés hiérarchiquement. : on peut définir des sous-packages, des sous-sous-packages, … Mouna Torjmen Khemakhem
  • 5. Encapsulation des classes class C est la fille de class A 5 Package 1 class A class B Package 2 class C class D Mouna Torjmen Khemakhem
  • 6. Encapsulation des classes Package 1 class A class B Package 2 class C class D La classe public 6 public class A { … } public class A class B { A a; … } La classe public est visible depuis n’importe quelle classe du projet. class C extends A{ A a; … } class B class D class D { A a; … } Mouna Torjmen Khemakhem
  • 7. Encapsulation des classes Package 1 class A class B Package 2 class C class D La classe default 7 class A { … } class A class B { A a; … } class C extends A { A a; … } class D { A a; … } La classe default est visible seulement par les classes de son package. class B class D Mouna Torjmen Khemakhem
  • 8. Encapsulation des attributs Package 1 class A public int x; private int y; int z; protected int w; class B Package 2 class C class D L’attribut public 8 public class A { public int x; … } public int x class B { A a=new A(); int t=a. x ; … } L’attribut public est visible par toutes les classes protected int w; class B class D class C extends A { A a=new A(); int t=a. x ; … } class D { A a=new A(); int t=a. x ; … } Mouna Torjmen Khemakhem
  • 9. Encapsulation des attributs Package 1 class A public int x; private int y; int z; protected int w; class B Package 2 class C class D L’attribut private 9 public class A { private int y; … } private int y class B { A a=new A(); int t=a. y ; … } L’attribut private n'est accessible que depuis l'intérieur même de la classe. class C extends A { A a=new A(); int t=a. y ; … } class D { A a=new A(); int t=a. y ; … } protected int w; class B class D Mouna Torjmen Khemakhem
  • 10. Encapsulation des attributs Package 1 class A public int x; private int y; int z; protected int w; class B Package 2 class C class D L’attribut default 10 public class A { int z; … } int z class B { A a=new A(); int t=a. z ; … } L’attribut default n'est accessible que depuis les classes faisant partie du même package. class C extends A { A a=new A(); int t=a. z ; … } class D { A a=new A(); int t=a. z ; … } protected int w; class B class D Mouna Torjmen Khemakhem
  • 11. Encapsulation des attributs Package 1 class A public int x; private int y; int z; protected int w; class B Package 2 class C class D L’attribut protected 11 public class A { protected int w; … } protected int w class B { A a=new A(); int t=a. w ; … } L’attribut protected est accessible uniquement aux classes d'un même package et à ses classes filles (même si elles sont définies dans un package différent.) class C extends A { A a=new A(); int t=a.w; … } class D { A a=new A(); int t=a.w; … } protected int w; Mouna Torjmen Khemakhem
  • 12. Encapsulation des attributs Package 1 class A public int x; private int y; int z; protected int w; class B Package 2 class C class D 12 Visibilité à partir de: Classe A Package B Classe fille C Tout le reste D public (x) private (y) default (z) protected (w) Mouna Torjmen Khemakhem
  • 13. Encapsulation des méthodes Package 1 class A public void meth1(){}; private void meth2(){}; void meth3(){}; protected void meth4(){}; class B Package 2 class C class D La méthode public 13 public class A { public void meth1(){} … } public void meth1() class B { A a=new A(); a.meth1() ; … } class C extends A { A a=new A(); a.meth1() ; … } class D { A a=new A(); a.meth1(); … } protected void meth4(){}; class B class D Mouna Torjmen Khemakhem La méthode public est accessible par toutes les classes du projet.
  • 14. Encapsulation des méthodes Package 1 class A public void meth1(){}; private void meth2(){}; void meth3(){}; protected void meth4(){}; class B Package 2 class C class D La méthode private 14 public class A { private void meth2(){} … } private void meth2() class B { A a=new A(); a.meth2() ; … } La méthode private n'est accessible que depuis l'intérieur même de la classe. class C extends A { A a=new A(); a.meth2() ; … } class D { A a=new A(); a.meth2(); … } protected void meth4(){}; class B class D Mouna Torjmen Khemakhem
  • 15. Encapsulation des méthodes Package 1 class A public void meth1(){}; private void meth2(){}; void meth3(){}; protected void meth4(){}; class B Package 2 class C class D La méthode default 15 public class A { void meth3(){} … } void meth3() class B { A a=new A(); a.meth3() ; … } La méthode default n'est accessible que depuis les classes faisant partie du même package. class C extends A { A a=new A(); a.meth3() ; … } class D { A a=new A(); a.meth3(); … } protected void meth4(){}; class B class D Mouna Torjmen Khemakhem
  • 16. Encapsulation des méthodes Package 1 class A public void meth1(){}; private void meth2(){}; void meth3(){}; protected void meth4(){}; class B Package 2 class C class D La méthode protected public class A { protected void meth4(){} … } protected void meth4() class B { A a=new A(); a.meth4() ; … } La méthode protected est accessible uniquement aux classes du même package et à ses sous-classes (même si elles sont définies dans un package différent.) class C extends A { A a=new A(); a.meth4() ; … } class D { A a=new A(); a.meth4(); … } protected void meth4(){}; 16Mouna Torjmen Khemakhem
  • 17. Encapsulation des méthodes Package 1 class A public void meth1(){}; private void meth2(){}; void meth3(){}; protected void meth4(){}; class B Package 2 class C class D 17 Visibilité à partir de: Classe A Package B Classe fille C Tout le reste D public (meth1) private (meth2) default (meth3) protected (meth4) Mouna Torjmen Khemakhem
  • 18. Encapsulation des attributs/méthodes Dans le but de renforcer le contrôle de l'accès aux attributs d'une classe, il est recommandé de les déclarer private. Pour la manipulation des attributs private, on utilise: • Un mutateur (setter): une méthode qui permet de définir la valeur d'un attribut particulier. • Un accesseur (getter): une méthode qui permet d'obtenir la valeur d'un attribut particulier. 18 Le setter et le getter doivent être déclarés public private float prix; public void setPrix(float prix){ this.prix=prix; } public float getPrix(){ return prix; } private boolean exist; public void setExist(boolean exist){ this.exist=exist; } public boolean isExist(){ return exist; } Mouna Torjmen Khemakhem
  • 19. Exemple class Rectangle { private int longueur; private int largeur ; Rectangle (){ this. longueur = 0 ; this. largeur = 0 ; } Rectangle(int longueur, int largeur){ 19 Rectangle(int longueur, int largeur){ this. longueur = longueur ; this. largeur = largeur ; } void allongerRectangle (int lg) { longueur+=lg ;} void affiche () {System.out.println(" longueur= "+longueur+ " ; largeur =" + largeur) ; } public int getLongueur () {return(longueur) ;} public int getLargeur () {return(largeur) ;} } 19 Mouna Torjmen Khemakhem
  • 20. Exemple class TestRectangle { public static void main (String[] args){ Rectangle r1; r1=new Rectangle(); longueur=0, largeur=0 r1.affiche(); // Affiche longueur=? ; largeur=? r1.longueur=20; // instruction incorrecte car l’attribut longueurest privé 20 r1.longueur=20; // instruction incorrecte car l’attribut longueurest privé r1.largeur=10; // instruction incorrecte car l’attribut largeur est privé r1=new Rectangle (20, 10) ; r1.affiche () ; // Affiche longueur=? ; largeur=? r1.allongerRectangle (5) ; System.out.println (" longueur= "+r1.longueur) ; // erreur car l’attribut longueur est privé System.out.println (" longueur= "+r1.getLongueur() ) ; // Affiche longueur = ? r1.affiche () ; // Affiche longueur=? ; largeur=? } } Mouna Torjmen Khemakhem