Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zér0 > Les news > Tutos > Nouveau TP C++ : création de la classe ZString > Lecture d'une news

Commentaires de news :
Nouveau TP C++ : création de la classe ZString

Revenir à liste des news

Nouveau TP C++ : création de la classe ZString

# Par M@teo21, le 25/03/2008 16:06:31
Bien que la partie I du cours de C++ soit officiellement "terminée", un certain nombre d'entre vous n'ont pas manqué de remarquer qu'elle manquait cruellement d'un TP.

En effet, les concepts de la programmation orientée objet enseignés dans cette partie sont riches, et je suis convaincu que sans un TP on ne peut pas se rendre compte si on a vraiment compris ou pas.
Certes, la partie II sur Qt sert en quelque sorte de gigantesque TP, mais ce sera au final une partie assez simple et il me paraissait nécessaire d'introduire un TP avant la fin de la partie I.

Il m'a fallu un certain temps pour rassembler suffisamment de courage pour l'écrire. En effet, je savais d'avance qu'il s'agirait d'un des plus gros TP que j'aurai à écrire. Un des plus difficiles aussi, sans aucun doute.

Image utilisateur
10) TP : La POO en pratique avec ZString

Ce TP vient s'insérer juste après la surcharge d'opérateurs et avant l'héritage. Il n'y est donc pas question d'héritage.
Il fait écho au chapitre 5 qui montrait comment utiliser la classe string de la bibliothèque standard du C++. Ce que ce chapitre propose, c'est ni plus ni moins que de recréer cette classe (avec un peu moins de fonctionnalités bien sûr :p ). Le nom de ZString , pour Zéro-String, a été choisi.

C'est un chapitre difficile, mais je suis convaincu que c'est un excellent exercice pour vous faire comprendre les mécanismes de la POO. Vous devez en particulier être au point avec la gestion des chaînes de caractères. Je vous invite dès le début à relire le chapitre sur les chaînes (issu du cours de C) pour ceux qui auraient oublié.




Bon courage, c'est assez long et ça demande sans aucun doute plus de réflexion qu'un chapitre "classique".
Moi-même j'en ai bavé pour l'écrire, c'est vous dire :p

53 Commentaires

Désolé, les commentaires de cette news sont désactivés, vous ne pouvez en ajouter !

Page : 1  2  Suivante
Pseudo Commentaire
1 visiteur sur cette news (0 membre et 1 anonyme)
Page : 1  2  Suivante
Hors ligne Guill@um€ # Posté le 25/03/2008 16:10:08
===)-----------------------
Avatar
Groupe : Membres
Cool, 1 TP pour le chapitre, c'est bien j'en suis pile là !

Image utilisateur
 
Hors ligne betteraves # Posté le 25/03/2008 16:16:56
the best OS? linux naturally!
Avatar
Groupe : Membres
Trop bien ça va me permettre de retourner un peu sur du C++ et de bien m'entraîner ^^

Utilisez Veosearch à la place de google ou de votre moteur de recherche habituel :) news ici (descendez un peu)
 
Hors ligne aerosmith # Posté le 25/03/2008 16:18:07
Groupe : Membres
Merci mateo faudrait plus de TP dans ce genre (difficile) ou il faut bien reflechir.

Et celui la est vraiment genial j'ai hate de le commencer

mici

#En ces temps d’imposture universelle, dire la vérité est un acte révolutionnaire « 2 + 2 = 5 »
 
Hors ligne gibsonSG # Posté le 25/03/2008 16:19:36
Avatar
Groupe : Membres
ouep, faut que j'aille faire sa maintenant.

gibson ubar
 
Hors ligne Electrolyte # Posté le 25/03/2008 16:33:52
Avatar
Groupe : Membres
Citation : Newser
En effet, je savais d'avance qu'il s'agirait d'un des plus gros TP et que j'aurai à écrire.

A rectifier.

L'arme à la main et la larme à l'oeil
Oui je vais tirer et répandre le deuil
Et je vais pleurer
Et ta vie que je cueille
Ma patrie me décore pour avoir ta mort
 
