NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011
-
5 avril 2005 à 03:45
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011
-
6 avril 2005 à 02:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
tu pourrais avoir plusieurs modules pour gérer des fichiers jounaux par exemple et pouvoir utiliser celui que tu veux sans code supplémentaire ... ce n'est qu'un exemple ...
Mais bref, ce n'est _pas_ inutile ...
gilids, c'était surtout le mot `réinventer`, c'était un peu trop non? Il n'a rien `réinventé` ici et ce n'est pas du OO, ca lui ressemble d'une certaine facon oui mais sans plus ...
Arnaud16022, depuis le `C99 je crois`, le (*...) est devenu optionnel en C aussi, `optionnel` car on peu encore utiliser cette `notation` ...
Au fait Cyrille2, faire de la `pseudo-OO` en C c'est vraiment `le bordel` et très laid alors continue dans cette voie, c'est beaucoup mieux ainsi :}
~(.:: NitRic ::.)~
cs_Cyrille2
Messages postés113Date d'inscriptionvendredi 16 août 2002StatutMembreDernière intervention15 mai 2005 5 avril 2005 à 23:32
Bjr!
tout d'abord, merci pour vos commentaires.
Je viens de rectifier le niveau de ce code, j'y suis peut-etre allé un peu vite... le voici donc débutant !
Pour ce qui est de la '->', il est imposible ici de l'utiliser, cette notation étant réservé aux pointeurs sur structures et non aux pointeurs dans les structures.
Enfin, suite à vos remarques sur la POO ... j'ai décidé de m'amuser un peu alors voici le résultat ...
en revanche ... je n'ai pas trouvé de solution pour le this ... car il est vrai que la cela peut paraitre étrange de faire c->methode(c); ... c vrai que c un peu inutile mais, c t juste pour me rapprocher de la POO!
voili
gilids
Messages postés7Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention19 avril 2006 5 avril 2005 à 14:50
Nitric, c'est dommage que tu ne fasses pas de commentaire...
Je le précise au cas où, il ne s'agissait pas d'une critique.
Je trouve qu'il s'agit d'une sorte de pas intermédiaire entre le C et le C++. Mettre en commun des variables et les fonctions qui les manipulent constitue bien un des premiers objectifs de la POO.
Exemple :
typedef struct Nombre
{
int nb;
void (*Incrementer)(Nombre *this);
}
Ca ressemble beaucoup à :
class Nombre
{
int nb;
void Incrementer () virtual { this->nb++; }
}
class NombrePair : public Nombre
{
void Incrementer() virtual { this->nb += 2; }
}
D'ailleurs, le mécanisme utilisé pour les fonctions virtuelles en C++ est le même : une table de pointeurs appartenant à la zone mémoire contenant les données membres...
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 5 avril 2005 à 14:25
Lol tu m'étonnes, ce code est bien pour savoir comment ca marche mais de la a se mettre en Initié ya un gouffre
autre chose:
(*tab[i].test)(tab[i].nb)
heu...
c'est correct mais chiant, le C++ a crée une nouvelle notation (heu nouvelle, elle a bien 15 ans hein)
tab[i]->test(tab[i].nb)
c'est plus compréhensible comme ca non?
++
ad
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 5 avril 2005 à 13:07
`réinventer la notion d'objet` ... et bien ... sans commentaire ...
~(.:: NitRic ::.)~
gilids
Messages postés7Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention19 avril 2006 5 avril 2005 à 12:10
Tu sais que tu es en train de réinventer la notion d'objet ? ;-)
Taranael
Messages postés54Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention21 juin 20071 5 avril 2005 à 11:03
Le code a l'air correct mais pourquoi mettre niveau Initié ?
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 5 avril 2005 à 03:45
6 avril 2005 à 02:37
typedef struct _Module
{
type (*open)( ... );
type (*read)( ... );
type (*write)( ... );
type (*close)( ... );
}Module;
et ensuite, pouvoir charger différents modules sans code/fichiers/... supplémentaires:
Module mod;
modlog_01_load( &mod );
mod.open( ... );
mod.close( ... );
...
modlog_01_unload( &mod );
modlog_02_load( &mod );
mod.open( ... );
...
tu pourrais avoir plusieurs modules pour gérer des fichiers jounaux par exemple et pouvoir utiliser celui que tu veux sans code supplémentaire ... ce n'est qu'un exemple ...
Mais bref, ce n'est _pas_ inutile ...
gilids, c'était surtout le mot `réinventer`, c'était un peu trop non? Il n'a rien `réinventé` ici et ce n'est pas du OO, ca lui ressemble d'une certaine facon oui mais sans plus ...
Arnaud16022, depuis le `C99 je crois`, le (*...) est devenu optionnel en C aussi, `optionnel` car on peu encore utiliser cette `notation` ...
Au fait Cyrille2, faire de la `pseudo-OO` en C c'est vraiment `le bordel` et très laid alors continue dans cette voie, c'est beaucoup mieux ainsi :}
~(.:: NitRic ::.)~
5 avril 2005 à 23:32
tout d'abord, merci pour vos commentaires.
Je viens de rectifier le niveau de ce code, j'y suis peut-etre allé un peu vite... le voici donc débutant !
Pour ce qui est de la '->', il est imposible ici de l'utiliser, cette notation étant réservé aux pointeurs sur structures et non aux pointeurs dans les structures.
Enfin, suite à vos remarques sur la POO ... j'ai décidé de m'amuser un peu alors voici le résultat ...
en revanche ... je n'ai pas trouvé de solution pour le this ... car il est vrai que la cela peut paraitre étrange de faire c->methode(c); ... c vrai que c un peu inutile mais, c t juste pour me rapprocher de la POO!
voili
5 avril 2005 à 14:50
Je le précise au cas où, il ne s'agissait pas d'une critique.
Je trouve qu'il s'agit d'une sorte de pas intermédiaire entre le C et le C++. Mettre en commun des variables et les fonctions qui les manipulent constitue bien un des premiers objectifs de la POO.
Exemple :
typedef struct Nombre
{
int nb;
void (*Incrementer)(Nombre *this);
}
void IncrementerNombre(Nombre *this)
{
this->nb++;
}
void IncrementerNombrePair(Nombre *this)
{
this->nb += 2;
}
Ca ressemble beaucoup à :
class Nombre
{
int nb;
void Incrementer () virtual { this->nb++; }
}
class NombrePair : public Nombre
{
void Incrementer() virtual { this->nb += 2; }
}
D'ailleurs, le mécanisme utilisé pour les fonctions virtuelles en C++ est le même : une table de pointeurs appartenant à la zone mémoire contenant les données membres...
5 avril 2005 à 14:25
autre chose:
(*tab[i].test)(tab[i].nb)
heu...
c'est correct mais chiant, le C++ a crée une nouvelle notation (heu nouvelle, elle a bien 15 ans hein)
tab[i]->test(tab[i].nb)
c'est plus compréhensible comme ca non?
++
ad
5 avril 2005 à 13:07
~(.:: NitRic ::.)~
5 avril 2005 à 12:10
5 avril 2005 à 11:03
5 avril 2005 à 03:45
typedef double (*__function)( double );
__function MaFonction;
(*MaFonction)( une_valeur ); /* fonctionnel */
MaFonction( une_valeur ); /* fonctionnel */
Pour appeller la fonction, le (*...) n'est pas obligatoire, ou plutôt, n'est _plus_ obligatoire ...
Donc ` tab[i].test( tab[i].nb ); ` suffit ...
~(.:: NitRic ::.)~