Table des Matières

Sujet précédent

La programmation orientée objet

Sujet suivant

2. méthodes

Cette page

1. La notation “pointée”

Nous allons apprendre un style de programmation moderne appelé la Programmation Orientée Objet [POO]. Mais avant d’écrire des programmes orientés-objet, nous devons tout d’abord apprendre à lire et à comprendre la notation utilisée.

1.1. Une vie de chien?

Milou est un chien. Pendant une journée typique, il fait diverses actions: il mange, il court, il dort, etc. Voici comment un programmeur utilisant la POO pourrait écrire ceci:

Milou = Chien()
Milou.mange()
Milou.court()
Milou.dort()

De plus, Milou a diverses qualités ou attributs. Ces attributs sont des variables, comme nous avons vu auparavant, sauf qu’elles “appartiennent” à Milou. Par exemple, Milou est petit et son poil est noir. Un programmeur pourrait décrire ceci comme suit:

Milou.taille = "petit"
Milou.couleur_de_poil = "noir"

Dans le langage de la programmation orientée objet, nous avons ce qui suit:

  • Chien est un exemple d’une classe d’objets.
  • Milou est une instance (objet) de la classe Chien.
  • mange(), court() et dort() sont des méthodes de la classe Chien; les méthodes sont essentiellement la même chose que les fonctions que nous avons vu précédemment: la seule différence est qu’elles “appartiennent” à une classe ou une instance de la classe donnée.
  • taille et couleur_de_poil sont des attributs d’une instance donnée; les attributs peuvent prendre n’importe quelle valeur qu’une variable “normale” pourrait prendre.
  • La relation entre un attribut ou une méthode et l’objet auquel il ou elle appartient est indiqué par un point écrit entre les deux.

Les objets peuvent avoir d’autres objets qui leur “appartiennent”, chacun avec ses propres méthodes ou attributs:

Milou.queue.remue()
Milou.queue.type = "fournie";
Milou.patte_avant_gauche.bouge()
Milou.tête.bouche.dents.canine.est_douloureuse()

Voyons maintenant comment Reeborg utilise la notation pointée.

1.2. Un robot usagé est baptisé

Jusqu’à maintenant, nous avons écrit des programmes sans utiliser la notation pointée. C’est le temps d’apprendre à le faire, en commençant avec un exemple simple.

En premier, sélectionnez le monde Vide qui n’a aucun robot présent.

J’ai mentionné à plusieurs reprises que Reeborg était un robot usagé ... Nous allons donc créer notre première instance d’un RobotUsage (sans accent aigu sur le e) et lui donner un nom familier! Ensuite, nous allons lui demander de faire un pas vers l’avant.

À votre tour !

Créez un robot et faites-le avancer d’un pas en utilisant le programme suivant:

reeborg = RobotUsage()
reeborg.avance()

Lorsque vous aurez terminé, essayez d’écrire un programme plus complexe, en utilisant d’autres instructions.

Important

Vous avez probablement remarqué que j’ai écrit le nom reeborg tout en lettres minuscules. Lorsqu’on écrit des programmes en utilisant Python (ainsi que plusieurs autres langages informatiques), on utilise souvent la convention de donner des noms tout en lettres minuscules aux instances des classes d’objets, et de réserver les noms débutant avec une majuscule pour les classes elles-mêmes. Donc ici, j’ai la classe d’objets RobotUsage et le nom d’une instance reeborg.

Cependant ... je ne suivrai pas toujours cette convention dans ce tutoriel; je suis trop habitué à écrire Reeborg avec un R majuscule.

1.3. Plusieurs robots

Essayez ceci!

Sélectionnez le monde Vide, donc sans robots. Puis exécutez le code suivant:

reeborg = RobotUsage()
reeborg.avance()
erdna = RobotUsage()
erdna.tourne_a_gauche()
erdna.avance()
reeborg.avance()

Vous pouvez ajouter d’autres robots si vous le désirez!

Pour les programmeurs expérimentés

En plus de la notation pointée, il y a une autre façon d’obtenir la valeur d’un attribut ou d’une méthode qui appartient à un objet en Python. Supposons que j’ai la classe Chien comprenant ceci:

milou = Chien()
milou.taille = "petit"
milou.court()   # action possible

Avec Python, la fonction getattr (de l’anglais get attribute) permet de faire ce qui suit:

la_taille = getattr(milou, "taille")   # donne "petit" pour la_taille
action = getattr(milou, "court")
action()     # équivalent de milou.court()

getattr peut être très utile dans certains contextes, mais probablement pas pour les tâches possibles du Monde de Reeborg.