Hors ligne chindit # Posté le 25/03/2008 16:40:41
KDE fan
Avatar
Groupe : Membres
Chouette, encore un tuto de C++ :lol:

Image utilisateur
Image utilisateur
 
Hors ligne ordiman2 # Posté le 25/03/2008 16:45:02
Geek un jour. Geek toujours...
Avatar
Groupe : Membres
Dommage, je voudrais bien le lire mais j'ai un espace membre à coder pour demain en php. Je n'ai pas le temps...

Choisissez une option :
  • Venir (mettre ici une raison) :D
  • Je sais pas si je viens ,faut que j'regarde si j'ai un meilleur plan j'te rappelle !
  • Je viens pas car (mettre ici excuse bidon) :p


Exemple d'excuses bidon :

-J'dois rester ac ma mère. :-°
- J'ai peur de sortir le soir :'(
 
Hors ligne dk53 # Posté le 25/03/2008 16:49:52
Agena
Avatar
Groupe : Bannis
C'est sympa.

Intel Core 2 quad Q6600 / 2048 Mo DDR2 corsair / Gigabyte GA-P35C-DS3R / Samsung 7200T/Min 2*250Go (Spinpoint T166) en Raid 0 / Nvidia GeForce 8800 GtS 512 Mo / Fortron blue storm II 400w /razer Copperhead /Antec Nine hundred.

Changer une image d'eté en une image hivernale
 
Hors ligne steph580 # Posté le 25/03/2008 17:00:47
Hé hé hé ...
Avatar
Groupe : Membres
:D !

Image utilisateur
 
Hors ligne C0c0 # Posté le 25/03/2008 17:21:58
Ca y est j'ai une citation !
Avatar
Groupe : Membres
Citation : Electrolyte
Citation : Newser
En effet, je savais d'avance qu'il s'agirait d'un des plus gros TP et que j'aurai à écrire.

A rectifier.


+

Citation : News
qui montrait comment utiliser la classe string du la bibliothèque standard


Sinon beau boulot :-)
Hors ligne seb13 # Posté le 25/03/2008 17:40:29
Groupe : Membres
Cool, de quoi avancer dans le cours!
 
Hors ligne raphamil # Posté le 25/03/2008 17:41:30
I'm not a bug, I'm a feature !
Avatar
Groupe : Membres
Super. C'est exactement ce que je prévoyais de faire :)
 
Hors ligne Pole # Posté le 25/03/2008 17:51:21
Chieur professionnel
Avatar
Groupe : Membres
Bof, il faut remplacer tous les delete par delete[] pour éviter les fuites mémoires.

En savoir plus sur la théorie des cordes
Je pense donc je suis.
Je ne pense pas donc je suis ... journaliste! :)
 
Hors ligne Clément.S # Posté le 25/03/2008 18:10:53
Avatar
Groupe : Membres
:) ^^ :D !!!

Mon portfolio
[SDL] Faire des rotations avec SDL_gfx

La vente liée dans le domaine de l'informatique, je dis NON. Vous aussi ? signez la pétition.
Image utilisateur
 
En ligne Linktim # Posté le 25/03/2008 18:13:47
Peace in my heart
Avatar
Newsers
Citation : Clément.S
:) ^^ :D !!!

:o :-° ^^ ?
 
Hors ligne souls killer # Posté le 25/03/2008 18:22:53
Just wanna SdZ!!
Avatar
Groupe : Membres
:p :D :-°

Encore du bon boulot. :)

"Quand la pierre tombe sur l'œuf, alors malheur à l'œuf.
Quand l'oeuf tombe sur la pierre, alors malheur à l'œuf." :p
Philippe Sollers

Rédigez vos news !! | le Manuel du Zér0 | Rédigez des Cahiers des Charges pour vos projets, organisez-vous ! | Choisissez-vous un bel arrière-plan | Perdu sur le Web ?
 
Hors ligne DHKold # Posté le 25/03/2008 18:28:32
Ex-Admin
Avatar
Groupe : Membres
Code : C++ - Afficher / masquer les numéros de ligne
  1. ZString ZString::operator=(const ZString &chaine){
  2.     delete m_chaine;
  3.     m_chaine = copie(chaine.m_chaine);
  4.     m_longueur = longueur(chaine.m_chaine);
  5.  
  6.     return *this;
  7. }


