Aller au contenu

Quelques classes pour expliquer la programmation à un enfant de 9 ans

·403 mots·2 mins

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 😉.