Programation En C++
Recherche de Documents : Programation En C++. Rechercher de 53 000+ Dissertation Gratuites et Mémoiresclasse : enjeux et dangers 3.3 Variables et attributs statiques 3.3.1. Variables statiques n’appartenant pas à une classe 3.3.2. Attributs statiques 3.4 Constructeurs et destructeur 3.4.1. Les constructeurs 3.4.2. Le destructeur 3.5 Gestion d’objets dynamiques : les opérateurs new et delete 3.5.1. Allocation d’un élément unique ou d’un tableau d’éléments 3.5.2. Désallocation d’un élément unique ou d’un tableau d’éléments 3.6 Tout sur la vie des objets : synthèse 3.6.1. Initialisation d’un objet dès sa déclaration 3.6.2. Différentes catégories d’objets 3.7 Comment bien écrire une classe ?
38 38 41 42 46 46 47 49 49 56 57 57 60 60 61 61 63 65 65 66 67 67 70 71 71 73 75 75 76 77 77
CHAPITRE 4 • LES TRAITEMENTS
4.1 Passage d’arguments par défaut 4.2 Échange d’objets entre fonctions 4.3 Propriétés des fonctions membres 4.3.1. Spécification inline 4.3.2. Méthodes statiques 4.3.3. Auto-référence d’une classe 4.3.4. Fonctions membres constantes 4.3.5. Pointeurs sur les membres d’une classe
CHAPITRE 5 • LES FONCTIONS ET LES CLASSES AMIES
5.1 Amis et faux amis : le point de vue du génie logiciel 5.2 Le cas d’une fonction amie d’une classe 5.3 Le cas d’une méthode d’une classe amie d’une autre classe 5.4 Toutes les fonctions membres d’une classe amies d’une autre classe
Table des matières
VII
CHAPITRE 6 • LES EXCEPTIONS
6.1 Gestion des exceptions en langage C++ 6.1.1. Lever une exception 6.1.2. Attraper une exception 6.1.3. Quel gestionnaire d’exceptions choisir ? 6.1.4. Gestion hiérarchisée des exceptions 6.1.5. Liste d’exceptions valides 6.2 Fonctions liées au traitement des exceptions 6.2.1. Différentes façons d’arrêter un programme 6.2.2. Remplacement de fonctions pour le traitement des erreurs 6.3 Utilisation des exceptions dans le développement de programme
79 79 80 81 83 85 87 88 88 89 90 91 91 92 93 95 96 98 100 101 101 101 105 107 107 108 110 111 114 114 115 116 117 118 120
CHAPITRE 7 • L’HÉRITAGE
7.1 L’héritage simple 7.1.1. Mise en œuvre 7.1.2. Contrôles d’accès 7.1.3. Accès aux membres de la classe de base 7.1.4. Compatibilité avec la classe de base 7.1.5. Appels des constructeurs et des destructeurs 7.1.6. Cas du constructeur de recopie 7.2 L’héritage multiple 7.2.1. Mise en œuvre 7.2.2. Membres homonymes dans les classes mères 7.2.3. Constructeurs et destructeur
CHAPITRE 8 • LA SURCHARGE
8.1 La surcharge de fonctions et de méthodes 8.1.1. Cas des fonctions/méthodes à un argument 8.1.2. Différenciation des prototypes 8.1.3. Cas des fonctions/méthodes à plusieurs arguments 8.1.4. Surcharge de fonctions membres 8.2 La surcharge d’opérateurs 8.2.1. Mécanisme 8.2.2. Portée et limites 8.2.3. Opérateurs ++ et - 8.2.4. Opérateur d’affectation = 8.2.5. Opérateur d’indexation []
VIII
Programmation en C++ et Génie Logiciel
8.2.6. Opérateur d’accès aux membres d’une classe (->) 8.2.7. Opérateur de déréférencement (*) 8.2.8. Opérateurs new et delete 8.3 La surcharge de types 8.3.1. Rappels sur les conversions 8.3.2. Conversion d’une classe vers un type de base 8.3.3. Conversion d’un type de base vers une classe 8.3.4. Conversion d’une classe vers une autre classe 8.3.5. Exemples de conversions
121 123 124 126 126 128 129 131 132 135 135 136 136 136 139 139 140 141 142 143 144 145 146 147
CHAPITRE 9 • LES PATRONS DE FONCTIONS ET DE CLASSES
9.1 De la généricité avec les patrons ! 9.2 Les patrons de fonctions/méthodes 9.2.1. Création d’un patron de fonctions/méthodes 9.2.2. Instanciation et utilisation 9.2.3. Spécialisation d’un patron de fonctions/méthodes 9.2.4. Sucharger un patron de fonctions/méthodes 9.3 Les patrons de classes 9.3.1. Création d’un patron de classes 9.3.2. Les membres statiques au sein d’un patron 9.3.3. Instanciation et utilisation 9.3.4. Préciser des types par défaut pour les types génériques 9.3.5. L’amitié et les patrons 9.3.6. Spécialisation du patron 9.3.7. Aller encore plus loin avec les patrons
CHAPITRE 10 • INTRODUCTION AU POLYMORPHISME ET AUX MÉ149 THODES VIRTUELLES
10.1 Qu’est-ce que le polymorphisme ? 10.2 Les méthodes virtuelles 10.2.1. Définition et déclaration 10.2.2. Méthodes virtuelles et héritages complexes 10.2.3. Influence des contrôles d’accès 10.2.4. Le cas des valeurs par défaut 10.2.5. Les méthodes virtuelles pures et les classes abstraites 149 151 151 153 154 155 156
Table des matières
IX
CHAPITRE 11 • LES FLOTS
11.1 Gérer vos entrées/sorties avec les flots 11.2 Classes d’entrées/sorties 11.2.1. Écrire à l’écran : le flot cout 11.2.2. Lire à l’écran : le flot cin 11.2.3. Manipuler des fichiers 11.3 Statuts d’erreur sur un flot 11.4 Formater vos flots
159 159 161 162 164 165 169 171 175 209
EXERCICES CORRIGÉS
ANNEXES
CHAPITRE A • LES MOTS-CLEFS DU LANGAGE C++ ET LA CONSTRUC211 TION D’IDENTIFIANTS CHAPITRE B • TYPES DE BASE DU LANGAGE C++ CHAPITRE C • PASSAGE D’ARGUMENTS À UNE FONCTION
C.1 Le passage par valeur C.2 Le passage par adresse 213 215 215 216 219 221 227 238 239
CHAPITRE D • LISTE DES OPÉRATEURS SURCHARGEABLES CHAPITRE E • LA CLASSE CEXCEPTION CHAPITRE F • LA CLASSE CLISTE
BIBLIOGRAPHIE
INDEX
Avant-propos
Le langage C++ est un langage de programmation, c’est-à-dire qu’il vous permet de créer des logiciels, ou programmes, exécutés par votre ordinateur. Il s’agit d’un langage très répandu et réputé pour sa puissance et sa flexibilité : on trouve des compilateurs C++ sur tous les types d’ordinateur, du micro-ordinateur de type PC ou Macintosh, à la station de travail professionnelle. Du système d’exploitation Unix en passant par le système d’exploitation Windows. Maîtriser le langage C++ est un atout indispensable dans le monde de l’informatique. Cet ouvrage est dédié à l’apprentissage de la programmation en langage C++, ce qui recouvre à mon avis deux éléments essentiels. Le premier est l’apprentissage du langage en lui-même, c’est-à-dire les instructions et les règles qui correctement utilisées permettent de faire faire quelque chose à votre ordinateur. Le second élément important pour apprendre à programmer en langage C++ est lié à la façon d’écrire ces instructions pour limiter le nombre de bugs, pour permettre une lecture plus facile de votre programme, pour l’optimiser et vous permettre de le faire évoluer plus facilement ultérieurement... Dans le langage des informaticiens cela s’appelle faire du génie logiciel. Dans cet ouvrage vous trouverez non seulement, comme dans tout ouvrage sur le langage C++, tous les éléments du langage mais également un ensemble de recommandations recueillies dans le domaine du génie logiciel et qui vous guideront dans l’écriture de vos programmes. En langage C++ on vous explique comment créer des fonctions, ici vous verrez également des recommandations
XII
Programmation en C++ et Génie Logiciel
sur le bon nombre de paramètres, sur ceux qui ne sont pas nécessaires, sur la façon de nommer vos fonctions, sur la façon de découper votre programme en classes... Mais tout d’abord faisons un peu d’histoire pour bien appréhender la philosophie du ++. Le langage C++ fait partie des langages orientés objets, c’est-à-dire dont toute la programmation est centrée sur la notion d’objet. Il existe de nombreux langages orientés objets, plus ou moins récents, comme Smalltalk, Java... Par ailleurs, de nombreux ateliers de développement intègrent maintenant leur propre langage orienté objet. C’est le cas notamment de l’atelier WinDev et du W-langage. Tous ces langages reposent sur les mêmes principes généraux tels que l’héritage, l’encapsulation ..., mais tous ne sont pas conçus à l’identique : certains comme le Java ou Smalltalk sont des langages objets purs, et d’autres sont des extensions de langages existants. C’est le cas du langage C++ qui étend le langage C en y incluant les principes des langages orientés objets. Le langage C a été imaginé au début des années 1970, dans les laboratoires de recherche Bell de la compagnie américaine AT&T. Ses concepteurs, Brian Kernighan et Dennis Ritchie, l’ont conçu comme un langage de bas niveau, censé permettre au programmeur d’utiliser au mieux les ressources de son ordinateur. Initialement conçu pour le système Unix, le langage C s’est rapidement répandu sur tous les systèmes d’exploitation usuels. D’ailleurs, les systèmes Windows de Microsoft sont développés à l’aide du langage C principalement. Ce succès a conduit à une standardisation
...