o_O Aïe, c'est super dangereux ca :/ Qu'arrive t'il en cas d'auto-assignation? :p

Code : C++ - Afficher / masquer les numéros de ligne
  1. ZString machaine = "blabla";
  2. //Ici, exemple stupide, en général, ce genre d'auto-assignation arrive lorsqu'on utilise gère plusieurs pointeurs vers un même objet, mais c'est pur montrer le principe
  3. machaine = machaine;


Résultat:

1. "delete m_chaine;" -> Désalloue la chaine "blabla" (mais le pointeur n'est pas à NULL)
2. copie depuis une zone mémoire désallouée :/ (illégal)
3. règle taille (à partir de la nouvelle chaine)

Comme on le voit, ca pause un problème puisqu'on tente d'utiliser une zone mémoire qu'on vient de libérer. Même si certaines distribs linux risque de vous laisser faire, c'est une pratique incorrecte et qui vous fera pousser des cheveux gris sur des systèmes moins permissifs (essayez donc sur solaris... Segmentation Fault (Core Dumped) à (presque) tous les coups :-°)

Il suffit en fait d'ajouter un petit test:

Code : C++ - Afficher / masquer les numéros de ligne
  1. ZString ZString::operator=(const ZString &chaine){
  2.     if (this == &chaine) return *this;
  3.     delete m_chaine;
  4.     m_chaine = copie(chaine.m_chaine);
  5.     m_longueur = longueur(chaine.m_chaine);
  6.  
  7.     return *this;
  8. }

Une erreur avec votre code? Déboguez avec GDB!
----------
Pack DHemoticons (Utilisation Libre)
Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne shadosan # Posté le 25/03/2008 18:28:44
Programme moi un mouton.
Avatar
Groupe : Membres
À l'attaque !

:pirate: :pirate: :pirate: (yarr !)

EDIT : et j'approuve DHKold.

Projets:[QT + C++] Openpad, un éditeur de texte pour me pratiquer avec Qt : 100% v1.3 |~| [QT + C++] Open maker, un rpg maker se rapprochant de Rpg Maker XP : 5% |~| [C++] Mazen, un générateur de donjons et/ou labyrinthes : 100%
>> The daily WTF <<
"He who fights with monsters should look to it that he himself does not become a monster... when you gaze long into the abyss the abyss also gazes into you..." - Friedrich Nietzsche
 
Hors ligne alex.hitman # Posté le 25/03/2008 18:32:15
Groupe : Membres
Ca avance encore, et c'est encore bien !
 
Hors ligne M@teo21 # Posté le 25/03/2008 18:37:23
Doh ! Nuts. Mmh, donuts !
Avatar
Admins
Citation : Pole
Bof, il faut remplacer tous les delete par delete[] pour éviter les fuites mémoires.


Exact, regrettable erreur de ma part, c'est corrigé depuis.
Tu pouvais le dire avec un peu plus d'entrain t'as l'air blasé mon pauvre Pole :D

<tuto etat="redaction" mode="venere" target="c++" />

Ce qui se conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément.

Nicolas Boileau (je suis fan)
Autobiographe à ses heures perdues :p
 
Hors ligne Pole # Posté le 25/03/2008 18:44:44
Chieur professionnel
Avatar
Groupe : Membres
Oui j'attendais un tuto sur Qt. :) (J'adorrrrrre Qt, c'est si mignon)

En savoir plus sur la théorie des cordes
Je pense donc je suis.
Je ne pense pas donc je suis ... journaliste! :)
 
Hors ligne M@teo21 # Posté le 25/03/2008 18:47:53
Doh ! Nuts. Mmh, donuts !
Avatar
Admins
Citation : Pole
Oui j'attendais un tuto sur Qt. :) (J'adorrrrrre Qt, c'est si mignon)


Ah je comprends mieux :p
Mais je réfléchissais à la rédaction d'un chapitre sur Linux pour la prochaine fois, ils vont se sentir délaissés sinon !

