C++ : Création d'une bibliothèque de chaînes de caractères

Aborder la classe chaîne

Testez gratuitement nos 1300 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Découvrez l'organisation du projet à travers la version finale de la classe chaîne. Passez en revue les choix de gestion mémoire opérés ainsi que ses tests unitaires.

Transcription

Avant de commencer à écrire notre classe chaîne nous allons d'abord nous familiariser avec l'objectif du cours la classe chaîne finalisée et le projet que nous allons manipuler pendant toute la formation. Alors cette classe chaîne est définie en chaine.h, que nous voyons ici. Il y a une partie de constructeur qui sera abordée dans la section prochaine ensuite la partie utilitaires, qui sera dans la section suivante, les opérateurs et opérateurs de comparaison ici qui seront abordés dans la dernière section du chapitre, et puis dans le chapitre suivant, les fonctions de recherche et remplacement et les fonctions de découpages qui sont des fonctionnalités qui peuvent être complexes mais qui seront intéressantes à aborder. Enfin ici, les deux champs de notre classe le champ taille stockant la taille de notre chaîne et le plus intéressant en terme de gestion de mémoire l'utilisation d'un pointeur intelligent unique pointer ou pointeur unique qui désigne une ressource de type tableau de caractères qui va stocker le texte de notre chaîne de caractères. Le choix d'un pointeur unique a été fait pour garantir une bonne gestion de la ressource, quoi qu'il arrive, y compris en cas d'exception pendant la création ou la manipulation de la chaîne cette ressource sera libérée. Pointeur unique et non pointeur partagé puisque seule notre classe a la responsabilité de la gestion de cette ressource. Il n'est donc pas utile de pouvoir partager l'accès à cette ressource. Nous allons maintenant jeter un coup d'œil sur chaine.cpp qui contient donc l'implémentation de notre classe, on remarque au passage la présence de logs qui vous nous permettre de suivre le cycle de vie de notre classe. Remarquons aussi la présence de fonctions qui ne dépassent pas environ, à part certaines, une vingtaine de ligne, mais sinon l'essentiel sont des fonctions courtes d'une à cinq lignes ce qui est tout à fait logique dans ce type de classe. Ne soyez pas trop intimidés par l'étendue du code que nous allons produire nous allons le faire au fur et à mesure et tout sera expliqué à chaque section. On va s'intéresser maintenant au programme principal il est particulier, plutôt que de faire des affichages nous avons choisi d'écrire des tests unitaires. Ces tests unitaires sont faits avec un framework maison si l'on peut dire de test unitaire pour simplifier la compilation sur toutes les plateformes. Bien sûr en entreprise je vous recommande d'utiliser les frameworks de test unitaire éprouvés tels que le cppunit qui est un des plus couramment utilisé, ici nous avons juste deux macros : test et fin et un appel à la fonction insert du C, donc le principe est d'afficher le début du test, d'effectuer une insertion pour vérifier par exemple ici après la création d'une chaîne A par défaut que cette chaîne a une taille qui est nulle, qui vaut zéro. Si cette insertion échoue, si la taille n'est pas à zéro, alors à ce moment-là il y aura un arrêt du programme et il faudra se pencher sur le pourquoi du mauvais fonctionnement de notre fonction. À chaque section et à chaque fois qu'on abordera des fonctionnalités de notre classe chaîne, les tests seront déjà écrits, et nous aurons à nous focaliser sur l'écriture des méthodes qui permettent de passer des tests. Ça respecte en quelque sorte la logique de ce qu'on appelle le TDD, Test driven development, le développement dirigé par les tests, ici notre classe chaîne sera développée pour satisfaire les tests que nous auront écrits. Enfin pour garantir une bonne gestion de la mémoire, nous avons dans outil.h en plus d'une redéfinition du noexcept pour la compatibilité avec Visualstudio, les anciennes versions qui ne supportent pas le noexcept où là on définit une macro, en plus de cette définition de macro nous avons, et c'est là qu'on a quelque chose d'intéressant pour la gestion mémoire, nous avons redéfini les opérateurs new et delete, ce qui nous permet de stocker le nombre de mémoire allouée, le nombre de mémoire libérée et donc cette quantité de mémoire allouée et libéré nous permet d'avoir un bilan donné par la fonction mémoire si on regarde le code ici, c'est la partie un peu complexe, on a surtout une variable, globale dans notre module qui stocke la mémoire allouée et la mémoire libérée et nous la retourne quand on appelle mémoire. Ce qui nous permettra de tester si cette mémoire est bien à zéro à la fin du programme et donc que nous n'avons pas de fuite mémoire. Vous voyez donc qu'on a tout ce qu'il faut pour commencer à écrire une classe chaîne digne de ce nom, alors commençons tout de suite.

C++ : Création d'une bibliothèque de chaînes de caractères

Acquérez les méthodes de développement en C++ avec la création de bibliothèques de chaînes de caractères personnalisées. Abordez les constructeurs, les structures de données, etc.

45 min (10 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :24 oct. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !