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 régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 78
    Points
    78
    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 éminent sénior
    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
    Points : 13 926
    Points
    13 926
    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)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 78
    Points
    78
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    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 sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    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 sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    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...
    Pas de Wi-Fi à la maison : CPL

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 78
    Points
    78
    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 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
    Points : 222
    Points
    222
    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é
    C'est en forgeant que l'on devient forgeron et c'est en sciant que Leonard de Vinci ...

  10. #10
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    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"..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Membre 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
    Points : 222
    Points
    222
    Par défaut
    D'accord avec toi, d'ailleurs je n'ai jamais affirmé le contraire ^^
    C'est en forgeant que l'on devient forgeron et c'est en sciant que Leonard de Vinci ...

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