begin process at 2012 02 12 17:43:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > TUTORIAL OPERATEURS PARTIE 1

TUTORIAL OPERATEURS PARTIE 1


 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 :Initié Date de création :18/10/2002 Date de mise à jour :18/10/2002 19:20:48 Vu :2 880

Auteur : DreamProjectTeam

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

 Description

Pour clarifier ma programmation, j'utilise les operateurs et je vous encourage à le faire.
Ce tutorial est dans la continuité de celui sur DPString (En fait il utilise les fonctions windows cachées par des operateurs)

Source

  • /*
  • je considere que pour une programmation lisible, on declare d'abord puis on definit
  • voire la declaration dans un header et la definition dans un source
  • comme ca on a juste à faire un include dans un autre source pour pouvoir utiliser la classe
  • Ce tutorial ne necessite que peu de connaissances en c++
  • */
  • /**************************************************************************************/
  • // MaClasseAvecOps.h
  • #include <windows.h>
  • class MaClasseAvecOps
  • {
  • INT entier;
  • CHAR caractere;
  • /*
  • les types definis par windows sont les memes que les types de
  • base du C++ mais en majuscule (ils sont sur 32 bits ce qui est plus rapide)
  • j'utiliserai ceux-ci par habitude mais vous pouvez faire comme vous le voulez.
  • */
  • public: // les operateurs DOIVENT etre publics.
  • BOOL operator ==(INT i); // l'operateur == renvoie un booleen et prend en parametre le type voulu
  • BOOL operator ==(CHAR c); // on surcharge l'operateur ==
  • // comme ca si on fait "truc == caractere" ou "truc == nombre", le compilateur choisit la fonction
  • BOOL operator ==(MaClasseAvecOps C); // truc super bien des operateurs : on compare deux classes de meme type utilisateur
  • VOID operator =(INT i); // l'operateur = est comme == mais ne renvoie rien
  • VOID operator =(CHAR c);
  • VOID operator +=(INT i);// +=, -=, ++ et -- retournent VOID
  • VOID operator -=(INT i);
  • VOID operator ++();// ++ et -- ne prennent aucun parametre
  • VOID operator --();
  • };
  • /**************************************************************************************/
  • // main.cpp
  • void main()
  • {
  • MaClasseAvecOps Ops;
  • /*
  • on instancie sans new avec pointeurs car il existe deja des operateurs pour les pointeurs ex:
  • MaClasseAvecOps *Ops = new MaClasseAvecOps;
  • // impossible:
  • Ops = 'a';
  • // je crois qu'il faut faire un truc du genre
  • (*Ops) = 'a';
  • //ou
  • Ops->operator =('a'); // appel explicite
  • // c'est moins pratique et on perd le fait qu'un operateur soit un operateur (mais possible)
  • */
  • Ops = 1; // le int membre est egal à 1
  • Ops = 'b'; // le char membre est egal à 'b'
  • Ops++; // le int membre est egal à 2
  • Ops -= 15; // le int membre est egal à -13
  • }
  • /**************************************************************************************/
  • // MaClasseAvecOps.cpp
  • BOOL MaClasseAvecOps::operator ==(INT i)
  • {
  • return (entier == i); // on utilise ici l'operateur par defaut du c++ sur les int
  • // on se rapporte toujours aux connaissances de base
  • }
  • BOOL MaClasseAvecOps::operator ==(CHAR c)
  • {
  • return (caractere == c);
  • }
  • BOOL MaClasseAvecOps::operator ==(MaClasseAvecOps C);
  • {
  • return ((C.caractere = caractere) && (C.entier = entier))
  • }
  • VOID MaClasseAvecOps::operator =(INT i)
  • {
  • entier = i;
  • }
  • VOID MaClasseAvecOps::operator =(CHAR c)
  • {
  • caractere = c;
  • }
  • VOID MaClasseAvecOps::operator +=(INT i)
  • {
  • entier += i;
  • }
  • VOID MaClasseAvecOps::operator -=(INT i)
  • {
  • entier -= i;
  • }
  • VOID MaClasseAvecOps::operator ++()
  • {
  • entier++;
  • }
  • VOID MaClasseAvecOps::operator --()
  • {
  • entier--;
  • }
/* 
    je considere que pour une programmation lisible, on declare d'abord puis on definit
    voire la declaration dans un header et la definition dans un source
    comme ca on a juste à faire un include dans un autre source pour pouvoir utiliser la classe
    Ce tutorial ne necessite que peu de connaissances en c++
*/

