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

Programmation Orientée Objet Avec Python: Enseignant: Austin Wao

Ce document traite de la programmation orientée objet en Python, en abordant des concepts clés tels que la construction de classes, les espaces de noms, le polymorphisme et l'héritage. Il fournit des exemples pratiques sur la création de classes, l'ajout d'attributs et de méthodes, ainsi que l'utilisation de constructeurs et d'accesseurs. Le document illustre également comment appliquer ces concepts à des scénarios concrets, comme la gestion d'élèves et la création de classes pour différents types de fruits.

Transféré par

luciefokou96
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)
2 vues42 pages

Programmation Orientée Objet Avec Python: Enseignant: Austin Wao

Ce document traite de la programmation orientée objet en Python, en abordant des concepts clés tels que la construction de classes, les espaces de noms, le polymorphisme et l'héritage. Il fournit des exemples pratiques sur la création de classes, l'ajout d'attributs et de méthodes, ainsi que l'utilisation de constructeurs et d'accesseurs. Le document illustre également comment appliquer ces concepts à des scénarios concrets, comme la gestion d'élèves et la création de classes pour différents types de fruits.

Transféré par

luciefokou96
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

Construction d'une classe

Les espaces de nom


Le polymorphisme
Héritage

Programmation Orientée Objet avec


Python
Enseignant:
Austin Wao

Novembre 2024 - wkaustins@[Link]

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Structure

Structure :
Construction d'une classe
Espaces de noms
Polymorphisme
Héritage
Accès et modications des attributs depuis l'extérieur

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

La classe minimale

Dénition
En Python, le mot-clé class permet de créer sa propre classe,
suivi du nom de cette classe. Ce nom doit commencer toujours
par une majuscule. Par exemple :
>>> class Citron :
...................... pass

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

La classe minimale

Dénition
En Python, le mot-clé class permet de créer sa propre classe,
suivi du nom de cette classe. Ce nom doit commencer toujours
par une majuscule. Par exemple :
>>> class Citron :
...................... pass
>>> citron1 = Citron() (création d'une une instance )

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Ajout d'un attribut d'instance

Reprenons notre classe Citron et l'instance citron1 créée


précédemment. Regardons les attributs et méthodes que cet
objet possède, puis tentons de lui ajouter un attribut :
>>> print(dir ( citron1 ))
[′ __class __′ ,′ __dict __′ , [...],′ __weakref __′ ]
L'objet possède de nombreuses méthodes ou attributs qui
commencent et qui se terminent par deux caractères
underscores.
les underscores indiquent qu'il s'agit de méthodes ou
attributs destinés au fonctionnement interne de l'objet

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Ajout d'un attribut d'instance

>>> [Link] = " jaune "


>>> print(dir(citron1))

[′ __class __′ ,′ __dict __′ , [...],′ __weakref __′ ,′ couleur ′ ]

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Ajout d'un attribut d'instance

>>> [Link] = " jaune "


>>> print(dir(citron1))

[′ __class __′ ,′ __dict __′ , [...],′ __weakref __′ ,′ couleur ′ ]


La notation [Link] donne accès à l'attribut de
l'objet
L'attribut nommé .__dict__ est particulièrement
intéressant. Il s'agit d'un dictionnaire qui listera les
attributs créés dynamiquement dans l'instance en cours

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Ajout d'un attribut d'instance

>>> citron1 = Citron ()


>>> print(citron1.__dict__)

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Ajout d'un attribut d'instance

>>> citron1 = Citron ()


>>> print(citron1.__dict__)
{}
>>> [Link] = " jaune "
>>> print(citron1.__dict__)

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Ajout d'un attribut d'instance

>>> citron1 = Citron ()


>>> print(citron1.__dict__)
{}
>>> [Link] = " jaune "
>>> print(citron1.__dict__)
{'couleur' : 'jaune '}
L'ajout d'un attribut depuis l'extérieur de la classe (on parle
aussi du côté  client ) avec une syntaxe
instance.nouvel_attribut = valeur, créera ce nouvel attribut
uniquement pour cette instance.

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les attributs de classe


