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

Module 6

Transféré par

Miryam Mel
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

Thèmes abordés

  • modèle de classe,
  • protons,
  • dérivation de classe,
  • modification d'objet,
  • variables membres,
  • attributs d'instance,
  • protection des attributs,
  • données,
  • encapsulation,
  • valeurs par défaut
0% ont trouvé ce document utile (0 vote)
35 vues22 pages

Module 6

Transféré par

Miryam Mel
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

Thèmes abordés

  • modèle de classe,
  • protons,
  • dérivation de classe,
  • modification d'objet,
  • variables membres,
  • attributs d'instance,
  • protection des attributs,
  • données,
  • encapsulation,
  • valeurs par défaut

PARADIGMES DE PROGRAMMATION

DIPLÔME DE FORMATION D’INGÉNIEURS EN INFORMATIQUE (FI-A1)

Module 6

Mondher Bouden

2024-2026
Programmation orientée objet
Caractéristiques
• Le paradigme procédural permet d’appeler des
procédures en leur fournissant éventuellement les
données nécessaires à faire les traitements
souhaités.
– Les données et les procédures sont donc traitées
indépendamment les unes des autres.
• La programmation orientée objet (POO) consiste en
la définition et l'interaction d’objets contenant à la
fois les données (i.e. attributs) et les traitements (i.e.
méthodes).
– Permettant une meilleure modélisation du monde réel.
Objets
• Les objets représentent des concepts, des idées ou des
entités du monde réel, comme une personne, une
voiture, une table, etc.
– Imaginons par exemple un objet "employé", qui aurait
comme attributs un numéro d'employé, un nom et un
prénom, un salaire annuel, etc.
– Un exemple de méthode serait donner_promotion(self,
montant_augmentation), une fonction modifiant l'objet
employé.
– On accède à l'objet via le premier paramètre spécial self,
qui sera automatiquement remplacé par l'objet actif
lorsqu'on appelle la méthode.
Classes
• Une classe est la définition d'un objet. Elle contient la
définition du contenu de l'objet:
– Attributs (appelées aussi variables membres)
– Méthodes (qui sont simplement des fonctions qui agissent sur les
variables membres).
• Une classe peut être vue comme un "moule" à objets :
– On l'utilise pour créer de nouvelles instances qui sont simplement
des objets.
• On peut créer un nombre quelconque d'instances et chaque
instance contiendra des valeurs de variables membres qui lui
sont propres.
• Par exemple, une compagnie emploie plusieurs employés,
avec des numéros, noms et salaires qui leur sont propres.
Encapsulation
• En théorie, une classe protège ses attributs en ne permettant
leur modification qu'au travers de ses méthodes.
– On appelle ceci son interface publique.
• Par défaut en Python, un attribut est directement manipulable
et fait partie de l'interface publique de la classe.
– Avantages : simplifie l'utilisation de l'objet et permet d'éviter
d'écrire des méthodes « getter » et « setter » redondantes.
– Inconvénients: l'encapsulation peut facilement être contournée par
un utilisateur de la classe.
– Pour accéder à un attribut d'un objet, on écrit simplement :
[Link]
– Une méthode est généralement appelée pour le cas particulier d'une
instance de la classe, en vue de la modifier : [Link](args,...)
Définition d’une classe élémentaire
• Les noms des classes commencent,
par convention, par une majuscule.
• Le terme « object » permettant de
créer une classe fondamentale (ne
dérivant d’aucune autre) n’est pas
obligatoire.
• La chaîne de caractères est utilisée
pour documenter la classe.
• p est une nouvelle instance de la
classe Point(). Pas besoin d’utiliser
new comme dans le C++.
• Les attributs (ou variables) d’instance
(x,y) du point p ont été ajoutés par
simple affectation (coordonnées dans
un plan cartésien).
• On peut se le permettre à cause du caractère
dynamique de Python, mais ce n’est pas
recommandable de créer des attributs en
dehors de la classe.
Définition d’une méthode
• La définition d’une méthode doit
toujours comporter le premier
paramètre self qui une référence
d’instance.
• Ce paramètre est nécessaire pour
pouvoir designer l’instance à laquelle
la méthode sera associée.
• Il faut créer les attributs de l’objet
avant d’appeler la méthode pour
éviter les erreurs.
• Il serait par contre judicieux que les
variables d’instance soient prédéfinies
à l’intérieur de la classe, avec pour
chacune d’elles une valeur « par
défaut ».
– Pour obtenir cela, il faut définir une
méthode particulière représentant le
constructeur de l’objet.
La méthode constructeur
• La méthode constructeur est
exécutée automatiquement lorsque
l’on instancie un nouvel objet a partir
de la classe.
– On peut donc y placer tout ce qui
semble nécessaire pour initialiser
automatiquement l’objet que l’on
crée.
• la méthode constructeur devra
obligatoirement s’appeler __init__

