L’autre soir, passé 21h, mon fils (sensé dormir) débarque dans mon bureau et me demande à quoi servent toutes ces couleurs sur mon écran. J’avais une instance de VSCode ouverte sur du code Python, avec un truc à finir pour le boulot. Ni une, ni deux (ni trois, d’ailleurs) : je saute sur l’occasion pour lui expliquer quelques rudiments de programmation. Comme il adôôôôre les transports, je lui demande comment il modéliserait un véhicule.
Réponse : “C’est quelque choseq qui roule et qui peut transporter des gens”.
Nous définissons donc une classe de Transport
, qui a des roues et qui peut transporter un certain nombre de personnes :
class Vehicule:
def __init__(nombre_de_personnes_transportees, nombre_de_roues=4):
nombre_de_personnes_transportees = nombre_de_personnes_transportees
nombre_de_roues = nombre_de_roues
Je lui demande ensuite si tous les véhicules transportent des gens. “Pas obligatoirement”. Nous ajoutons une méthode qui indique si le nombre de personnes transportées est supérieure à 0 :
Vrai = True
Faux = False
class Vehicule:
[...]
def transporte_des_gens():
if nombre_de_personnes_transportees > 0:
return Vrai
else:
return Faux
J’en profite pour lui ajouter un petit sucre syntaxique, pour qu’il n’ait pas à (trop) gérer des mots anglais, même si tout n’est pas rose et qu’il reste des if
, else
ou return
, sans parler des mots-clés comme def
ou class
.
J’ai volontairement laissé tomber le mot-clé self
, même si ce n’est pas ce retrait qui change fondamentalement la compréhension du code ci-dessus (sauf qu’il ne fonctionne plus 😉).
“Peut-être que certains véhicules peuvent voler ?”. “Ah oui !”. On ajoute un booléen qui indique si le véhicule peut voler ou non.
class Vehicule:
def __init__(nombre_de_personnes_transportees, nombre_de_roues=4, peut_voler=False):
peut_voler = peut_voler
[...]
Finalement, je lui demande s’il peut me citer plusieurs de ces véhicules. J’ai droit à des avions, des bus et des trams. Nous mettons en place une simili-forme d’héritage :
class Avion(Transport):
...
class Bus(Transport):
...
class Tram(Transport):
...
Et finalement, je lui demande de me donner quelques modèles de chaque, avec leur capacité. Il me donne des Mercedes Citaro, un Iveco Urban Way, un Airbus A380, et deux T3000 et T4000 :
petit_citaro = Bus(nombre_de_personnes_transportees=65, nombre_de_roues=4)
grand_citaro = Bus(nombre_de_personnes_transportees=65, nombre_de_roues=6)
urban_way = Bus(nombre_de_personnes_transportees=101, nombre_de_roues=6)
a380 = Avion(nombre_de_personnes_transportees=1100, nombre_de_roues=24)
t3000 = Tram(nombre_de_personnes_transportees=165, nombre_de_roues=32)
t4000 = Tram(nombre_de_personnes_transportees=225, nombre_de_roues=64)
Je pense qu’il était assez content de pouvoir manipuler des “choses” entre un clavier et un résultat qui apparaissait à l’écran. Je pense aussi qu’il était content de rester éveillé un peu plus tard 😉.