Pour Qt, le prochain chapitre sera quoiqu'il arrive centré sur la lecture de la doc. Pas sur une fonctionnalité précise. Je préfère te décevoir à l'avance :p

<tuto etat="redaction" mode="venere" target="c++" />

Ce qui se conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément.

Nicolas Boileau (je suis fan)
Autobiographe à ses heures perdues :p
 
Hors ligne tom'z # Posté le 25/03/2008 18:55:10
Avatar
Groupe : Membres
sympa comme tuto !
 
En ligne Steph0 # Posté le 25/03/2008 19:00:28
Zér0 Or DiE
Avatar
Groupe : Membres
Citation : l'admin
Ah je comprends mieux :p
Mais je réfléchissais à la rédaction d'un chapitre sur Linux pour la prochaine fois, ils vont se sentir délaissés sinon !


Exact ! :p

Stephen



Image utilisateur
 
Hors ligne geenux # Posté le 25/03/2008 19:37:09
Vive Qt
Avatar
Groupe : Membres
J'avais déjà fait ça il y a longtemps pour m'entrainer. Je regarderais quand même comment tu as fait, histoire de remarquer que mon code n'était pas terrible...

Fork Bomb :) (encore un truc de geek)
Code : Console - Afficher / masquer les numéros de ligne
:(){ :|:& };:

Explications : :() définit une fonction nommée : sans paramètres. { :|:& } est le corps de la fonction. Dans celui-ci, la fonction s'appelle elle-même (:), puis redirige la sortie à l'aide d'un pipe (|) sur l'entrée de la même fonction : et cache le processus en fond avec &. La fonction, ensuite appelée avec :, s'appelle récursivement à l'infini. Résultat: impossible d'utiliser le système tant que tous les processus n'ont pas été libéré, or il est impossible de les libérer car la table des processus est pleine, donc forkbomb! :lol:
 
Hors ligne wilo # Posté le 25/03/2008 19:47:25
Semper Parati ! >)(<
Avatar
Groupe : Membres
merci pour le TP !

"Fais de ta vie un rêve et de ton rêve une réalité"
Antoine de Saint-Exupéry
 
Hors ligne neamar # Posté le 25/03/2008 20:00:14
http://neamar.fr
Avatar
Groupe : Membres
Ah ! Enfin un nouveau TP ! Quand même...une semaine sans nouveau chapitre, on a cru qu'"il" était mort :p

  • Ca coule de Source : Découvrir votre niveau en informatique via un jeu ?(déjà plus de 20 pages de topic sur le SDZ, et 25000 visionnages !).
  • TXT2JPG : Des e-books sur son baladeur ?.
  • Mini-Dico : Comprendre la signification des mots alacrité, ataraxie, amphibologique, dipsomane...et autres si affinités.
 
Hors ligne Adrien93 # Posté le 26/03/2008 08:52:42
Avatar
Groupe : Membres
Youpie pile la où je me suis arrêter :)
Bravo ;)

Je ne peux révéler ce qui par le passé fut scellé...
 
En ligne elmcherqui # Posté le 26/03/2008 10:20:36
la vie est un programme
Avatar
Groupe : Membres
que dire de plus ?
que dieu te benisse mateo et te garde en bonne sante :)
je t'adore !!!

ps : sisi je suis hetero :p

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un
téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon
téléphone
Bjarne Stroustrup - Créateur du langage C++
 
Hors ligne Monster Devil # Posté le 26/03/2008 12:30:17
Le refus du vrai : l'humanité
Avatar
Groupe : Membres
Citation : M@teo21
Je réfléchissais à la rédaction d'un chapitre sur Linux pour la prochaine fois, ils vont se sentir délaissés sinon !


+1 :D
 

Désolé, les commentaires de cette news sont désactivés, vous ne pouvez en ajouter !

Revenir à liste des news

Nombre de connectés 651 Zér0s connectés | Requêtes SQL 5 requêtes | Temps de génération de la page 0.0926s (0.0593s)

Changer de design - Revue de presse - En savoir plus - Plan du site
Nous contacter - Mentions légales - Publicité
Politique d'accessibilité - Fil RSS - XHTML 1.0 - CSS 2.0

Y'a plus rien à lire, faut remonter maintenant !