Description
Passez au niveau supérieur dans votre carrière de développeur avec cette mine d’or technique qui transforme les concepts complexes en solutions de code applicables immédiatement.
Sommaire
Un guide pratique pour maîtriser la programmation C++ avancée
D’abord, le collectif d’experts rédige C++ en action, une ressource incontournable pour les développeurs ambitieux. En effet, ce manuel pratique concentre ses efforts sur l’application concrète des concepts du langage. Justement, les auteurs proposent des solutions éprouvées pour structurer des applications robustes et performantes. De plus, les lecteurs découvrent comment exploiter toute la puissance du C++ moderne. Ainsi, cette ressource répond efficacement à des problématiques de développement logiciel complexes. Alors, l’approche orientée vers l’efficacité aide les programmeurs de manière significative. En somme, ce livre propulse les techniciens de la théorie à une maîtrise professionnelle du code.
Exploitation de la bibliothèque standard et gestion des ressources
D’une part, ce manuel technique accorde une place prépondérante à la bibliothèque standard (STL). Précisément, les spécialistes détaillent l’utilisation des conteneurs, des algorithmes et des itérateurs. Ensuite, ces outils optimisent les performances globales des programmes informatiques. Parallèlement, les rédacteurs portent une attention particulière à la sécurité du code. Effectivement, l’usage des pointeurs intelligents et la gestion des exceptions renforcent cette sécurité. Aussi, les auteurs partagent des techniques innovantes pour éviter les fuites de mémoire. Justement, ces méthodes garantissent la stabilité complète des systèmes logiciels. Bref, tout développeur de grand projet doit acquérir ces connaissances fondamentales.
Architecture logicielle et techniques de métaprogrammation
D’autre part, le livre explore les modèles de conception pour créer des logiciels évolutifs. Concrètement, l’ouvrage aborde la métaprogrammation à base de modèles (templates) de façon précise. Ainsi, cette technique génère un code flexible et facilement réutilisable. De plus, le lecteur apprend à gérer la programmation concurrente et le multithreading. Alors, ces compétences permettent d’exploiter pleinement la puissance des processeurs modernes. Ensuite, les auteurs combinent habilement la théorie architecturale et les astuces de débogage. De fait, cette alliance fournit toutes les clés pour concevoir des systèmes élégants. En conclusion, les ingénieurs logiciels adoptent ce compagnon indispensable pour atteindre l’excellence.
Caractéristiques
-
Titre : C++ en action
-
Auteurs : D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis et Jeff Cogswell
-
Éditeur : O’Reilly
-
Format : Broché
-
Nombre de pages : 555 pages
-
Dimensions : 17,5 x 24 x 2,5 cm
-
Dépôt légal : 2006
-
Langue : Français
-
ISBN-13 : 9782841774074
D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, Jeff Cogswell
Envoi soigné et Déposé en 48h (jours ouvrables) Edition O’XReilly 17,5 x 24 x 2,5 cm 555 pages Dépot légal:2006 Très Bon état
Résumé
Une approche pratique pour maîtriser le développement logiciel moderne
D’abord, ce livre propose une immersion concrète dans l’univers complexe du langage C++. En effet, les auteurs privilégient une approche axée sur la résolution de problèmes réels. Justement, chaque chapitre traite de défis spécifiques que les programmeurs rencontrent en entreprise. De plus, vous apprendrez à structurer votre code de manière efficace et robuste. Ainsi, l’ouvrage met l’accent sur les meilleures pratiques de programmation actuelle. Alors, il s’adresse aux développeurs qui possèdent déjà les bases du langage. Effectivement, le contenu aide à transformer des connaissances théoriques en compétences opérationnelles. En somme, ce guide indispensable vous permet de produire des logiciels de haute qualité. D’ailleurs, la pédagogie repose sur des exemples de code clairs et testés. Finalement, vous découvrirez comment optimiser vos flux de travail quotidiens avec brio.
Exploration des bibliothèques standards et gestion de la mémoire
D’une part, le manuel explore en profondeur la bibliothèque standard, également appelée STL. Précisément, les auteurs expliquent comment utiliser les conteneurs et les algorithmes efficacement. Ensuite, vous apprendrez à gérer la mémoire sans créer de fuites de données. Parallèlement, le livre détaille l’utilisation des pointeurs intelligents pour sécuriser vos applications. Aussi, les rédacteurs abordent largement la manipulation des chaînes de caractères et des flux. Justement, chaque technique présentée vise à améliorer la performance globale de vos programmes. De fait, l’ouvrage traite de la gestion des exceptions pour éviter les plantages. Alors, vous saurez comment concevoir des systèmes capables de supporter des charges importantes. Certes, les équipes techniques estiment cette expertise cruciale pour les projets d’envergure. Bref, la maîtrise de ces outils fondamentaux constitue le cœur du métier de développeur.
Conception orientée objet et techniques de métaprogrammation avancées
D’autre part, l’architecture logicielle se place au centre des préoccupations de cet ouvrage expert. Concrètement, vous étudierez les modèles de conception, aussi appelés patterns, les plus utilisés. Ensuite, les auteurs expliquent comment créer des classes réutilisables et faciles à maintenir. Justement, l’équipe éditoriale analyse avec précision la métaprogrammation avec les modèles, ou templates. Ainsi, cette technique permet de générer du code générique puissant et flexible. De plus, vous découvrirez comment réduire la redondance dans vos fichiers sources. Alors, le livre aborde la programmation multithread pour exploiter les processeurs modernes. Précisément, les spécialistes expliquent simplement la synchronisation des données entre plusieurs fils d’exécution. Effectivement, ces concepts avancés permettent de repousser les limites du langage C++. En conclusion, vous deviendrez capable de concevoir des architectures logicielles complexes et élégantes.
Méthodes de débogage et optimisation des performances du code
Pour finir, le dernier volet de l’ouvrage concerne la phase cruciale du test. Spécifiquement, les auteurs partagent des astuces pour traquer les erreurs les plus subtiles. Puis, vous apprendrez à utiliser les outils de profilage pour identifier les lenteurs. Notamment, les experts traitent l’optimisation du code sans sacrifier la lisibilité du programme. Aussi, le livre donne des conseils précieux pour accélérer l’exécution des calculs intensifs. Alors, vous saurez comment compiler vos projets pour différentes plateformes cibles. De surcroît, des méthodes éprouvées facilitent grandement la gestion des dépendances externes. Assurément, ce manuel vous accompagne fidèlement de la conception jusqu’au déploiement final. Dès lors, il constitue une ressource précieuse pour tout professionnel de l’informatique. Globalement, vous gagnerez en productivité tout en améliorant la fiabilité de vos créations.
Table des matières
Préface… xi
Construction d’applications C++… 1
1.1. Obtenir et installer GCC… 15
1.2. Construire une application « Bonjour, Monde » simple en ligne de commande… 17
1.3. Construire une bibliothèque statique en ligne de commande… 23
1.4. Construire une bibliothèque dynamique en ligne de commande… 24
1.5. Construire une application complexe en ligne de commande… 32
1.6. Installer Boost.Build… 37
1.7. Construire une application « Bonjour, Monde » simple avec Boost.Build… 38
1.8. Construire une bibliothèque statique avec Boost.Build… 42
1.9. Construire une bibliothèque dynamique avec Boost.Build… 43
1.10. Construire une application complexe avec Boost.Build… 45
1.11. Construire une bibliothèque statique avec un EDI… 48
1.12. Constuire une bibliothèque dynamique avec un EDI… 51
1.13. Construire une application complexe avec un EDI… 54
1.14. Obtenir GNU make… 59
1.15. Construire une application « Bonjour Monde » simple avec GNU make… 61
1.16. Construire une bibliothèque statique avec GNU Make… 69
1.17. Construire une bibliothèque dynamique avec GNU Make… 74
1.18. Construire une application complexe avec GNU make… 75
1.19. Définir une macro… 79
1.20. Spécifier une option de ligne de commande depuis votre EDI… 81
1.21. Produire une version de débogage… 82
1.22. Produire une version finale… 86
1.23. Spécifier une variante de la bibliothèque d’exécution… 89
1.24. Imposer une conformité stricte au standard C++… 93
1.25. Lier automatiquement un fichier source sur une bibliothèque spécifiée… 96
1.26. Utiliser les modèles exportés… 98
Organisation du code… 103
2.1. S’assurer qu’un fichier d’en-têtes n’est inclus qu’une seule fois… 105
2.2. Garantir l’existence d’une seule instance d’une variable parmi des fichiers sources… 106
2.3. Réduire les directives #include à l’aide de la pré-déclaration de classe… 108
2.4. Prévenir les conflits de noms à l’aide des espaces de noms… 109
2.5. Inclure un fichier inline… 116
Nombres… 117
3.1. Convertir une chaîne en type numérique… 117
3.2. Convertir des nombres en chaînes de caractères… 120
3.3. Tester si une chaîne contient un nombre valide… 123
3.4. Comparer des nombres en virgule flottante avec une précision bornée… 126
3.5. Analyser syntaxiquement une chaîne contenant un nombre en notation scientifique… 128
3.6. Convertir entre types numériques… 130
3.7. Récupérer les valeurs minimum et maximum d’un type numérique… 133
Chaînes de caractères et texte… 135
4.1. Remplir une chaîne… 136
4.2. Tronquer une chaîne… 137
4.3. Stocker des chaînes dans une séquence… 143
4.4. Obtenir la longueur d’une chaîne… 146
4.5. Inverser une chaîne… 149
4.6. Découper une chaîne… 149
4.7. Découper une chaîne en mots… 152
4.8. Assembler une séquence de chaînes… 155
4.9. Trouver quelque chose dans des chaînes… 157
4.10. Retrouver la nième instance d’une sous-chaîne… 160
4.11. Supprimer une sous-chaîne d’une chaîne… 162
4.12. Convertir une chaîne en bas de casse ou capitales… 164
4.13. Effectuer une comparaison insensible à la casse… 166
4.14. Effectuer une recherche insensible à la casse dans une chaîne… 168
4.15. Convertir des tabulations en espace et inversement dans un fichier texte… 170
4.16. Effectuer un retour automatique à la ligne dans un fichier texte… 173
4.17. Dénombrer les caractères, les mots et les lignes d’un fichier texte… 175
4.18. Dénombrer les instances de chaque mot dans un fichier texte… 177
4.19. Ajouter des marges à un fichier texte… 180
4.20. Justifier un fichier texte… 182
4.21. Réduire des suites d’espaces à un seul espace dans un fichier texte… 185
4.22. Corriger automatiquement un texte lors de la modification d’un tampon… 186
4.23. Lire un texte de champs séparés par des virgules… 189
4.24. Découper une chaîne à l’aide d’expressions régulières… 191
Dates et heures… 193
5.1. Obtenir l’heure et la date actuelles… 193
5.2. Transformer une date en chaîne… 196
5.3. Effectuer des calculs avec des dates… 199
5.4. Conversions entre fuseaux horaires… 200
5.5. Déterminer le numéro d’un jour dans une année donnée… 201
5.6. Définir des types numériques contraints… 203
Stockage de données avec les conteneurs… 209
6.1. Utiliser des vecteurs plutôt que des tableaux… 210
6.2. Utilisation efficace des vecteurs… 214
6.3. Copier un vecteur… 218
6.4. Stocker des pointeurs dans un vecteur… 220
6.5. Stocker des objets dans une liste… 221
6.6. Associer des chaînes à d’autres objets… 226
6.7. Utiliser les tables de hachage… 232
6.8. Stockage ordonné d’objets… 237
6.9. Stocker des conteneurs dans des conteneurs… 240
Algorithmes… 243
7.1. Parcourir un conteneur… 244
7.2. Retirer des objets d’un conteneur… 251
7.3. Mélanger aléatoirement des données… 254
7.4. Comparer des intervalles… 255
7.5. Fusionner des données… 258
7.6. Ordonner un intervalle… 262
7.7. Partitionner un intervalle… 265
7.8. Opérations ensemblistes sur des séquences… 267
7.9. Transformer des éléments dans une séquence… 270
7.10. Créer votre propre algorithme… 272
7.11. Imprimer un intervalle vers un flux… 275
Classes… 279
8.1. Initialiser des variables membres de classe… 280
8.2. Utiliser une fonction pour créer des objets avec les modèles de fabrique de classes… 283
8.3. Utiliser les constructeurs et les destructeurs pour gérer les ressources… 285
8.4. Ajouter automatiquement de nouvelles instances de classe à un conteneur… 287
8.5. S’assurer de la copie unique d’une variable membre… 289
8.6. Déterminer le type d’un objet à l’exécution… 291
8.7. Déterminer si la classe d’un objet est une sous-classe d’une autre… 293
8.8. Donner un identifiant unique à chaque instance d’une classe… 294
8.9. Créer une classe singleton… 297
8.10. Créer une interface à l’aide d’une classe de base abstraite… 299
8.11. Écrire un modèle de classe… 304
8.12. Écrire un modèle de fonction membre… 308
8.13. Surcharger les opérateurs d’incrémentation et de décrémentation… 311
8.14. Surcharger les opérateurs arithmétiques et d’assignation pour les classes intuitives… 313
8.15. Appeler une fonction virtuelle d’une superclasse… 320
9. Exceptions et sécurité… 323
9.1. Créer une classe exception… 323
9.2. Sécuriser un constructeur vis-à-vis des exceptions… 327
9.3. Sécuriser une liste d’initialisation… 330
9.4. Sécuriser les fonctions membres vis-à-vis des exceptions… 333
9.5. Copier un objet de façon sûre… 338
10. Flux et fichiers… 343
10.1. Aligner du texte… 344
10.2. Mettre en forme des données en virgule flottante… 348
10.3. Créer vos propres manipulateurs de flux… 351
10.4. Envoyer une classe dans un flux… 354
10.5. Lire une classe depuis un flux… 357
10.6. Obtenir des informations sur un fichier… 358
10.7. Copier un fichier… 360
10.8. Effacer ou renommer un fichier… 363
10.9. Créer un fichier temporaire… 365
10.10.Créer un répertoire… 367
10.11.Supprimer un répertoire… 369
10.12.Obtenir le contenu d’un répertoire… 371
10.13.Extraire l’extension de fichier depuis une chaîne… 373
10.14.Extraire un nom de fichier d’un chemin complet… 374
10.15.Extraire un chemin à partir d’un chemin complet vers un fichier… 375
10.16.Remplacer l’extension d’un fichier… 377
10.17.Combiner deux chemins en un seul… 378
11. Sciences et mathématiques… 381
11.1. Compter le nombre d’éléments d’un conteneur… 382
11.2. Trouver la plus grande ou plus petite valeur d’un conteneur… 383
11.3. Calculer la somme et la moyenne des éléments d’un conteneur… 386
11.4. Filtrer des valeurs hors d’un intervalle donné… 389
11.5. Calculer la variance, l’écart type et d’autres fonctions statistiques… 390
11.6. Générer des nombres aléatoires… 393
11.7. Initialiser un conteneur avec des nombres aléatoires… 395
11.8. Représenter un vecteur numérique dynamiquement dimensionné… 397
11.9. Représenter un vecteur numérique à taille fixe… 398
11.10.Calculer un produit scalaire… 401
11.11.Calculer la norme d’un vecteur… 403
11.12.Calculer la distance entre deux vecteurs… 403
11.13.Implémenter un stride iterator… 405
11.14.Implémenter une matrice dynamiquement dimensionnée… 409
11.15.Implémenter une matrice à taille constante… 412
11.16.Multiplier des matrices… 415
11.17.Calculer une Transformée de Fourier Rapide… 417
11.18.Utiliser des coordonnées polaires… 419
11.19.L’arithmétique d’un ensemble de bits… 421
11.20.Représenter de grands entiers à largeur fixe… 425
11.21.Implémenter des nombres en virgule fixe… 429
12. Multithreading… 433
12.1. Créer un thread… 434
12.2. Sécuriser par des threads l’accès à une ressource… 437
12.3. Avertir un thread depuis un autre… 444
12.4. Initialiser une seule fois une ressource partagée… 447
12.5. Passer un paramètre à une fonction thread… 448
13. Internationalisation… 451
13.1. Saisir une chaîne Unicode… 452
13.2. Lire et écrire des nombres… 453
13.3. Lire et écrire des dates et des heures… 456
13.4. Lire et écrire des devises… 461
13.5. Ordonner des chaînes localisées… 465
14. XML… 467
14.1. Analyser un document XML simple… 468
14.2. Employer les chaînes Xerces… 476
14.3. Parser un document XML complexe… 479
14.4. Manipuler un document XML… 490
14.5. Valider un document XML à l’aide d’une DTD… 495
14.6. Valider un document XML à l’aide d’un schéma… 499
14.7. Transformer un document XML avec XSLT… 503
14.8. Évaluer une expression XPath… 509
14.9. Utiliser XML pour sauvegarder et restaurer un ensemble d’objets… 515
15. Divers… 521
15.1. Pointeurs de fonction et fonctions de rappel… 521
15.2. Utiliser des pointeurs sur membres de classes… 523
15.3. S’assurer qu’une fonction ne modifie pas un paramètre… 525
15.4. S’assurer qu’une méthode ne modifie pas son objet… 528
15.5. Écrire un opérateur qui ne soit pas une méthode… 529
15.6. Initialiser une séquence avec une liste de valeurs… 531
Index… 535
Quatrième de couverture
**C++/Programmation**
**C++ en action**
C++ est un langage riche et complexe, aux puissantes fonctionnalités : bâti autour du langage C, il est orienté objet et propose des fonctions en ligne, la surcharge d’opérateurs, etc. Il se retrouve aujourd’hui à la base de nombreux applicatifs et d’interfaces de développement graphiques.
Cet ouvrage propose un ensemble de 171 solutions adaptables immédiatement sur le modèle : un problème, une solution, une discussion. Des experts en C++ répondent ici aux questions que tout programmeur en C++ se pose un jour ou l’autre. L’accent a été mis d’une part sur la performance et sur la portabilité et d’autre part sur le recours aux nombreuses bibliothèques C++ et notamment Boost.
Descriptif
Les recettes proposées couvrent un large éventail de domaines, allant des tâches simples à des manipulations plus complexes ; vous trouverez par exemple :
- – Travailler avec des nombres pour les convertir, les comparer.
- – Dates et heures : formatage, conversion, etc.
- – Gestion des exceptions et sécurité : créer une classe exception.
- – Classes et objets : initialiser des variables membres de classe, appeler une fonction virtuelle d’une super-classe.
- – Construire des applications C++ avec make, Boost.Build.
- – Analyser du XML et utiliser les Schemas, XSLT, XPath.
- – Manipuler des chaînes de caractères et du texte.
- – Le multithreading : créer un thread, initialiser une seule fois une ressource partagée, etc.
- – L’internationalisation : lire et écrire des devises, des dates, saisir une chaîne Unicode.
- – Calculs mathématiques et scientifiques : somme, moyenne, statistiques, distance entre deux vecteurs.
- – Les algorithmes : retirer des objets d’un conteneur, ordonner un intervalle.
S’il est parfois instructif de réinventer la roue, le faire en C++ n’apportera que désagréments et perte de temps. Recourir à la bibliothèque standard de C++, aux bibliothèques Boost et aux solutions proposées ici feront gagner un temps précieux au programmeur et lui épargneront des lignes de codes inutiles, qu’il soit débutant ou plus expérimenté.
ISBN 2-84177-407-4
















Avis
Il n’y a pas encore d’avis.