0% ont trouvé ce document utile (0 vote)
3 vues25 pages

Cours Java - Ch4

Le chapitre 4 traite de l'encapsulation, un principe qui stipule qu'un objet ne doit pas exposer sa représentation interne. L'encapsulation permet de cacher les détails internes d'un objet tout en offrant des services externes via des méthodes publiques. Elle utilise des spécificateurs d'accès pour contrôler la visibilité des classes et de leurs attributs, favorisant ainsi la sécurité des données et la modularité du code.

Transféré par

Farah GHARBI
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues25 pages

Cours Java - Ch4

Le chapitre 4 traite de l'encapsulation, un principe qui stipule qu'un objet ne doit pas exposer sa représentation interne. L'encapsulation permet de cacher les détails internes d'un objet tout en offrant des services externes via des méthodes publiques. Elle utilise des spécificateurs d'accès pour contrôler la visibilité des classes et de leurs attributs, favorisant ainsi la sécurité des données et la modularité du code.

Transféré par

Farah GHARBI
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 4:

Encapsulation

1
Définition

 Le principe de l’encapsulation dit qu’un objet ne doit pas


exposer sa représentation interne au monde extérieur.

Représentation interne d’un objet:


 Attributs
 Méthodes

Monde extérieur
 Les autres classes dans le même package
 Les classes des autres packages
2
Définition

L'encapsulation a donc deux aspects :

 Offrir un ensemble de services, un accès simple.

 Être une boîte noire (black box) en cachant des détails


de structure et de fonctionnement

3
Principe

Voici un exemple avec la classe 'Livre' qui offre


des services de manipulation de livres d'une
bibliothèque.

Parmi les services qu'on peut obtenir:

 Livre(): pour créer et enregistrer un


nouveau livre dans la bibliothèque (appel au
constructeur)
 getTitre(): pour avoir le titre du document
 getEdition(): pour connaître l'année de
publication
 setEdition(int date)
4
Principe

 La boîte noire cache des


détails. Elle cache les variables
titre, auteur et année.

 On se contente de connaître
comment manipuler le Livre à
l'aide des services offert par la
classe.

5
Principe

 L’encapsulation permet de définir deux niveaux de perception


de l’objet:

 Niveau externe: propriétés de l’objet visible par tout le


programme

 Niveau interne: propriétés de l’objet visible seulement dans


sa classe.
o méthodes et attributs accessibles uniquement depuis
l’intérieur de l’objet (ou objets similaires)

6
Encapsulation contrôlée

 Le bon usage de l’encapsulation à accès contrôlé est


d’appliquer la restriction maximale de visibilité aux classes,
instances et champs d’objets.

 Notions de package
 Les spécificateurs d’accès aux classes et à leurs instances
 Les spécificateurs d’accès aux champs des objets

7
Encapsulation contrôlée

La notion de « package » (première approche)


 Les packages Java fournissent le moyen de regrouper des
classes en modules.
 Les packages Java sont séparés entre eux par des frontières
parfois franchissables, parfois non.
 Un package étant défini, il regroupe un ensemble de classes
dont toutes ne sont pas utiles de l’extérieur du package.

8
Encapsulation contrôlée

La notion de « package » (première approche)

 Les packages Java fournissent le moyen


de regrouper des classes en modules.

 Les packages Java sont séparés entre eux


par des frontières parfois franchissables,
parfois non.

Par défaut, en Java, lorsqu’aucun spécificateur d’accès n’est précisé,


l’accès est défini sur la totalité du package contenant.
9
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux classes et à leurs instances

Le spécificateur PUBLIC :
package livres; La classe Livre et ses instances sont accessibles
// La classe Livre par TOUS les packages.
public class Livre{
… Restriction d’accès : aucune
}

Le spécificateur PAR DÉFAUT :


La classe Livre et ses instances ne sont accessibles
package livres; QUE de leur propre package
// La classe Livre (c’est-à-dire depuis toute classe ou objet du package
class Livre{ « livres »)

} Restriction d’accès : package
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux classes et à leurs instances

Classe public
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux classes et à leurs instances


Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets


Le spécificateur public :

package livres; La méthode boolean exit() est accessible sur


public class Livre{ TOUTES les instances de classe Livre.

public boolean existe ( ) Restriction d’accès : aucune
{…} mais reste subordonnée à la visibilité de la
} classe (qui devrait logiquement être déclarée
public comme ici !)
Le spécificateur private:
package livres;
public class Livre{ La méthode boolean exist() n’est accessible QUE des

private boolean exist( ) {…} instances de classe Livre elles-mêmes.
} Restriction d’accès : l’instance de classe elle-même
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

Le spécificateur PAR DÉFAUT :


package livres;
public class Livre{ La méthode boolean exist() est accessible DE TOUT le
… package « livres ».
boolean exist( ) {…}
Restriction d’accès : package
}
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

L’attribut public
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

L’attribut private
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

L’attribut protected
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

La méthode public
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

La méthode private
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

La méthode default
Encapsulation contrôlée

Les spécificateurs d’accès contrôlé aux champs des objets

La méthode protected
Encapsulation: Accesseur et mutateur

Tous les attributs sont private ? Et si on a besoin de les utiliser


depuis l’extérieur de la classe ?

1. Un accesseur (méthode get ou getter): lire la valeur d’un


attribut

2. Un mutateur (méthode set ou setter): modifier la valeur d’un


attribut

Le getter et le setter doivent être déclarés public


Encapsulation: Accesseur et mutateur

1. Le prototype du getter

public type_attribut getAttribut()

2. Le prototype du setter

public void setAttribut( type_attribut val)


L’intérêt de l’encapsulation

1. Meilleure visibilité et cohérence (permet une plus grande


modularité)
2. Préservation de la sécurité des données (inaccessibles de
l’extérieur)
3. Facilité de la mise à jour des applications: (un projet réalisé par
plusieurs développeurs): Chaque développeur est responsable
d'une partie du projet. Si les classes dont il est le responsable
sont proprement encapsulées, il pourra modifier par la suite
leurs représentations internes, sans que cela perturbe le travail
des autres développeurs du projet susceptibles d'utiliser ces
classes.
Application

Afficher les coordonnées d’un point donné.

Compléter le code suivant pour pouvoir accéder aux


attributs privés x et y.

Vous aimerez peut-être aussi