Programmation orientée objet (POO)
Programmation orientée objet (POO)
Définition
La programmation orientée objet se base sur la modélisation des classes et objets suivant
le formalisme UML (Unified Modeling Language )
La modélisation objet consiste à créer une représentation abstraite, sous forme d'objets,
d'entités ayant une existence matérielle (arbre, personne, téléphone, ...) ou bien virtuelle
(sécurité sociale, compte bancaire, ...).
Un objet est une entité qui va pouvoir contenir un ensemble de fonctions et de variables
(attributs).
I-Modélisation UML :
Une classe se représente avec UML sous forme d'un rectangle divisé en trois sections.
Le premier contient le nom donné à la classe (non souligné). Les attributs d'une classe
sont définis par un nom, un type (éventuellement une valeur par défaut, c'est-à-dire une
valeur affectée à la propriété lors de l'instanciation) dans le second compartiment. Les
opérations sont répertoriées dans le troisième volet du rectangle.
1|Page Hazar BOUZOURRA
Programmation orientée objet (POO)
Classes :
On appelle classe la structure d'un objet, c'est-à-dire la déclaration de l'ensemble des
entités qui composeront un objet.
Objet : est une instanciation d'une classe, c'est la raison pour laquelle on pourra
parler indifféremment d'objet ou d'instance (éventuellement d'occurrence).
Une classe est composée :
• D’attributs (propriétés) : il s'agit des données, dont les valeurs représentent
l'état de l'objet
• Les méthodes : il s'agit des opérations applicables aux objets
II-Les classes et les objets en Python
II.1 Déclaration d’une classe : notions de constructeur et d’attributs
Dans le langage Python, la création d’un objet de classe nécessite ces étapes :
1. Déclaration à l'aide l'instruction class
2. Déclaration du constructeur par la méthode __init__ ()
3. Affectation des paramètres aux attributs via l'instruction self
4. Instanciation (voir l’exemple suivant)
II.2 Construction d’une instance de Point géométrique
➢ A partir de cet exemple, on se propose de modéliser un point géométrique. On
crée la classe Point ayant pour attributs les coordonnées x et y et comme
méthodes, les fonctions suivantes : déplacer un point ou mesurer une distance
entre deux points etc.
➢ Après, on crée les objets point_1 et point_2 qui présentent les instances de la
classe Point.
2|Page Hazar BOUZOURRA
Programmation orientée objet (POO)
Point
X (abscisse du point)
Y (ordonnée du point)
deplacer ()
distance ()
3|Page Hazar BOUZOURRA
Programmation orientée objet (POO)
4|Page Hazar BOUZOURRA
Programmation orientée objet (POO)
III- Héritage
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 fille.
Exemple :
❖ Créer une classe « Personne » avec les attributs (firstname, age) qui sait dire
‘Salut’ : méthode ‘direSalut()’.
❖ Créer une classe « Etudiant » et une autre classe « Enseignant ». Les deux
héritent la classe « Personne ».
❖ La classe « Etudiant » aura un nouvel attribut ‘fclasse’ et deux méthodes. La
méthode ‘ Afficher_identite()’ qui affiche l’identité de l’étudiant et la
méthode « etudier() », qui affichera à l’écran « Je vais étudier à l’université ».
❖ La classe « Enseignant » aura une méthode « Expliquer () », qui affichera à
l’écran « L’explication du cours a commencé ».
Personne
Fname
Age
Dire_salut()
Etudiant Enseignant
fclasse
Afficher_Identite()
Etudier() Expliquer()
5|Page Hazar BOUZOURRA
Programmation orientée objet (POO)
❖ Créer un objet Etudiant, définir son nom, son âge et sa filière, par
exemple ‘Adem','15 ans’, ‘filière Géomatique.
Faites-lui dire « Salut », afficher son identité et « Je vais étudier à
l’Université. ».
❖ Créer un objet Enseignant, demandez-lui de dire « salut » puis de
commencer l’explication.
Résultat :
6|Page Hazar BOUZOURRA
Programmation orientée objet (POO)
Script Python
#classe Personne
class Personne:
#constructeur
def __init__(self,fname ,age):
#attributs
[Link] = fname
[Link] = age
#Méthode
def direSalut(self):
print('Salut')
#héritage
#classe Etudiant
class Etudiant (Personne):
#Constructeur
def __init__ (self, fname,age, fclasse):
Personne.__init__(self, fname, age)
[Link] = fclasse
#----------------------------------------------------------------------
# Méthodes
def Afficher_Identite(self):
print('Je suis :','{} {} {}'.format([Link],[Link],[Link]))
def Etudier(self):
print('je vais étudier à l université ')
class Enseignant(Personne):
# Constructeur
def __init__(self, fname,age):
Personne.__init__(self, fname, age)
def Expliquer(self):
print('L explication du Cours a commencé')
#-------------------------------------------------------------------
e=Etudiant('Adem','15 ans','filière Géomatique')
[Link]()
e.Afficher_Identite()
[Link]()
tech= Enseignant('Anis','35')
[Link]()
[Link]()
7|Page Hazar BOUZOURRA