begin process at 2012 05 27 16:12:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > EXEMPLE (TOUT BETE) DE CLASS POUR LES NEOPHYTES

EXEMPLE (TOUT BETE) DE CLASS POUR LES NEOPHYTES


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :07/12/2003 Vu :3 350

Auteur : zinotron

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Il fait juste une addition toute bete, c pour montrer les class en C++ (en matant sur cppfrance, j'ai pas vu d'exemple aussi bas, aucun n'avais touché le fond ... moi je creuse encore :p

Source

  • #include <conio.h>
  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <string.h>
  • class cocu{
  • public:
  • int a,b;//les deux variables qu'on vas additionner
  • int add();//la fonction de la class
  • };
  • int cocu::add()//on definit la fonction
  • {
  • return (a+b);
  • }
  • int main(int argc,char *argv[])
  • {
  • int g;//variable qui recoit la valeur de l'addition
  • cocu test;
  • test.a = atoi(argv[1]);
  • printf("Premier nombre rentre :\n%i\n",test.a);
  • test.b = atoi(argv[2]);
  • printf("Second nombre rentre :\n%i\n",test.b);
  • g = test.add();
  • printf("La somme de ces deux nombre est :\n");
  • printf("%i",g);
  • }
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

class cocu{
public:
int a,b;//les deux variables qu'on vas additionner
int add();//la fonction de la class
};

int cocu::add()//on definit la fonction
{
return (a+b);
}

int main(int argc,char *argv[])
{
int g;//variable qui recoit la valeur de l'addition
cocu test;

test.a = atoi(argv[1]);
printf("Premier nombre rentre :\n%i\n",test.a);
test.b = atoi(argv[2]);
printf("Second nombre rentre :\n%i\n",test.b);

g = test.add();
printf("La somme de ces deux nombre est :\n");
printf("%i",g);
}

 Conclusion

Bon bah le fonctionnement (appelons le soft compilé "coucou")
c:\soft>coucou.exe 5 2
voila (je peux pas faire plus simple, dsl...)


 Sources du même auteur

STRING COMPARE
TRIE UN TABLAU D'ENTIER
INT ARGC, INT *ARGV[]
METTRE LE RESULTAT D'UNE COMMANDE DOS DANS UN FICHIER
ENVOYER UN MAIL AU DEMARRAGE DU PC

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

Commentaires et avis

Commentaire de djl le 07/12/2003 20:50:12

je vois pas l'interet, on peut faire la meme chose avec une struct

Commentaire de zinotron le 07/12/2003 22:23:09

tu sais koi ?
on peut faire pareil avec un calculatrice :p
ca sert a montrer comment ca marche.
la je dis peut etre une connerie, mais je ne crois pas qu'on puisse declarer des fonction dans des structs

Commentaire de djl le 07/12/2003 22:35:43

ok, si c'est pour montrer comment ca marche , met au moins a et b en private et fait des accesseurs

on peut mettre des methodes dans une struct;) esaye ca :
#include &lt;iostream.h&gt;
struct add
{
int a,b;
int _add();
};

int add::_add()
{
return a+b;
}

void main()
{
add a={4,5};

cout&lt;&lt;a._add()&lt;&lt;endl;


}

Commentaire de zinotron le 07/12/2003 22:42:15

tiens ca marche comme ca la vie :p
merci de l'info

Commentaire de bruniouze le 07/12/2003 22:55:50

zinotron qu'est ce que j'ai fait?

Commentaire de zinotron le 07/12/2003 23:01:16

bruniouze, rien.
je ne comprend pas ta question (j'ai dit qqch ?)

Commentaire de bruniouze le 08/12/2003 09:36:16

j'avais écrit un message et il a disparu (je demandais a djl s'il savait ce qu'est la programmation orientée objet)

Commentaire de djl le 08/12/2003 13:26:07

et tu me demandais ca par rapport a la remarque que j'avais fait ?
un des principe de la poo c'est l'encapsulation avec attribut invisibles donc je voi pas comment faire une class ou tout est public peut montrer ce qu'est la poo, de plus ca ne montre pas l'interet d'une class vu qu'on peut faire la meme chose avec une simple struct

Commentaire de zinotron le 08/12/2003 18:04:36

en effet, ca montre son utilisation (de base)

Commentaire de Saros le 08/12/2003 19:35:46

Au moins, faut voir l'intêret pratique (quand je pense aux deux années que j'ai passée à me demander qu'est-ce qu'une classe et à quoi ça servait... *snif*...)
Mais c'est vrai que a et b en private ça le fait mieux (avec des fonctions style GetA() ou SetA(int na))...
Saros

Commentaire de vObjects le 09/12/2003 05:28:08

Dite, j'ignore si vous le savez mais, class & struct == 2 et non 1 ... c'est pas pareil du tout ... alors si vous parlez de class, oubliez les struct hein! c'est stupide de comparer les 2 ...

Commentaire de vObjects le 09/12/2003 05:33:15

et j'oubliait, djl, si tu préfère utiliser les structures de facon semblable au class alors va coder en C et oublie le C++ ...

Moi personnellement, l'interêt que je voit dans cette exemple est que ca permet de montrer aux 'débutants' comment créer une class de facon simple et rapide.

Sachez aussi que de mettre une variable 'public' dans une class n'est pas mortel, tout dépend des besoins et de l'utiliter de cette dernière!

Bye!

Commentaire de Bki le 09/12/2003 06:42:24

