POO Py
POO Py
POO Py
1 Introduction
2 La notion de classe
4 Exercices
1 Introduction
2 La notion de classe
4 Exercices
Introduction
Introduction
En programmation, on doit inévitablement pouvoir définir et
manipuler des structures de données plus complexes que celles
nativement fournies par le langage choisi (entiers, flottants, chaînes
de caractères, listes,. . .).
La Programmation Orientée Objet, ou P.O.O., s’inscrit dans une
démarche de conception différente de celle de la programmation dite
structurée, typique par exemple du langage Pascal.
On passe ainsi de l’«équation de Wirth» :
Algorithmes + Structures de données = Programmes
à l’équation qui peut caractériser la P.O.O. :
Méthodes + Données = Objet
L’idée maîtresse est de rendre indissociable, dès la conception, les
données des algorithmes agissant sur celles-ci. En fait, les données
présupposent elles-mêmes quel type d’algorithme est susceptible
d’agir sur elles, et doivent de ce fait fournir ces algorithmes comme
une interface (principe d’encapsulation).
1. comme la plupart des langages de haut niveau généralistes, par exemple C++,
Java, C#,. . .
Programmation Orientée Objet 4 / 22
Sommaire
1 Introduction
2 La notion de classe
4 Exercices
La notion de classe
La notion de classe
La notion de classe généralise celle de type, en particulier celle de
type défini par l’utilisateur, comme on peut la rencontrer dans
certains langages 2
L’idée est de regrouper dans une même structure plusieurs
informations qui caractérisent chaque objet d’une certaine famille
d’objets. Les informations à regrouper peuvent être de natures
différentes.
Exemples :
I chaque personne d’une entreprise est caractérisée par son nom, son
prénom, sa date de naissance, son sexe, le poste qu’il occupe, son
salaire annuel, son ancienneté,. . .
I chaque livre d’une bibliothèque peut être caractérisé par son titre,
son auteur, son éditeur, sa date d’impression, son nombre de pages,
son emplacement dans la bibliothèque,. . .
I chaque point de l’espace euclidien à trois dimensions muni d’un
repère peut être caractérisé par ses trois coordonnées : x (abscisse),
y (ordonnée) et z (côte).
En Python :
class Personne:
"""une classe regroupant les informations sur une personne
dans un lycée"""
def __init__(self, nom, prenom, annee):
self.nom = nom
self.prenom = prenom
self.annee = annee # année de naissance
1 Introduction
2 La notion de classe
4 Exercices
Les méthodes d’une classe
def get_nom(self):
"""récupère l'attribut nom"""
return self.nom
Programmation Orientée Objet 8 / 22
Les méthodes d’une classe
def affiche(self):
"""affichage des coordonnées du point"""
print("abscisse: " + self.x + ", ordonnée: " + self.y)
1 Introduction
2 La notion de classe
4 Exercices
Exercices
class Toto:
def __init__(self, i, j, k):
self.att1 = i
self.att2 = j
self.att3 = k
def meth1(self):
tmp = self.att1
self.att1 = self.att2
self.att2 = tmp
def meth2(self):
return self.att3
Ï Ex. 8 Définir une classe Date pour représenter une date, avec trois
attributs jour, mois et annee.
1 Écrire son constructeur.
2 Ajouter une méthode __str__ qui renvoie une chaîne de caractères
de la forme "8 mai 1945". On pourra se servir d’un attribut de
classe qui est un tableau donnant les noms des douze mois de
l’année. Tester en construisant des objets de la classe Date puis en
les affichant avec print.
3 Ajouter une méthode __lt__ qui permet de déterminer si une date
d1 est antérieure à une date d2 en écrivant d1 < d2. La tester.
Ï Ex. 9 Définir une classe Chrono pour représenter des temps mesurés en
heures, minutes et secondes. Chaque objet de la classe Chrono a trois
attributs : heures, minutes et secondes.
1 Écrire son constructeur. Veiller à ce que heures soit un entier
compris entre 0 et 23 (inclus), minutes soit un entier compris entre
0 et 59 et secondes soit un entier compris entre 0 et 59.
2 Ajouter une méthode __str__ qui renvoie une chaîne de caractères
de la forme "21h 34m 55s". Tester en construisant des objets de la
classe Chrono puis en les affichant avec print.
Programmation Orientée Objet 18 / 22
Exercices