Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > 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 pas 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à !
 
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)

Vous avez des questions ayant trait au Lycée (orientation, méthodes...)? Désormais, plus besoin de créer un nouveau sujet, posez-les dans le topic spécialement crée pour ça!
 
Hors ligne aerosmith # Posté le 25/03/2008 à 16:18:07
Avatar
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
Tu devrais.
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...

Mon Site , Faites pas gaffe au design horrible, la V2 arrangera cela.
Ce site est dédié à mon groupe de rock, musique ,musique et encore musique sont tous ce qu'il y a de mieux
V2 en préparation : |||||||||| 10%

 
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
Avatar
Groupe : Membres
Super. C'est exactement ce que je prévoyais de faire :)

(\__/)
(/¤.¤\) <= Lapinator ! ^^
('')|('')
Exécuter plusieurs fonctions au chargement d'une pageUne horloge temps réel grâce à Javascript (nouveau) • Séparer le comportement de la strucure (bientôt) • Chercher plus rapidement dans la doc Qt
72.73% apple-geek
 
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
<lien url="evil:%">Vive Google Chrome</lien>
 
Hors ligne Clément.S # Posté le 25/03/2008 à 18:10:53
Avatar
Groupe : Membres
:) ^^ :D !!!

Mon site | Recrutement FunRacing
[SDL] Faire des rotations avec SDL_gfx
Apprenez le Pixel Art !

La vente liée dans le domaine de l'informatique, je dis NON. Vous aussi ? signez la pétition.
 
Hors ligne Linktim # Posté le 25/03/2008 à 18:13:47
The Other Side
Avatar
Newsers
Citation : Clément.S
:) ^^ :D !!!

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

Encore du bon boulot. :)

"Qui mange du bœuf... Mange du bœuf.
Qui mange du porc... N'est pas musulman."

Une autre, que j'aime bien :
"Qui ne tente rien n'a rien.
Qui tente de la merde... n'a rien non plus"
. :D
Rédigez vos news !! | le Manuel du Zér0 | Rédigez des Cahiers des Charges pour vos projets, organisez-vous ! | Où habitent nos Zér0s ? | 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
WRYYYYYYYY !!
Avatar
Groupe : Membres
À l'attaque !

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

EDIT : et j'approuve DHKold.
 
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

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
<lien url="evil:%">Vive Google Chrome</lien>
 
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

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 !
 
Hors 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
 
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...
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à 30 pages de topic sur le SDZ, et 50000 visionnages !).
  • TXT2JPG : Des e-books sur ton baladeur ?
  • Mini-Dico : Comprendre la signification des mots alacrité, ataraxie, amphibologique, dipsomane...et autres si affinités.

De toute façon personne ne lit les signatures. Ah si toi ? Bon bah personne d'autre que toi alors ;) .
 
Hors ligne Adrien93 # Posté le 26/03/2008 à 08:52:42
Avatar
Groupe : Membres
Youpie pile la où je me suis arrêter :)
Bravo ;)

KDE 4.1 C'est Magiik' :magicien:
Le C++, C'est plus fort que toi! :p
 
Hors 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

-La répétition est humaine , la récurrence Divine .
 
Hors ligne Monster Devil # Posté le 26/03/2008 à 12:30:17
Terreur Urbaine
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 pas en ajouter !

Revenir à liste des news

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

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

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 94 Zéros connectés | Requêtes SQL 5 requêtes | Temps de génération de la page : Total (SQL) 0.0233s (0.0058s)