Possible Duplicates:
Peut-on écrire du code orienté objet en C ?
Patron orienté objet en C ?
I remember reading il y a quelque temps à propos de quelqu'un (je pense que c'était Linus Torvalds) parlant de la mauvaise langue que C++ est et de comment vous pouvez écrire des programmes orientés objet en C. Après avoir eu le temps de réfléchir, je ne vois pas vraiment comment tous les concepts orientés objet peuvent être utilisés en C. Certaines choses sont assez évidentes. Par exemple:
- Pour émuler les fonctions membres, vous pouvez mettre des pointeurs de fonction dans des structures.
- Pour émuler la polymorphie, vous pouvez écrire une fonction qui prend un nombre variable d'arguments et faire des tours de magie en fonction, disons, de la
sizeof
du ou des paramètre(s)
Comment émuler l'encapsulation et l'héritage cependant ?
Je suppose que l'encapsulation pourrait être émulée en ayant une structure imbriquée qui stocke des membres privés. Il serait assez facile de contourner, mais pourrait peut-être être nommée PRIVATE
ou quelque chose d'aussi évident pour signaler que ce n'est pas censé être utilisé en dehors de la structure. Et l'héritage alors ?
4 votes
C'est assez pénible à mon avis. C'est pourquoi nous avons des langages de haut niveau.
4 votes
Dupes : stackoverflow.com/questions/351733?tab=votes#tab-top, stackoverflow.com/questions/1201521/…
0 votes
Utilisation sérieuse de stackoverflow pour la construction de profil en ligne. Pourquoi diable quelqu'un voudrait-il faire cela??.
7 votes
J'ai lu tout ce fil de discussion et... euh... bon... Les gens ne savent pas que le langage C prend en charge l'encapsulation privée des variables et des fonctions, grâce au mot-clé static ? Cela n'a pas été mentionné, bien que ce soit une connaissance très fondamentale pour les programmeurs en C, orientés objet ou non. Je suppose que vous pensiez tous que l'utilisation du mot-clé static pour l'encapsulation est tellement fondamentale que vous n'avez même pas jugé utile de le mentionner. Pas vrai ?
0 votes
So-o (Simply object-oriented) - so-o.org - définit une couche fonctionnelle qui ajoute un modèle de programmation orientée objet à un langage de programmation structuré. Inspiré par Smalltalk et Objective C, So-o est complet, simple et léger, facile à comprendre. L'implémentation en C compte environ 1500 lignes de code. So-o dispose de 3 fonctions : defclass qui définit une nouvelle classe, sendmsg qui est systématiquement utilisé pour envoyer un message à une classe ou une instance, et supersend qui exécute une méthode héritée d'une superclasse.