• Puisque les variables d’instance


possèdent maintenant des valeurs par
défaut, nous pouvons aussi bien créer
des objets Time() en omettant un ou
plusieurs arguments.
Espaces de noms des classes et instances
• Le même nom nb est utilisé pour
définir trois variables différentes :
– Une dans l’espace de noms de la
classe (variable de classe).
– Une autre dans l’espace de nom
de l’objet (variable d’instance).
– Une dernière dans l’espace de
noms principal (variable globale).
• Cette ligne montre comment vous
pouvez accéder à ces espaces de
noms (en utilisant la qualification par
points).
– Notez encore une fois l’utilisation
de self pour designer l’instance a
l’intérieur de la définition d’une
classe.
Exemple
Héritage
• On peut construire une classe (fille) à partir d'une autre
classe (mère).
• On dit que cette classe hérite de tous les attributs et toutes
les méthodes de son ancêtre. On dit aussi que la classe est
dérivée de sa classe de base.
• La classe dérivée correspond donc à un
cas particulier de la classe de base,
puisque celle-ci possède tous les attributs
et les méthodes de son ancêtre et qu'elle
peut en ajouter de nouveaux qui lui sont
propres.
Exemple: Héritage
Exemple: Héritage
• Dans ce nouvel exemple, on ne
modifie pas l’attribut caract2 de la
classe Carnivore(). Nous pouvons le
vérifier en créant une nouvelle
instance toby.
• On crée plutôt une nouvelle variable
d’instance associée seulement à
l’objet fido.
• Il existe donc deux variables avec le
même nom caract2 : l’une dans
l’espace de noms de l’objet fido, et
l’autre dans l’espace de noms de la
classe Carnivore().
• Python commence par rechercher le
nom d'une variable dans l’espace
local. Sinon, il examine l’espace de
noms des structures parentes jusqu’au
niveau principal du programme.
Héritage et polymorphisme

• Les atomes sont constitués de protons (chargés positivement), d’électrons (chargés


négativement) et de neutrons (neutres).
• Le type d’atome est déterminé par le nombre de protons (i.e. numéro atomique).
• Dans son état fondamental, un atome contient autant d’électrons que de protons, et par
conséquent il est électriquement neutre. Il possède également un nombre variable
de neutrons, mais qui n’influencent pas sa charge électrique.
Héritage et polymorphisme

• Un atome peut gagner ou perdre des électrons. Il acquiert de ce fait une charge et
devient un ion (i.e. un ion négatif si l’atome a gagné un ou plusieurs électrons, et
d’un ion positif s’il en a perdu).
• La charge électrique d’un ion est égale a la différence entre le nombre de protons
et le nombre d’électrons qu’il contient.
• Un ion est simplement un atome modifié. La classe Ion() sera donc une classe
dérivée de la classe Atome().
Héritage et polymorphisme

• La méthode affiche() remplace une méthode de même nom héritée de la classe


Atome().
• Les classes Atome() et Ion() possèdent donc chacune une méthode de même
nom, mais qui effectuent un travail diffèrent.
• On parle dans ce cas de polymorphisme. On pourra dire également que la
méthode affiche() de la classe Atome() a été surchargée.
Exemple
Exemple
Méthode privée
Méthode spéciale

Vous aimerez peut-être aussi