Le C++

Lucas Machado
ELP-2018
Published in
4 min readJun 1, 2018

Introduction et un bref historique

(1)D’origine danoise, M.Bjarne Stroustrup, informaticien, conçu le langage C++ en 1983. Basé entièrement sur le langage C, il a pour but d’être plus polyvalent que son prédécesseur. (2)En plus des techniques de programmation C traditionnelles, il supporte la programmation orientée objet et inclut des nouveautés sur la gestion des flux. Une nouvelle mise à jour C++1x est en cours de préparation, il s’agit bien d’un langage de programmation actuel. Nous allons nous intéresser ici à quelques aspects techniques du C++, à savoir l’orienté objet, le polymorphisme et la surcharge et les flux.

Aspects techniques

L’orienté objet & le polymorphisme

Il est bon de noter que le C++ supporte la programmation orientée objet. Cela sous entend qu’un programmeur avec une connaissance élevée du C pourrait utiliser ce type de programmation. L’un des objectifs du C++ est de rendre accessible ce mode au commun des mortels.

(3)La programmation orientée objet consiste à programmer en manipulant des objets. Un programme gérant des personnes possèdent des objets représentant ces personnes. Il faut donc commencer par un travail d’analyse pour comprendre les différentes propriétés nécessaires à l’exécution des fonctionnalités du programme. L’un des concepts fort de l’orienté objet est la possibilité de hiérarchiser les objets. Les objets sont regroupés par classe. La classe principale sera le type d’objet le plus haut, “Être humain” par exemple avec des propriétés générales : manger, dormir, marcher… De cette classe principale peut être générer plusieurs sous classes qui garderont les propriétés de la classe principale telles que les classes : “adulte” et “enfant”. Le concept d’héritage permet de diminuer les redondances, en effet la méthode “Manger” sera écrite une seule fois dans la classe “Être humain” et pourra être utilisé dans les 3 classes définies précédemment. On dit que “Enfant” et “Adulte” héritent de “Être humain”. On pourra rajouter des méthodes spécifiques à “Enfant” et “Adulte par exemple : jouer ou travailler. Il est bon de noter que l’on peut créer d’autres classes héritant de sous classes. Des classes “Enfant” et “Adulte” peuvent découler les classes “Fille”, “Garçon” par exemple.

Exemple précédent sur l’héritage

On peut toutefois hériter d’une classe sans en avoir toutes les propriétés. On pourrait avoir une classe “Personne à mobilité réduite” qui hériterait évidemment de la classe “Être humain” et qui pour autant aurait une méthode “Marcher” différente. La notion de polymorphisme permet de se détacher de ce problème et de modifier la méthode “Marcher” pour une classe particulière. Il s’agit d’un concept très important de l’orienté objet. En C++, une méthode n’est pas polymorphe. Pour se faire, il faut qu’elle soit déclarer dans la classe mère à l’aide d’un modificateur “virtual” avant son prototype et il faut respecter sa signature (le type des paramètres et du retour doivent être les mêmes dans classe mère et ses classes dérivées).

La surcharge

(4)La surcharge consiste à pouvoir modifier structurellement une fonction sans avoir à changer ni son prototype ni à créer une nouvelle fonction. Pour l’utilisation d’une fonction f(x) qui utilisera en paramètre un réel, on pourra définir une nouvelle fonction f(x,y) avec x la partie réelle et y la partie imaginaire du nombre. En C++, on peut définir plusieurs fois la même fonction (ici f), l’unique condition est que le nombre de paramètres et/ou le type des paramètres diffèrent entre les différentes fonctions. Le polymorphisme et la surcharge sont donc compatibles puisqu’il n’y a pas d’intersection entre leurs conditions respectives.

On utilise fréquemment sans s’en rendre compte la surcharge sur les opérateurs. Pour le “+” par exemple, il est compatible avec deux entiers mais aussi avec deux flottants, le retour n’est pas le même mais on utilise le même opérateur pour ces opérations (et heureusement…).

Les flux

(3)Les flux sont des entrées/sorties du programme dans des fichiers ou dans la console. En C++ contrairement au C, on utilise des fonctionnalités de type orientées objet qui repose sur les flux. On utilise pour cela les opérateurs “<<” pour la sortie et “>>” pour l’entrée. On utilise des objets, donc ces opérateurs doivent être surchargés pour nos propres classes même si pour la plupart des types atomiques, le travail a déjà été réalisé. On précédera l’opérateur par “cout”, “cin” ou “cerr” afin de spécifier le flux standard utilisé (sortie standard, entrée standard ou sortie des erreurs).

Conclusion

A travers cette article, nous avons détaillé quelques fonctionnalités que le C++ possède et que le C non. Cela donne au langage une richesse en terme de concept objets (classe, héritage, flux), de plus la surcharge des fonctions est un sucre syntaxique très apprécié des développeurs. On peut dire que ce langage est un bon entre deux entre les langages dit de bas niveau comme son ancêtre le C et les langages comme Python ou Java moins proche du langage machine.

Bibliographie

(1) Qu’est ce que le C++. Openclassrooms, mis à jour le 28 mars 2018. [en ligne] disponible sur : https://openclassrooms.com/courses/programmez-avec-le-langage-c/qu-est-ce-que-le-c-2

(2) Naomi HAMILTON. The A-Z of Programming Langages: C++. Computerworld, le 25 juin 2008. [en ligne] disponible sur : https://www.computerworld.com.au/article/250514/a-z_programming_languages_c_/

(3) Christine EBERHARDT. Tout sur le C++. Collection : CommentCaMarche.net. Paru en juin 2009.

(4) Emmanuel COURCELLE. Surcharger fonctions et opérateurs, [enligne] disponible sur : https://www.calmip.univ-toulouse.fr/c++/surch.html

--

--