Si on ajoute une variable dans une classe comme on créait une
variable locale dans une fonction, on crée ce qu'on appelle un
attribut de classe :
>>> class Citron :
couleur="jaune"
>>> citron1 = Citron()
>>> print([Link])
>>> citron2 = Citron()
>>> print([Link])

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les attributs de classe


Si on ajoute une variable dans une classe comme on créait une
variable locale dans une fonction, on crée ce qu'on appelle un
attribut de classe :
>>> class Citron :
couleur="jaune"
>>> citron1 = Citron()
>>> print([Link])
>>> citron2 = Citron()
>>> print([Link])
jaune
jaune
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les méthodes

une méthode est une fonction :


>>> class Citron :
couleur="jaune"
def coucou(self) :
print("Bonjour à tous")
>>> citron1 = Citron()
>>> [Link]()

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les méthodes

une méthode est une fonction :


>>> class Citron :
couleur="jaune"
def coucou(self) :
print("Bonjour à tous")
>>> citron1 = Citron()
>>> [Link]()
Bonjour à tous

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les méthodes
une méthode étant une fonction, elle peut aussi retourner une
valeur :
>>> class Citron :
couleur="jaune"
def recupererSaveur(self) :
return "acide"
>>> citron1 = Citron()
>>> saveur = [Link]()
>>> print(saveur)

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les méthodes
une méthode étant une fonction, elle peut aussi retourner une
valeur :
>>> class Citron :
couleur="jaune"
def recupererSaveur(self) :
return "acide"
>>> citron1 = Citron()
>>> saveur = [Link]()
>>> print(saveur)
acide
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Le constructeur

Lors de l'instanciation d'un objet à partir d'une classe, il


peut être intéressant de lancer des instructions comme
par exemple initialiser certaines variables. Pour cela, on
ajoute une méthode spéciale nommée .__init __() :
cette méthode s'appelle le constructeur de la classe
elle sert au fonctionnement interne de notre classe, et sauf
cas extrêmement rare, elle n'est pas supposée être lancée
comme une fonction classique par l'utilisateur de la classe
Ce constructeur est exécuté à chaque instanciation de
notre classe, et ne renvoie pas de valeur, il ne possède
donc pas de return.

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Le constructeur
Dans la mesure du possible, nous vous conseillons de
créer tous les attributs d'instance dont vous aurez besoin
dans le constructeur .__init __() plutôt que dans toute
autre méthode. Ainsi ils seront visibles dans toute la
classe dès l'instanciation.
Exemple :
class Citron :
def __init__(self, masse, couleur, saveur) :
[Link]=masse
[Link]=couleur
[Link]=saveur
citron1 = Citron(20,"verte","Acide")
print([Link])
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Le constructeur
Dans la mesure du possible, nous vous conseillons de
créer tous les attributs d'instance dont vous aurez besoin
dans le constructeur .__init __() plutôt que dans toute
autre méthode. Ainsi ils seront visibles dans toute la
classe dès l'instanciation.
Exemple :
class Citron :
def __init__(self, masse, couleur, saveur) :
[Link]=masse
[Link]=couleur
[Link]=saveur
citron1 = Citron(20,"verte","Acide")
print([Link])
verte
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les accesseurs et seteurs


l'accès et la modication des attributs d'une instance
d'une classe doit se fait à travers des méthodes
des méthodes permettant de d'accéder (accesseurs) et de
modier (seteurs) ces attributs
ces méthodes ont généralement pour initial get (respset)
suivi du nom de la variable
Exemple :
class Citron :
def setMasse(self, masse) :
[Link]=masse
def getMasse(self) :
return [Link]
citron1 = Citron(20,"verte","Acide")
print([Link]())
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les accesseurs et seteurs