/**************************************************************************************/
// MaClasseAvecOps.h
#include <windows.h>

class MaClasseAvecOps
{
    INT entier;
    CHAR caractere;
/* 
    les types definis par windows sont les memes que les types de 
    base du C++ mais en majuscule (ils sont sur 32 bits ce qui est plus rapide)
    j'utiliserai ceux-ci par habitude mais vous pouvez faire comme vous le voulez.
*/

public: // les operateurs DOIVENT etre publics.
    BOOL operator ==(INT i); // l'operateur == renvoie un booleen et prend en parametre le type voulu
    BOOL operator ==(CHAR c); // on surcharge l'operateur == 
	// comme ca si on fait "truc == caractere" ou "truc == nombre", le compilateur choisit la fonction
    BOOL operator ==(MaClasseAvecOps C); // truc super bien des operateurs : on compare deux classes de meme type utilisateur
    VOID operator =(INT i); // l'operateur = est comme == mais ne renvoie rien
    VOID operator =(CHAR c);
    VOID operator +=(INT i);// +=, -=, ++ et -- retournent VOID
    VOID operator -=(INT i);
    VOID operator ++();// ++ et -- ne prennent aucun parametre
    VOID operator --();
};

/**************************************************************************************/
// main.cpp

void main()
{
    MaClasseAvecOps Ops;
    /* 
        on instancie sans new avec pointeurs car il existe deja des operateurs pour les pointeurs ex:
        MaClasseAvecOps *Ops = new MaClasseAvecOps;
        // impossible:
        Ops = 'a';
        // je crois qu'il faut faire un truc du genre 
        (*Ops) = 'a';
        //ou
        Ops->operator =('a'); // appel explicite
        // c'est moins pratique et on perd le fait qu'un operateur soit un operateur (mais possible)
    */
    Ops = 1; // le int membre est egal à 1
    Ops = 'b'; // le char membre est egal à 'b'
    Ops++; // le int membre est egal à 2
    Ops -= 15; // le int membre est egal à -13
}

/**************************************************************************************/
// MaClasseAvecOps.cpp


BOOL MaClasseAvecOps::operator ==(INT i)
{
    return (entier == i); // on utilise ici l'operateur par defaut du c++ sur les int
    // on se rapporte toujours aux connaissances de base
}

BOOL MaClasseAvecOps::operator ==(CHAR c)
{
    return (caractere == c);
}

BOOL MaClasseAvecOps::operator ==(MaClasseAvecOps C);
{
    return ((C.caractere = caractere) && (C.entier = entier))
}

VOID MaClasseAvecOps::operator =(INT i)
{
    entier = i;
}

VOID MaClasseAvecOps::operator =(CHAR c)
{
    caractere = c;
}
VOID MaClasseAvecOps::operator +=(INT i)
{
    entier += i;
}

VOID MaClasseAvecOps::operator -=(INT i)
{
    entier -= i;
}

VOID MaClasseAvecOps::operator ++()
{
    entier++;
}
VOID MaClasseAvecOps::operator --()
{
    entier--;
}

 Conclusion

J'ai conçu ce code "à la main" au notepad, il n'a donc pas été testé mais devrait etre compatible avec Dev-C++.
Si vous avez des erreurs faites les parvenir

Visitez http://dreamproject.free.fr


 Sources du même auteur

APPLICATION GUI MULTI-PLATEFORME ORIENTÉ OBJET[DEV-C++]
Source avec Zip DPSTRING [TESTÉ SOUS DEV-C++ 5]

 Sources de la même categorie

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
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de Kaid le 18/10/2002 20:05:56

Tu n'as pas compilé ton code, d'où 2 petites erreurs:

1- BOOL MaClasseAvecOps::operator ==(MaClasseAvecOps C); -&gt; le ;
2- ((C.caractere = caractere) && (C.entier = entier)) -&gt; cmp par = et non ==

Sinon les 'BOOL' Windows, c'est simplement un typedef (long) pour palier l'absence du type 'bool' en C.  

Commentaire de ensiame le 14/03/2004 16:58:53

Il est dommage que l' operator+ soit absent. Est-ce parce qu'il est inutile, ou est-ce uniquement un oubli?

Commentaire de Ilsundal le 23/02/2007 16:20:33

domage aussi que l'opérateur ++ ne soit pas redefini.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,374 sec (4)

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