Index Suivant

Chapitre 1   Introduction

1.1   Un peu d'histoire

Le langage C++ a deux grands ancêtres : Le concepteur de C++, Bjarne Stroustrup, qui travaillait également aux Bell Labs, désirait ajouter au langage C les classes de Simula. Après plusieurs versions préliminaires, le langage a trouvé une première forme stable en 1983, et a très rapidement connu un vif succès dans le monde industriel. Mais ce n'est que plus tard que le langage a trouvé sa forme définitive, confirmée par une norme.

C++ peut être considéré comme un successeur de C. Tout en gardant les points forts de ce langage, il corrige certains points faibles et permet l'abstraction de données. De plus, il permet la programmation objet.

D'autres langages, et en particulier Java et C#, se sont fortement inspirés de la syntaxe de C++. Celle-ci est de ce fait devenue une référence. Nous supposons en particulier que les élèves qui ont déjà appris Java ne seront pas dépaysés par ce langage. Cependant, nous voulons mettre en garde contre plusieurs fausses ressemblances : si la syntaxe est la même ou très proche, plusieurs concepts sous-jacents sont différents. Nous nous efforcerons de signaler ces pièges potentiels.

Pour le lecteur qui voudrait en savoir plus que les informations succinctes données par ce polycopié, il existe de très nombreux ouvrages consacrés à C++. Il nous est difficile de faire un tri sérieux, la qualité de ces ouvrages étant très variable. Je conseille néanmoins les références à mon avis incontournables [4, 9], ainsi qu'un excellent ouvrage disponible gratuitement sur le Web [2]. Enfin, pour se perfectionner dans l'emploi de C++ comme langage de programmation, il existe de nombreux ouvrages, dont les incontournables contributions de Scott Meyers [5, 6, 7].

1.2   Implantation de modules en C++

Un module C++ (et en particulier une classe) est généralement implanté par deux fichiers : un fichier d'interface, qui spécifie les services offerts par le module (définition de types, interfaces dec classes, déclaration de fonctions et de procédures) et un fichier d'implantation dans lequel sont mises en oeuvre les fonctionnalités déclarées dans l'interface. Les extensions conventionnellement utilisées en C++ sont : Il y a ici une première différence avec Java, où une classe est complètement définie par un seul et même fichier de suffixe .java. En C++, une classe que nous appellerons Toto est habituellement décrite dans deux fichiers séparés :

Il faut bien noter que pour utiliser un type -- une classe -- dans un module, il faut obligatoirement inclure son header, sinon la compilation ne réussira pas, les interfaces des classes utilisées n'étant pas trouvées (elles ne sont pas recherchées et chargées automatiquement, comme en Java).

Nous reviendrons au § 5.1 sur les spécificités de la compilation en C++.


1
International Federation for Information Processing.

Index Suivant