TP5 Encapsulation

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Institut Supérieur d’Informatique de Mahdia

Année universitaire : 2023-2024 – 2ème Semestre

Matière : TP Programmation Python Avancé


Enseignantes : Nesrine Blel & Malak Zaouali
Niveau : LCS-GLSI 2

TP5 : L’Encapsulation en Python


NB : Vous devrez envoyer un compte rendu à ce Courriel : [email protected]
sous l’objet : TP5/6 - GLSI2 (B/C/D) - (G1/G2) - votre nom et prénom.

Rappel :

L'encapsulation est une manière de définir une classe de telle sorte que ses
attributs/méthodes ne puissent pas être manipulés depuis l'extérieur. Cela permet de cacher les
détails d'implémentation et de protéger les données sensibles en les rendant privées (protégées).
Les méthodes publiques sont ensuite utilisées pour accéder et modifier ces données d’une
manière contrôlée.

L'encapsulation est utilisée dans de nombreux Domaines, tel que le développement


logiciel : elle est utilisée pour organiser le code en modules et en classes, ce qui facilite la
réutilisation du code et la collaboration entre les développeurs. Les détails d'implémentation
sont encapsulés à l'intérieur des modules, ce qui permet de limiter/éviter les modifications
involontaires.

Les systèmes bancaires et financiers utilisent l'encapsulation pour protéger les


informations sensibles des clients, telles que les soldes de compte et les données personnelles.

Dans le domaine de la santé, l'encapsulation est utilisée pour protéger les dossiers
médicaux des patients. Les informations médicales sensibles sont encapsulées dans des
systèmes informatiques sécurisés, et l'accès à ces informations est contrôlé par des protocoles
stricts pour garantir la confidentialité des patients.

Les entreprises aussi utilisent des systèmes de gestion des ressources humaines qui
encapsulent les informations sur les employés, telles que les données personnelles et les
informations de paie. L'encapsulation garantit que seules les personnes autorisées ont accès à
ces informations.

Exemple : Soit la classe Person :

1
Donc on peut écrire :

Ce qui est Bizarre d’avoir un tel nom et un tel âge. Pour éviter d’avoir un changement du code
ou une faute de frappe, Python/POO propose de rendre ces paramètres privés. En mettant « »
avant le nom du paramètre.

1) Getter & Setter :

Qt1 : Que remarquez-vous ?

Comment devrions-nous maintenant obtenir/modifier d’une manière légale le nom et l'âge


d'une personne ?

 Il existe deux méthodes Getter ‘get_’ et Setter ‘set_’ qui peuvent être utilisées pour
accéder aux valeurs :

2
2) Les décorateurs :

Pour des raisons de lisibilité et pour contrôler l’accès et la modification de certains attributs,
Python met en place une classe nommée property. Tel que nous pouvons remplacer les
méthodes Getter et Setter par :

Getter : La méthode décorée par @property est utilisée comme getter. Elle est appelée lorsque
vous accédez à l'attribut de propriété.

Setter : La méthode décorée par @<nom_de_la_propriété>.setter est utilisée comme setter.


Elle est appelée lorsque vous attribuez une nouvelle valeur à l'attribut de propriété.

Mettons à jour notre Code !

Exercice 1 :

Vous devez créer une classe CompteBancaire qui représente un compte bancaire avec un solde.
Cette classe devra utiliser les décorateurs property pour définir des méthodes d'accès sécurisées
pour le solde du compte.

1. La classe CompteBancaire doit avoir un attribut privé _solde pour stocker le solde du
compte.

3
2. Utilisez le décorateur @property pour définir une méthode solde qui agit comme un
getter pour l'attribut _solde. Cette méthode devrait simplement renvoyer la valeur
actuelle du solde.
3. Utilisez le décorateur @solde.setter pour définir une méthode solde qui agit comme un
setter pour l'attribut _solde. Cette méthode devrait vérifier que le nouveau solde est un
nombre positif. Sinon, un message d'erreur s’affichera.

Exercice 2 :

Créez une classe Voiture qui représente une voiture avec une vitesse maximale.

1. La classe Voiture doit avoir un attribut privé _vitesse_maximale pour stocker la vitesse
maximale de la voiture.
2. Utilisez le décorateur @property pour définir une méthode vitesse_maximale qui agit
comme un getter pour l'attribut _vitesse_maximale.
3. Utilisez le décorateur @vitesse_maximale.setter pour définir une méthode
vitesse_maximale qui agit comme un setter pour l'attribut _vitesse_maximale. Cette
méthode devrait vérifier que la nouvelle vitesse maximale est un nombre positif.

Exercice 3 :

Créez une classe « votre_nom_prénom » pour représenter vos informations. A vous de choisir
les attributs et les décorateurs à utiliser. (minimum 6 attributs)

Vous aimerez peut-être aussi