IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Simuler une POO avec des structures?


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut Simuler une POO avec des structures?
    Bonjour a tous, voila ma question:

    je dois programmer en C mon projet, sauf, que j'aime bien travailler en programmation orientée objet, ça m'a l'air plus structuré,

    je sais qu'on peut utiliser les pointeurs de fonctions, mais je ne sais pas trop comment m'y prendre, donc si vous pouvez, me donner des liens sur des cours intéressants ou des conseils directement sur cette discussion, je suis prenante

    Ce que je veux faire est :

    Déclarer des fonction membres dans une structure et les appeler sans pour autant leur donner en entrée les attributs de la structure(que ça puisse agir directement sur le attributs)

    SVP, est ce que vous pouvez m'éclairer la dessus et me conseiller de la meilleur manière a programmer, je veux faire un code optimisé et facile a lire


    en l'occurrence, est ce qu'il y a un équivalent du pointeur référence "this

    Cordialement

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    est ce qu'il y a un équivalent du pointeur référence "this"
    Non. this est un argument implicite des fonctions membres. En C, on est obligé de l'expliciter.

    Un exemple pour clarifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef void (*fonc)(struct s * s, double x) ;
    struct s
    {
      double a ;
      double b ;
      double c ;
      fonc calcul;
    };
    le typedef ne sert qu'à rendre la syntaxe plus claire dans la définition du champ calcul. fonc est donc un type pointeur sur fonction renvoyant void, et ayant pour argument un pointeur sur struct s (ce sera le this explicite) et un double.

    Une fonction de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void somme(struct s * s, double x)
    {
      s->c = s->a + x*s->b;
    }
    Un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      struct s mastruct;
      struct s * p = &mastruct;
      p->a = 1.0;
      p->b = 3.0;
      p->calcul = somme;
      p->calcul(p, 5.0);
    Dans l'appel au champ calcul, je suis obligé de passer en argument p (qui joue le rôle de this)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    Merci bien pour la clarification

    Là au moins, je suis certaine que je ne pourrais pas faire autrement
    Merci beaucoup

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Une bonne introduction de la POO en C : http://chgi.developpez.com/c/objet/
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 670
    Par défaut Glib Object System ou GObject
    Ca existe, c'est gratuit, c'est la brique de base de GIMP, GTK et d'autres...
    Une documentation succinte est à: http://en.wikipedia.org/wiki/GObject

    Pour plus de détails, aller à : http://library.gnome.org/devel/gobject/
    -W
    PS: Je n'ai rien contre la ré-invention de la roue... Mais à moins d'avoir des besoins très spécifiques qui ne sont pas déjà satisfaits par ce qui existe, c'est parfois, souvent une perte de temps.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    PS: Je n'ai rien contre la ré-invention de la roue... Mais à moins d'avoir des besoins très spécifiques qui ne sont pas déjà satisfaits par ce qui existe, c'est parfois, souvent une perte de temps.
    Quand tu as le temps, l'envie et surtout la passion, tu te prends forcément le temps de faire les choses toi même ce qui te permet d'acquérir de l'expérience dans la programmation et ton langage préféré.

    Savoir comment fonctionnent les choses en-dessous de la surface n'est pour moi pas une perte de temps bien au contraire (je te le dit maintenant vu que tu je t'ai déjà croisé dans un autre post où tu avais le même avis )


    @+ et bon code
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par MPEG4 Voir le message
    je dois programmer en C mon projet, sauf, que j'aime bien travailler en programmation orientée objet, ça m'a l'air plus structuré,
    Approche légère :

    http://emmanuel-delahaye.developpez.com/tad.htm
    http://emmanuel-delahaye.developpez.com/complog.htm

    mais si tu veux vraiment faire de la POO, utilise un langage qui est fait pour ça...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    Merci pour tous vos conseils,

    A vrai dire, je ne suis pas vraiment dans la necessité dela programmation en POO, et je dois travailler en C, car a ce qu'il parait c'est le plus rapide et plus efficace, surtout en traitement d'images ,

    Neanmoins, je voulais savoir , apprendre et pouvoir aller plus loin en C, car ca va etre probablement mon langage d'utilité avec le C++

    Je regarderais tout ces cours
    Merci bien pour votre aide

  9. #9
    Membre très actif Avatar de tim974
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 175
    Par défaut
    Neanmoins, je voulais savoir , apprendre et pouvoir aller plus loin en C, car ca va etre probablement mon langage d'utilité avec le C++
    Effectivement, je pense également qu'avec le C/C++, on peut quasiment tout faire.

    D'avis perso, je trouve le C plus facile à exploiter au niveau des couches réseaux et transports. Pour le traitement d'images, vu la tonne de librairies que propose le C++, ça doit être pas mal non plus.

    A vrai dire, je ne suis pas vraiment dans la necessité dela programmation en POO, et je dois travailler en C, car a ce qu'il parait c'est le plus rapide et plus efficace, surtout en traitement d'images ,
    Il est certain qu'un langage est aussi efficace que la façon dont on s'en sert..mais bon, coder comme un pied avec un langage efficace nous rapproche de celui qui code comme un pro sur un langage non adapté

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tim974 Voir le message
    Effectivement, je pense également qu'avec le C/C++, on peut quasiment tout faire.

    D'avis perso, je trouve le C plus facile à exploiter au niveau des couches réseaux et transports. Pour le traitement d'images, vu la tonne de librairies que propose le C++, ça doit être pas mal non plus.


    Il est certain qu'un langage est aussi efficace que la façon dont on s'en sert..mais bon, coder comme un pied avec un langage efficace nous rapproche de celui qui code comme un pro sur un langage non adapté
    Disons que quand tu as des maths et beaucoup de calcul, utiliser un langage nécessitant des appels et sous-appels est plus pénalisant qu'un langage "à accès direct"..

  11. #11
    Membre très actif Avatar de tim974
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 175
    Par défaut
    D'accord avec toi, d'ailleurs je n'ai jamais affirmé le contraire ^^

Discussions similaires

  1. Simuler une listbox avec des couleurs
    Par Invité dans le forum Contribuez
    Réponses: 9
    Dernier message: 19/03/2020, 20h49
  2. Réponses: 3
    Dernier message: 20/10/2009, 09h02
  3. Comment structurer une application avec des multiples versions ?
    Par Worldofdada dans le forum Windows Forms
    Réponses: 5
    Dernier message: 31/05/2007, 10h52
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo