Chapitre 4_ Encapsulation.pptx

Document Details

FeatureRichFeministArt6354

Uploaded by FeatureRichFeministArt6354

ESPRIT

Tags

Java programming encapsulation object-oriented programming programming concepts

Full Transcript

Conception Orienté Objet et Programmation Java Chapitre 4: Encapsulation Objectifs du chapitre Notion de package Encapsulation des classes Encapsulation des attributs Encapsulation des méthodes 2 Package Les packages en Java sont un méc...

Conception Orienté Objet et Programmation Java Chapitre 4: Encapsulation Objectifs du chapitre Notion de package Encapsulation des classes Encapsulation des attributs Encapsulation des méthodes 2 Package Les packages en Java sont un mécanisme de regroupement de classes qui permet de structurer les fichiers de votre projet en catégories logiques. Les paquetages (packages) sont organisés hiérarchiquement comme des répertoires de classes. ⇒ Package = répertoire. 3 Package Project Déclaration d’un package1 package package package1; ClassA Import d’un package ClassB import package2.ClassC; //importer une seule Classe package2 import package2.*; //importer toutes les Classes sous le package ClassC ClassD Package21 ClassE 4 Package Déclaration d’un package Structure de projet Import d’un package 5 Package ll existe également des packages qui sont automatiquement importés pour chaque classe Java d'une façon implicite. Ex: Les classes du package “java.lang” (String, Integer, Boolean,Object ….). Il existe un package par défaut en Java, appelé "default package", qui est utilisé pour les classes qui ne sont pas explicitement déclarées dans un package. Ces classes ne sont accessibles que par celles qui se trouvent dans le même package par défaut. 6 Encapsulation L'encapsulation est un concept qui consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. L'encapsulation est une manière de définir une classe de telle sorte que ses attributs ne puissent pas être directement manipulés de l'extérieur de la classe, mais seulement indirectement par l'intermédiaire des méthodes. 7 Encapsulation L'encapsulation peut être appliquée à différents éléments, notamment : Les classes : vous pouvez contrôler qui peut accéder aux classes. Les constructeurs : vous pouvez contrôler qui peut instancier les classes. Les variables d'instance : vous pouvez contrôler qui peut accéder aux variables d'instance de votre classe. Les méthodes : vous pouvez contrôler qui peut appeler les méthodes de votre classe. 8 Encapsulation Java offre 4 modificateurs d’accès: public : accès non contrôlé private : accès limité à la classes courante protected : accès limité au membre du package et à ses descendants (classes filles) default : accès limité au membre du package. Il n'existe pas de mot clef pour ce type de modificateur, de ce fait si aucun mot clé parmi public, private ou protected n'est utilisé alors l'élément est considéré comme étant par défaut. 9 Encapsulation des classes (1/3) Les classes peuvent uniquement être publiques ou par défaut. 10 Encapsulation des classes (2/3) public public class A { … } class B { class C extends A { class D { A a; A a; A a; … … … } } } Une classe public est visible depuis n’importe quelle classe du projet. 11 Encapsulation des classes (3/3) default class A { … } class B { class C extends A { class D { A a; A a; A a; … … … } } } Une classe default est visible seulement par les classes de son package. 12 Encapsulation des attributs (1/4) public public class A { public int x; … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a.x = t ; a.x = t ; a.x = t ; this.x = t ; } } } Un attribut public est visible par toutes les classes 13 Encapsulation des attributs (2/4) private public class A { private int y; … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a. y = t; a. y = t; a. y = t; y= t; } } } Un attribut private n'est accessible que depuis l'intérieur même de la classe. 14 Encapsulation des attributs (3/4) default public class A { int z; … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a.z = t; a.z = t; a.z = t; z= t; } } } La variable default n'est accessible que depuis les classes du même package. 15 Encapsulation des attributs (4/4) protected public class A { protected int w; … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a.w = t; a.w = t; a.w = t; this.w= t; } } } Un attribut 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.) 16 Encapsulation des méthodes(1/4) public public class A { public void meth1(){ } … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a.meth1() ; a.meth1() ; a.meth1() ; this.meth1(); } } } Une méthode public est visible par toutes les classes 17 Encapsulation des méthodes(2/4) private public class A { private void meth2(){ } … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a.meth2() ; a.meth2(); a.meth2() ; meth2(); } } } Une méthode private n'est accessible que depuis l'intérieur de sa 18 classe. Encapsulation des méthodes(3/4) default public class A { void meth3(){ } … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a.meth3() ; a.meth3(); a.meth3() ; meth3(); } } } Une méthode default n'est accessible que depuis les classes du 19 même package. Encapsulation des méthodes(4/4) protected public class A { protected void meth3(){ } … } class B { class C extends A { class D { A a=new A(); A a=new A(); A a=new A(); a.meth4() ; a.meth4(); a.meth4(); this.meth4(); } } } Une méthode protected est accessible aux classes du même package et à ses sous-classes (même si elles sont définies dans un package différent.) 20 Encapsulation des méthodes/attributs Modificateur Classe Paquetage Classe fille Autre classe private visible default visible visible visible* (même package) (même package) protected visible visible visible public visible visible visible visible *Les sous-classes peuvent accéder aux attributs et aux méthodes de la 21 classe mère si elles se trouvent dans le même package Les accesseurs (GET) et les mutateurs (SET) Les accesseurs ("getters") et les mutateurs ("setters") sont des méthodes spéciales qui permettent d'accéder et de modifier les attributs d'un objet. Les accesseurs sont utilisés pour lire la valeur d'une propriété, tandis que les mutateurs sont utilisés pour en changer la valeur. Attention : Les setter et les getter doivent être déclarés public 22 Les accesseurs (GET) et les mutateurs (SET) Les accesseurs sont généralement Les mutateurs sont généralement définis avec le mot-clé "get" suivi définis avec le mot-clé "set" suivi du nom de la propriété, par du nom de la propriété, par exemple : exemple : public class Product { public class Product { private int quantity; private int quantity; public void setQuantity(int quantity) { public int getQuantity() { this.quantity = quantity; return quantity; } } } } 23 Les accesseurs (GET) et les mutateurs (SET) L’accesseur d'un attribut booléen (boolean) s'écrit avec le "is", exemple : public class Product { private boolean onSale; public int isOnSale() { return onSale; } } 24 Les accesseurs (GET) et les mutateurs (SET) L’utilisation des getter et setter permet de gérer les modifications de manière centralisée et de valider les entrées avant de les enregistrer. public class Product { private int quantity; public void setQuantity(int quantity) { if (quantity < 0) System.out.println("The quantity must be a positive number"); else this.quantity = quantity; } } 25 Merci pour votre attention 26

Use Quizgecko on...
Browser
Browser