Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/06951.jsonl.gz/89

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é
classpermet 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 descripteur
draw()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.