Surcharger

Définition, exemples et bonnes pratiques

À retenir

  • Même nom de fonction, mais arguments (paramètres) différents.
  • Permet de simplifier la lecture du code en évitant de multiplier les noms techniques.
  • Le choix de la bonne fonction est fait automatiquement par le compilateur ou l'interpréteur.

En programmation, surcharger consiste à utiliser un seul et même nom pour définir plusieurs fonctions ou méthodes qui réalisent des tâches similaires mais avec des données différentes. C'est comme le verbe "ouvrir" : on l'utilise aussi bien pour une porte, un livre ou un fichier informatique, même si l'action concrète change à chaque fois.

Étymologie

Dérivé du français médiéval (XIIe siècle) associant le préfixe sur- et le verbe charger. En informatique, c'est une traduction directe du concept anglais overloading, exprimant l'idée d'ajouter une nouvelle couche de sens à un identifiant déjà existant.

Exemples d'usage

  • Une fonction dessiner(Cercle) et une fonction dessiner(Carre) : le développeur appelle toujours dessiner, et l'ordinateur choisit la bonne version selon la forme géométrique.
  • Surcharger l'opérateur + pour qu'il puisse aussi bien additionner deux nombres que coller deux morceaux de texte ensemble.

Cas d'usage

La surcharge est massivement utilisée dans les langages orientés objet (comme Java, C++ ou C#) pour créer des interfaces plus intuitives. Elle intervient lors de la création de bibliothèques logicielles afin de permettre aux utilisateurs de ces outils de manipuler divers types de données avec un vocabulaire restreint et cohérent.

Bonnes pratiques

Veillez à ce que toutes les variantes d'une fonction surchargée aient une finalité identique. Si une fonction sauvegarder() enregistre un document, une version surchargée ne devrait jamais servir à effacer une base de données, sous peine de rendre le code totalement illisible et dangereux.

Synonymes

surcharge de fonction surcharge d'opérateur overloading

Antonymes

redéfinition (dans certains contextes) masquage

Conseil

Pour bien débuter, voyez la surcharge comme une économie de vocabulaire. Au lieu de mémoriser envoyerEmail(), envoyerSMS() et envoyerCourrier(), vous n'utilisez que envoyer() et laissez le programme décider du protocole selon l'objet que vous lui donnez.

Questions fréquentes

Quelle est la différence entre surcharge et redéfinition ?

La surcharge (overload) crée plusieurs versions d'une fonction avec des paramètres différents dans un même contexte. La redéfinition (override) remplace le comportement d'une fonction héritée d'une classe parente.

Est-ce que le JavaScript permet la surcharge ?

Pas nativement de la même manière que le Java ou le C#. En JS, si vous définissez deux fois le même nom, la dernière définition écrase la première. On simule la surcharge en testant le type des arguments à l'intérieur de la fonction.