l'accès et la modication des attributs d'une instance
d'une classe doit se fait à travers des méthodes
des méthodes permettant de d'accéder (accesseurs) et de
modier (seteurs) ces attributs
ces méthodes ont généralement pour initial get (respset)
suivi du nom de la variable
Exemple :
class Citron :
def setMasse(self, masse) :
[Link]=masse
def getMasse(self) :
return [Link]
citron1 = Citron(20,"verte","Acide")
print([Link]())
20 Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les accesseurs et seteurs


Exemple(suite) :
[Link](50)
print([Link]())

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Les accesseurs et seteurs


Exemple(suite) :
[Link](50)
print([Link]())
50
Application : Gestion des élèves
Créer une classe Eleve contenant les attributs : Nom,
prenom, age, moyenne
Créer les accesseurs et les seteurs respectifs
Ecrire un script qui demande à un utilisateur d'entrer les
informations de 5 élèves. Les informations d'un élève sont
stockées dans une instance de la classe Eleve. Toutes les
instances sont stockées dans une liste
écrire un script qui détermine et ache le nom et prénom
de l'élève le plus âgé
ecrire un scriptAustinquiWao
augmente de +2 la moyenne de
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Espace de noms

Dénition
un espace de noms est déni comme suit :  a namespace
is a mapping from names to objects 
Un espace de noms est une correspondance entre des
noms et des objets
Un espace de noms peut être vu aussi comme une capsule
dans laquelle on trouve des noms d'objets.
Par exemple, le programme principal ou une fonction
représentent chacun un espace de noms

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Espace de noms

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Espace de noms

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Espace de noms

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Espace de noms

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Le polymorphisme
Dans la vie, celui-ci évoque la capacité à prendre plusieurs
apparences, qu'en est-il en programmation ?
En programmation, le polymorphisme est la capacité
d'une fonction (ou méthode) à se comporter
diéremment en fonction de l'objet qui lui est passé. Une
fonction donnée peut donc avoir plusieurs dénitions.
Un exemple concret de polymorphisme : la fonction
Python sorted() va trier par ordre ASCII si l'argument est
une chaîne de caractères, et elle va trier par ordre
croissant lorsque l'argument est une liste d'entiers
sorted (" citron ")
[′ c ′ ,′ i ′ ,′ n′ ,′ o ′ ,′ r ′ ,′ t ′ ]
sorted ([1 , -67, 42, 0, 81])
[−67, 0, 1, 42, 81]
Application : Gestion des élèves
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Dénition

Dénition
En programmation, l'héritage est la capacité d'une classe
d'hériter des propriétés d'une classe pré-existante. On
parle de classe mère et de classe lle. En Python,
l'héritage peut être multiple lorsqu'une classe lle hérite
de plusieurs classes mères
En Python, lorsque l'on veut créer une classe héritant
d'une autre classe, on ajoutera après le nom de la classe
lle le nom de la ou des classe(s) mère(s) entre
parenthèses

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Exemple
Dans l'exemple suivant, la classe Fille1 hérite de la classe
Mere1 et la classe Fille2 hérite des deux classes Mere1 et
[Link] le cas de la classe Fille2, on parle d'héritage
multiple

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Exemple

Un salut de la classe lle !


Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Exemple d'application
Nous allons maintenant prendre un exemple un peu plus
conséquent pour illustrer la puissance de l'héritage en
programmation
D'abord quelques mots à propos de la conception.
Imaginons que nous souhaitions créer plusieurs classes
correspondant à nos fruits favoris ! par exemple le citron
(comme par hasard !), l'orange, le kaki, etc
Chaque fruit a ses propres particularités, mais il y a aussi
de nombreux points communs.
Nous pourrions donc concevoir une classe Fruit
permettant, par exemple, d'instancier un fruit et ajouter
des méthodes d'achage commune à n'importe quel fruit
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Exemple d'application

