Premier exemple
Dans une console Python, tapez les codes suivants et notez les réponses :
>>> nb = 13
>>> type(nb)
Ainsi nb est une variable qui fait partie de la classe des entiers (integer).
>>> dir(nb) #dir() permet de donner la liste des méthodes et des attributs d’une variable
On observe une série d’expressions et à la fin des mots comme numerator et denominator qui sont plus parlants ; ces mots représentent des attributs.
Essayez de trouver les réponses avant de cliquer sur ‘entrée’.
>>> nb.numerator
>>> nb.denominator
>>> nb.bit_length() >>> help(nb.bit_lenght)Deuxième exemple
Dans une console Python, tapez les codes suivants et notez les réponses :
>>> tableau = [1,2,3]
>>> type(tableau)
>>> dir(tableau)
On observe une séries d’expressions encadrées par des underscores doubles ( __ ) et des mots plus connus à la fin, qu’on a déjà utilisé avec des variables de type ‘list’.
Essayez de trouver la réponse avant de cliquer sur ‘entrée’ pour la deuxième ligne en-dessous.
>>> tableau.append(nb)
>>> tableau
La Programmation Orientée Objet (POO) repose, comme son nom l’indique, sur le concept d’objet.
Un objet dans la vie courante, vous connaissez, mais en informatique qu’est ce que c’est ? une variable ? une fonction ?
Ni l’un ni l’autre, c’est un nouveau concept.
Imaginez un objet très complexe (par exemple un moteur de voiture) : il est évident qu’en regardant cet objet, on est frappé par sa complexité (pour un non spécialiste).
Imaginez que l’on enferme cet objet dans une caisse et que l’utilisateur de l’objet n’ait pas besoin d’en connaître son principe de fonctionnement interne pour pouvoir l’utiliser.
L’utilisateur a, à sa disposition, des boutons, des manettes et des écrans de contrôle pour faire fonctionner l’objet, ce qui rend son utilisation relativement simple. C’est ce qu’on fait quand on conduit ! C'est ce qu'on appelle l'interface
La mise au point de l’objet (par des ingénieurs) a été très complexe. C'est ce qu'on appelle l'implémentation
En revanche son utilisation est relativement simple.
Programmer de manière orientée objet, c’est un peu reprendre cette idée : utiliser des objets sans se soucier de leur complexité interne.
Pour utiliser ces objets, nous n’avons pas à notre disposition des boutons, des manettes ou encore des écrans de contrôle, mais des attributs et des méthodes (nous aurons l’occasion de revenir longuement sur ces 2 concepts).
Mais c'est du déjà vu !
On vient d’utiliser des objets avec des attributs et des méthodes (fonctions):
nb = 5 # on instancie une variable ‘nb’ de type ‘int’
nb.numerator # ’numerator’ est un attribut de ‘nb’
tableau = [1,2,3] # On instancie une variable ‘tableau’ de type ‘list’
tableau.append(nb) # ‘append’ est une méthode de ‘tableau’
Ainsi en Python, toute valeur est un objet, tout objet est associé à un type et un type définit ce qu’on peut faire avec l’objet.
Les objets de type ‘int’ sont des nombres entiers qu’on peut additionner, soustraire, etc.
Les objets de type ‘list’ sont des tableaux de nombres (par exemple) qu’on peut trier, ajouter, enlever, compter, etc.
La programmation orientée objet nous permet de définir nos propres types d’objets, avec leurs propriétés (=attributs) et leurs fonctions (=méthodes). C'est ce que nous allons faire maintenant.