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

Course - Python - Poo III

Transféré par

zouibetabdessamade
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)
0 vues17 pages

Course - Python - Poo III

Transféré par

zouibetabdessamade
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

Encapsulation et visibilité

Protéger les données de vos objets

La sécurité des données


Ch4. Programmation Orienté Objets (POO)

Encapsulation et visibilité

L'encapsulation est un principe fondamental de l'orientation objet en Python.


Il protège vos classes contre les modifications ou suppressions accidentelles et
favorise la réutilisation et la maintenabilité du code.

Niveaux de visibilité en Python

Public Protégé Privé

[Link] = nom self._nom = nom self.__nom = nom


Syntaxe: Sans préfixe Syntaxe: Un underscore _ Syntaxe: Deux underscores __

Accessible de partout. Convention: « ne pas toucher »


Difficile d'accès depuis l'extérieur.
Convention: utiliser directement. Accessible mais déconseillé.

Pourquoi Encapsuler ?
Protection des Données Validation

Empêcher les modifications Contrôler les valeurs avant


accidentelles ou malveillantes modification (ex: âge > 0)

03.04.26 140
Ch4. Programmation Orienté Objets (POO)

Encapsulation et visibilité

Niveaux de visibilité en Python


Public

Protégé

Privé

03.04.26 141
Ch4. Programmation Orienté Objets (POO)

Encapsulation et visibilité

Getters, Setters et @property

Getters & Setters est un concept très important dans l'orienté Objets :

▪ Getter : méthode qui renvoie la valeur d’un attribut privé.


▪ Setter : méthode qui modifie la valeur d’un attribut privé.

Le principe consiste à ne pas exposer directement les données mais des


méthodes publiques

03.04.26 142
Ch4. Programmation Orienté Objets (POO)

Encapsulation et visibilité

Getters, Setters et @property

Approche Traditionnelle

Accès aux attributs

Validation et Modification

Pour les autres langages de programmation


POO cette façon d’utilisation est parfait, mais
pour python c’est « Verbeux », pas
Pythonique

03.04.26 143
Ch4. Programmation Orienté Objets (POO)

Encapsulation et visibilité

Getters, Setters et @property

Approche Pythonique

On utilise le décorateur @property + setter


associé au lieu des méthodes get() et set()
Syntaxe @property

@property

Définit le getter.
Permet d'accéder comme un attribut.

@[Link]
Définit le setter.
Permet de modifier avec validation.

03.04.26 144
Ch4. Programmation Orienté Objets (POO)

Encapsulation et visibilité

Getters, Setters et @property

▪ Python ne bloque pas réellement l’accès aux attributs privés, mais le rend plus difficile.

▪ L’encapsulation est surtout une convention en Python, pas une contrainte stricte.

▪ On utilise souvent des getters et setters (ou @property) pour contrôler l’accès aux données

▪ Les vrais getters/setters sont rares sauf si validation / logique nécessaire.

03.04.26 145
Ch4. Programmation Orienté Objets (POO)

Encapsulation et visibilité

Exercice : Classe Sécurisée


Solution Complete

Créer une classe Compte avec encapsulation complète:

▪ Attributs privés : __titulaire, __solde

▪ Getter pour titulaire (lecture seule)

▪ Getter/Setter pour solde avec validation

▪ Méthodes: deposer(), retirer() avec verifications

Contraines

▪ Solde initial ≥ 0

▪ Retrait impossible si solde insuffisant

▪ Dépôt > 0 uniquement

03.04.26 146
Héritage
Réutiliser et étendre le code avec l'héritage

La réutilisation
du code
Ch4. Programmation Orienté Objets (POO)

Héritage
Principe de l’héritage

Définition
L'héritage permet à une classe d'acquérir les attributs et méthodes d'une autre classe.
Cela favorise la réutilisabilité du code.
Personne

Relation « est-un »
+ nom
+ age
Un étudiant est une Personne.
+ sePresenter()
Un Chien est un Animal.
➔ La classe enfant hérite du comportement parent.

Syntaxe: Étudiant
+ universite
+ etudier()
➔ Et on dit class Enfant (ex. Etudiant) hérite de la classe Parent (ex. Personne)

03.04.26 148
Ch4. Programmation Orienté Objets (POO)

Héritage
Principe de l’héritage
Classe Parent (Base)

Personne
+ nom
+ age
+ sePresenter()
Classe Enfant (Dérivée)

Étudiant
+ universite
+ etudier()

03.04.26 149
Ch4. Programmation Orienté Objets (POO)

Héritage
Principe de l’héritage
Exemple

03.04.26 150
Ch4. Programmation Orienté Objets (POO)

Héritage
Principe de l’héritage
Exemple

03.04.26 151
Ch4. Programmation Orienté Objets (POO)

Héritage
Principe de l’héritage
Exemple

03.04.26 152
Ch4. Programmation Orienté Objets (POO)

Héritage
super() et redéfinition des méthodes

La Fonction super()

Appeler une méthode de la classe parent. Essentiel dans


le constructeur __init__ pour initialiser les attributs hérités.

✓ Évite la duplication de code


✓ Fonctionne avec l'héritage multiple
✓ Plus maintenable

Syntaxe:

03.04.26 153
Ch4. Programmation Orienté Objets (POO)

Héritage
super() et redéfinition des méthodes
Redéfinition des méthodes (Override)

Deux approches: Redéfinition complète (remplace) ou extension (super() + ajout).

03.04.26 154
Ch4. Programmation Orienté Objets (POO)

Héritage

Exercice : Hiérarchie de Véhicules


Solution Complète
Créer le code Python équivalent à
l’hiérarchie de classes suivante :

Vehicule
+ marque
+ modele
+ annee
+ demarrer()

Voiture Moto
+ nombrePortes + cylindree
+ klaxonner() + cabrer()

▪ Utiliser super() dans les constructeurs


▪ Redéfinir demarrer() dans chaque classe
enfant
▪ Ajouter des méthodes spécifiques

03.04.26 155

Vous aimerez peut-être aussi