et ajouter (ou toute autre méthode) pouvant être utilisée


pour n'importe quel fruit
Nous pourrions alors créer des classes comme Citron,
Orange, etc., héritant de la classe Fruit et ainsi nous
économiser des lignes de code identiques à ajouter pour
chaque fruit

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Exemple d'application

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Exemple d'application

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Travaux Dirigés
Task1
Récupérer le script [Link] qui implémente la classe
Rectangle. Complétez le programme principal pour que le
script :
Classe Rectangle
crée une instance rectangle de la classe Rectangle ;
ache les attributs d'instance largeur, longueur et coul ;
calcule et ache la surface de rectangle ;
ache une ligne vide ;
change le rectangle en carré de 30 m de côté ;
calcule et ache la surface de ce carré ;
crée une autre instance rectangle2 aux dimensions et à la
couleur que vous souhaitez et qui ache les attributs et
la surface de Austin
ce nouveau
Wao
rectangle
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Travaux Dirigés

Exercice 1 : Classe Rectangle améliorée


Entraînez-vous avec la classe Rectangle. Créez la méthode
calcule_perimetre() qui calcule le périmètre d'un objet
rectangle. Testez sur un exemple simple (largeur = 10 m,
longueur = 20 m).
Exercice2 : Classe Pylône
Créez une nouvelle classe Pylone avec les attributs x, y, z (qui
contiennent les coordonnées cartésiennes) et la méthode
calcul_distance() qui calcule la distance entre deux pylônes.
Testez cette classe sur plusieurs exemples

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Travaux Dirigés

Exercice 3 : Classe Rectangle améliorée


Dénissez une classe Cercle(). Les objets construits à partir de
cette classe seront des cercles de tailles variées. En plus de la
méthode constructeur (qui utilisera donc un paramètre rayon),
vous dénirez une méthode surface(), qui devra renvoyer la
surface du cercle. Dénissez ensuite une classe Cylindre()
dérivée de la précédente. Le constructeur de cette nouvelle
classe comportera les deux paramètres rayon et hauteur. Vous
y ajouterez une méthode volume() qui devra renvoyer le
volume du cylindre (rappel : volume d'un cylindre = surface de
section x hauteur).

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Travaux Dirigés

Exercice 4 : Classe Rectangle améliorée


Complétez l'exercice précédent en lui ajoutant encore une
classe Cone(), qui devra dériver cette fois de la classe
Cylindre(), et dont le constructeur comportera lui aussi les
deux paramètres rayon et hauteur. Cette nouvelle classe
possédera sa propre méthode volume(), laquelle devra renvoyer
le volume du cône (rappel : volume d'un cône = volume du
cylindre correspondant divisé par 3).

Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Travaux Dirigés

Exercice 5 : Classe Domino


Dénissez une classe Domino() qui permette d'instancier des
objets simulant les pièces d'un jeu de dominos. Le
constructeur de cette classe initialisera les valeurs des points
présents sur les deux faces A et B du domino (valeurs par
défaut = 0). Deux autres méthodes seront dénies :
une méthode affiche _points() qui ache les points
présents sur les deux faces
une méthode valeur() qui renvoie la somme des points
présents sur les 2 faces
.
Austin Wao
Construction d'une classe
Les espaces de nom
Le polymorphisme
Héritage

Travaux Dirigés
Exercice 6 : Classe CompteBancaire
Dénissez une classe CompteBancaire(), qui permette
d'instancier des objets tels que compte1, compte2, etc. Le
constructeur de cette classe initialisera deux attributs
d'instance nom et solde, avec les valeurs par défaut 'Ngono' et
1000. Trois autres méthodes seront dénies :
depot(somme) permettra d'ajouter une certaine somme
au solde ;
retrait(somme) permettra de retirer une certaine
somme du solde ;
ache() permettra d'acher le nom du titulaire et le
solde de son compte
. Austin Wao

Vous aimerez peut-être aussi