Cet ouvrage [C++ pour les programmeurs C] a été spécifiquement conçu pour tous ceux qui, possédant déjà une pratique du langage C, souhaitent maîtriser la programmation orientée objet en C++. Il s’adresse à la fois aux étudiants, aux développeurs et aux enseignants en informatique.
Conçu sous forme d’un cours complet, il expose progressivement à la fois :
• les différentes notions fondamentales de la P.O.O. et la façon dont elles s’expriment en C++ (classes et objets, méthodes, constructeur, destructeur, héritage, polymorphisme),
• les spécificités, non orientées objet, du langage C++, c’est-à-dire celles qui permettent à C++ d’être un C amélioré (référence, argument par défaut, surdéfinition de fonctions, fonctions en ligne, espaces de noms…),
• les spécificités orientées objet du C++ : fonctions amies, surdéfinition d’opérateurs, patrons de classes et de fonctions, héritage multiple, flots, bibliothèque standard.
Chacune de ces notions est illustrée systématiquement par un programme complet, assorti d’un exemple d’exécution montrant comment la mettre en œuvre dans un contexte réel. Celuici peut également servir à une prise de connaissance intuitive ou à une révision rapide de la notion en question, à une expérimentation directe dans votre propre environnement de travail ou encore de point de départ à une expérimentation personnelle.
Les chapitres les plus importants ont été dotés d’exercices 3 comportant :
• des suggestions de manipulations destinées à mieux vous familiariser avec votre environnement ; par effet d’entraînement, elles vous feront probablement imaginer d’autres expérimentations de votre cru ;
• des programmes à rédiger ; dans ce cas, un exemple de correction est fourni en fin de volume.
L’aspect didactique a été privilégié, sans pour autant nuire à l’exhaustivité de l’ouvrage.
Nous couvrons l’ensemble de la programmation en C++, des notions fondamentales de la P.O.O. jusqu’aux aspects très spécifiques au langage (mais néanmoins fondamentaux), afin de rendre le lecteur parfaitement opérationnel dans la conception, le développement et la mise au point de ses propres classes. C’est ainsi que nous avons soigneusement étudié les conséquences de la liberté qu’offre C++ de choisir le mode de gestion de la mémoire allouée aux objets (automatique ou dynamique)
De même, nous avons largement insisté sur le rôle du constructeur de recopie, ainsi que sur la redéfinition de l’opérateur d’affectation, éléments qui conduisent à la notion de « classe canonique ». Toujours dans le même esprit, nous avons pris soin de bien développer les notions indispensables que sont la ligature dynamique et les classes abstraites, lesquelles débouchent sur la notion la plus puissante du langage qu’est le polymorphisme. De même, la S.T.L. a été étudiée en détail, après avoir pris soin d’exposer préalablement d’une part les notions de classes et de fonctions génériques, d’autre part celles de conteneur, d’itérateur et d’algorithmes qui conditionnent la bonne utilisation de la plupart de ses composants.