C'est débile de dire qu'on peut faire la même chose avec une struct. En C++, la seule différence entre une classe et une structure, c'est que les membres sont par défaut en privé dans une classe, et en public dans une structure.

Donc, tout ce qu'on peut faire avec une classe, on peut le faire avec une structure, et vice-versa.

Il faut aussi prendre l'habitude d'en mettre en max en privé, pour éviter de les modifier d'une façon déconseillée. Par exemple, si j'ai une classe horloge avec des champs heure, minute, seconde, c'est bien mieux de ne pouvoir modifier ces champs que via un setMinute(unsigned nb) par exemple, sinon on arrivera avec une montre affichant 14h117 et 24s. D'où l'intérêt d'utiliser un set qui contrôle le changement.
Vous me direz "oui mais ici c'est pas important". C'est juste une bonne habitude à prendre. Et puis, ceux qui utilisent une classe ont (ou devraient) avoir le réflexe d'utiliser ces get et set, et non les champs directement. Donc il faut leur odnner ce qu'ils attendent.

L'initiative de ce code est louable, mais c'est un très mauvais exemple de classe, puisque c'est quelque chose qui ne s'applique absolument pas à la programation orientée objet. Pour un truc comme ça, on utilise des variables. Simplifier un concept, c'est bien, mais il faut éviter de complètement le dénaturer.
Pour un exemple de classe, j'aurais plutôt fait:

#include &lt;iostream&gt;
using namespace std;

const unsigned MAX=100;

class Ballon {
   public:
      Ballon (unsigned =0);
      Ballon (const &Ballon)
      unsigned getPression ();
      void setPression (unsigned);
      void gonfler (int);
      void crever ();
   private:
      unsigned pression;
};

Ballon::Ballon (unsigned pres) {
   pression = pres;
}

unsigned Ballon::getPression () {
   return pression;
}

void Ballon::setPression (unsigned nb) {
   if (nb &gt; MAX) cerr &lt;&lt; "le ballon exploserait" &lt;&lt; endl;
   else pression += nb;
}

void Ballon::gonfler (int nb) {
   if (pression+nb &gt; MAX) cerr &lt;&lt; "le ballon exploserait" &lt;&lt; endl;
   else pression += nb;
}

void Ballon::crever () {
   pression = 0;
}

le main s'écrirait
int main() {
   Ballon ballonDeFoot = new Ballon();
   ballonDeFoot.gonfler (85);
   cout &lt;&lt; "Le ballon est gonflé à " &lt;&lt; ballonDeFoot.getPression() &lt;&lt; endl;
   return 0;
}

Bon, j'ai pas compilé, et le C++, ça fait longtemps que j'en ai plus fait, alors soyez indulgent :)

Et pour êter un peu plus complet, on mentionne l'écriture du constructeur qui peut se faire comme suit :
Ballon::Ballon (unsigned pres) : pression(pres) {}

Ca c'est un exemple tout aussi simple et qui illustre ne dénature pas trop la POO. J'ajouterais qu'il a l'intérêt d'utiliser des bibliothèques standards et portables, et pas cet affreux conio.h.

Ce serait bien que quelqu'un prenne un jour la peine d'écrire un vrai exemple sympa mêlant 2 ou 3 classes relativement simples et BIEN ECRITES. Je ne prétends pas être le meilleur pour le faire, mais je peux y penser :)

Commentaire de zinotron le 09/12/2003 07:44:54

eh beh, je pensais pas qu'un simple ptit bout de code comme ca pouvaios faire couller autant d'encre ...

Commentaire de vObjects le 09/12/2003 12:19:11

Bki, reli ton main(), tu vas avoir des erreurs à la compilation ...
*
-&gt;
delete XXX;
etc ...

Si vous voulez coder OO en C++ alors utiliser les class sinon, allez
faire du 'pseudo-objet' en C avec des structures et arrêtez avec tout ca, vous allez mêler tous les nouveaux/elles ... struct, class, struct, class, ...

Si vous voulez un 'BON' cours sur le C/C++ allez voir ca&gt;
http://www.developpez.com/c/tutcpp/book1.php

Bki&gt; des exemples de class et tout le tralala y sont ...

c'est complet comme cours, en francais, détaillé, facile à comprendre, avec exemples, etc ... etc ... etc ...

et aussi, Bki, je peut comprendre que ca fait longtemp toi et le C++ mais, ton exemple contient des tonnes d'erreurs ... ca aussi c'est affreux =P(conio.h)

maintenant,
bye bye!

Commentaire de BlackGoddess le 09/12/2003 13:59:14

Bki &gt;&gt;

const unsigned MAX=100;
=&gt; tu peux le mettre en static private dans ta classe

Ballon ballonDeFoot = new Ballon();
=&gt; c quoi ca ??????????

Ballon ballonDeFoot
ou
Ballon* ballonDeFoot = new Ballon(); (de pas oublier le delete, acces avec -&gt;)

Commentaire de djl le 09/12/2003 15:49:20

vObjects ==&gt; je trouve dommage que pour coder pratique on soit souvent obliger de melanger c & c++ (procedurial et objet) ce qui est une mauvaise chose

Commentaire de Bki le 09/12/2003 16:02:59

arf sorry, les réflexes Java :D

Commentaire de BlackGoddess le 09/12/2003 16:39:16

djl =&gt; bien d'accord, mais on peut qd meme bien isoler !! :)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales