Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| sio:bloc2:poo:rappels [2024/09/03 11:06] – supprimée - modification externe (Date inconnue) 127.0.0.1 | sio:bloc2:poo:rappels [2024/09/11 20:19] (Version actuelle) – [Polymorphisme d'héritage] jcheron | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Rappels ====== | ||
| + | ===== Encapsulation ===== | ||
| + | L' | ||
| + | L' | ||
| + | |||
| + | ==== Types d' | ||
| + | |||
| + | ^Accès ^Rôle | | ||
| + | | Privé (private) |Accessibilité dans l' | ||
| + | | Protégé (protected) |id Privé + Accessibilité dans les classes dérivées | | ||
| + | | Public (public) |id Protégé + Accessibilité de l' | ||
| + | |||
| + | === Exemples java=== | ||
| + | == Private == | ||
| + | |||
| + | <sxh java; | ||
| + | public class Base { | ||
| + | private int member; | ||
| + | public int getMember(){ | ||
| + | //Accès possible à this.member ou member sur l' | ||
| + | return this.member; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | == Protected == | ||
| + | |||
| + | <sxh java; | ||
| + | public class Base { | ||
| + | protected int pMember; | ||
| + | |||
| + | public int getpMember() { | ||
| + | return pMember; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public class Derivee extends Base { | ||
| + | public void maminpulePMember(){ | ||
| + | //Accès possible à this.member ou member sur l' | ||
| + | System.out.println(this.pMember); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | == Public == | ||
| + | |||
| + | <sxh java; | ||
| + | public class Base { | ||
| + | protected int pMember; | ||
| + | public static int count; | ||
| + | |||
| + | public int getpMember() { | ||
| + | return pMember; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | public class Programme { | ||
| + | |||
| + | /** | ||
| + | * @param args | ||
| + | */ | ||
| + | public static void main(String[] args) { | ||
| + | Base b=new Base(); | ||
| + | //Accès au membre public de classe count | ||
| + | Base.count++; | ||
| + | //Accès au membre public getpMember sur une instance de Base | ||
| + | System.out.println(b.getpMember()); | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Règles de mise en oeuvre ==== | ||
| + | |||
| + | Les membres de données ne doivent jamais être à portée publique, excepté les membres de données statiques (de classe). | ||
| + | Il est ensuite possible de contrôler l' | ||
| + | |||
| + | ==== Méthodes d' | ||
| + | |||
| + | === Accesseur en lecture === | ||
| + | Le rôle d'un accesseur en lecture est de retourner la valeur d'un membre privé. | ||
| + | |||
| + | <sxh java; | ||
| + | public int getpMember() { | ||
| + | return pMember; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Accesseur en écriture (modificateur) === | ||
| + | |||
| + | Le rôle d'un accesseur en écriture est de permettre la modification d'un membre privé, par affectation de la valeur passée en paramètre. | ||
| + | |||
| + | <sxh java; | ||
| + | public void setpMember(int pMember) { | ||
| + | this.pMember=pMember; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Construction d' | ||
| + | |||
| + | Un constructeur est une méthode d'une classe permettant l' | ||
| + | On parle dans ce cas de surcharge (overloading).\\ | ||
| + | Le rôle d'un constructeur est de permettre de créer des instances d' | ||
| + | |||
| + | ===== Polymorphisme d' | ||
| + | Le polymorphisme est un concept permettant de simuler le changement de comportement ou de forme d'un objet, au cours de l' | ||
| + | |||
| + | **Exemple de mise en oeuvre :**\\ | ||
| + | Soit une classe **Animal** abstraite, ayant pour Classes dérivées **Cloporte** et **Limace**. | ||
| + | Le polymorphisme se met en place grâce à la spécialisation (héritage + surdéfinition des méthodes).\\ | ||
| + | Il permettra d' | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | La classe Animal est abstraite (il n'est pas possible d' | ||
| + | |||
| + | <sxh java; | ||
| + | public abstract class Animal{ | ||
| + | int position; | ||
| + | public abstract void avancer(); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Les classes **Limace** et **Cloporte** héritent de **Animal** et surdéfinissent la méthode **avancer** : | ||
| + | |||
| + | <sxh java; | ||
| + | public class Limace{ | ||
| + | @Override | ||
| + | public void avancer(){ | ||
| + | this.position++; | ||
| + | this.laisserTraceDe(bave); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <sxh java; | ||
| + | public class Cloporte{ | ||
| + | @Override | ||
| + | public void avancer(){ | ||
| + | this.position=this.position+2; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Dans un programme, l' | ||
| + | |||
| + | <sxh java; | ||
| + | Animal unAnimal; | ||
| + | ... | ||
| + | unAnimal.avancer(); | ||
| + | </ | ||
| + | ===== Interface ===== | ||
| + | Une **Interface** permet en POO de définir le comportement que devront implémenter une ou plusieurs classes. | ||