À 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 fonctiondessiner(Carre): le développeur appelle toujoursdessiner, 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
Antonymes
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.