6. Créer - class
¶
La programmation orientée objet met au centre de la programmation la notion d’objet. Des objets individuels sont créés à partir d’un modèle qu’on appelle classe.
Un objet est caractérisé par ses attributs (variables) et méthodes (fonctions). La programmation orientée objet attache les attributs et méthodes à l’objet même et permet de cette façon un code très structuré et facilement extensible. Nous allons voir que :
le mot-clé
class
permet de définir un modèle pour créer des objets,l’expression
point = Point()
crée un nouvel objet à partir d’une classe,un objet possède des attributs et des méthodes.
6.1. Définir une classe¶
Le mot-clé class
permet de définir une classe, ici la classe Point
.
C’est une convention en Python, que le nom de classe soit écrit avec une majuscule. Pour définir une classe, nous écrivons :
le mot-clé
class
le nom de la class (avec une majuscule)
des parenthèses optionnelles (classe parent)
un deux-points
:
un bloc en indentation
Exercice : Créez une deuxième classe Rectangle
et affichez son type.
6.2. Créer des objets¶
À partir d’une class, nous pouvons créer autant d’objets que nous voulons. L’expression Point()
crée un objet de type Point
. On dit aussi qu’on crée une instance de la classe Point
.
Pour créer une instance, on utilise le nom de la classe suivi de parenthèses. Plus tard nous verrons qu’il peut y avoir des arguments entre ces parenthèses.
Une classe est comme un moule qui nous permet de créer des copies, à partir d’une définition de classe.
Exercice : Créez encore d’autres instances de la classe Point
,
6.3. Définir des attributs¶
La notation dotée permet de définir des attributs à un objet.
Par exemple le point peut avoir un attribut x
et y
.
Il pourrait avoir une couleur, une épaisseur, etc.
La fonction dir()
affiche les attributs d’un objet.
6.4. La méthode __init__()
¶
Chaque classe possède une méthode spéciale __init__()
que nous appelons constructeur. Cette méthode est appelée lors de la création de l’objet. Son premier paramètre est toujours self
, qui représente l’objet lui-même. Cette fonction est utilisée pour initialiser les attributs avec les valeurs initiales.
6.5. La méthode __str__()
¶
Toutes les classes possèdent aussi une méthode spéciale __str__()
qui retourne une chaîne de caractères. Cette chaîne est un descripteur de l’objet. Il est utilisé quand on affiche l’objet avec la fonction print()
.
Souvent la représentation d’un objet sous forme de texte ressemble à son constructeur, et affiche le nom de la classe et quelques attributs essentiels.
6.6. Définir une méthode¶
Dans la définition de classe, nous pouvons définir des méthodes supplémentaires. Le premier paramètre de toute méthode est self
, la variable qui représente l’objet lui-même.
6.7. Classe Dot
¶
Essayons maintenant de créer une classe pour un objet graphique. Définissons la classe Dot
avec les attributs:
position
diamètre
couleur
et les méthodes
__init__()
du constructeur__str__()
du descripteurdraw()
pour dessiner l’objet
6.8. Objet cliquable¶
Nous ajoutons maintenant une fonction de rappel pour basculer la couleur du disque entre rouge et vert quand on y clique avec la souris.
6.9. Dot cliquable¶
Dans l’exemple suivant nous avons deux points p0
et p1
qui
basculent d’état quand on y clique.
montrent leur état 0 ou 1,
changent de couleur entre gris et jaune.
Le troisième point p2
tient son état à partir de la relation logique
p0 and p1
.
6.10. Classe Rectangle¶
Par la suite nous allons voir comment nous pouvons transformer une programmation procédurale en programmation orientée objet. Prenons le cas d’un rectangle.
Dessinons un rectangle de taille (a, b) à la position (x, y).
Maintenant implémentons une class Rectangle
. Nous allons ajouter plusieurs options :
angle d’inclinaison
couleur du trait
épaisseur du trait
couleur de remplissage
Nous utilisons None
si il n’y a pas de remplissage ou pas de trait.
6.11. Classe Ellipse¶
Commençons de nouveau avec une fonction procédurale pour dessiner une ellipse.
Et maintenant la même chose en programmation orientée objet.
6.12. Classe Card¶
Les cartes de jeux sont représentées avec un rectangle arrondi et un des 4 symboles (coeur, pique, carreau, trèfle).
6.13. Exercices¶
Les exercices ci-dessous utilisent la classe Button
. C’est une classe extrêmement important pour une interface graphique. Toute interface graphique, et encore plus les smartphones et tablettes utilisent des boutons pour interagir avec l’utilisateur.
Jeu avec boutons¶
Retournez au jeux de Go dans les exercices du chapitre Cliquer intégrez des boutons pour
recommencer une nouvelle partie
quitter le jeu
Calculatrice¶
Ci-dessous vous avez le début du code pour une calculatrice.
La classe Button
est utilisée également pour afficher le résultat.
Dans l’objet display
nous changeons donc la taille, la couleur et l’alignement.
Votre tâche est d’ajouter le code pour faire fonctionner la calculatrice.
Pour vous donner une idée, le bouton 1
a été implémenté. Vous devez ajouter le code pour les 18 autres boutons.
Challenge : Transformer le code en calculatrice scientifique avec les fonctions trigonométriques et autres.