Journal
Object oriented programming with ANSI-C
Je vois souvent des étudiants imaginer que l'on ne peut faire de programmation objet qu'avec un langage orienté objet. Cependant, la programmation objet est un paradigme, au même titre que la programmation impérative ou fonctionnelle, c'est à dire un mode de pensée spécifique pour résoudre des problèmes et, par extension, écrire des programmes.
Le C n'est pas un langage orienté objet, en cela qu'il ne fournit pas de constructions explicitement dédiées à la programmation objet. Cependant, le C a ça de flexible et de puissant qu'il peut être utilisé en gardant à l'esprit une philosophie objet.
Par exemple, les classes peuvent être représentées par des structures, qui encapsulent des variables (attributs) et des pointeurs sur des fonctions (méthodes). L'héritage peut être assuré en utilisant une propriété du langage qui permet de transtyper automatiquement une structure B en une structure A si (et seulement si) le début de B est un clone de A. Les fonctions capables de manipuler A sont alors capables de manipuler B.
Ce livre passe en revue l'ensemble des méthodes pour penser objet en C, avec une exhaustivité remarquable. Selon moi, l'utilité d'un tel exercice est triple : c'est idéal pour (i) maîtriser la puissance du C, (ii) voir en profondeur la philosophie objet et (iii) comprendre comment sont construit les langages orientés objet (notamment le C++).
Je fais une sauvegarde locale du livre ici : http://benjaminbillet.fr/media/oo-programming-ANSI-C.pdf
Voir aussi ce cours en français, plus simple d'accès : http://chgi.developpez.com/c/objet/
Le C n'est pas un langage orienté objet, en cela qu'il ne fournit pas de constructions explicitement dédiées à la programmation objet. Cependant, le C a ça de flexible et de puissant qu'il peut être utilisé en gardant à l'esprit une philosophie objet.
Par exemple, les classes peuvent être représentées par des structures, qui encapsulent des variables (attributs) et des pointeurs sur des fonctions (méthodes). L'héritage peut être assuré en utilisant une propriété du langage qui permet de transtyper automatiquement une structure B en une structure A si (et seulement si) le début de B est un clone de A. Les fonctions capables de manipuler A sont alors capables de manipuler B.
Ce livre passe en revue l'ensemble des méthodes pour penser objet en C, avec une exhaustivité remarquable. Selon moi, l'utilité d'un tel exercice est triple : c'est idéal pour (i) maîtriser la puissance du C, (ii) voir en profondeur la philosophie objet et (iii) comprendre comment sont construit les langages orientés objet (notamment le C++).
Je fais une sauvegarde locale du livre ici : http://benjaminbillet.fr/media/oo-programming-ANSI-C.pdf
Voir aussi ce cours en français, plus simple d'accès : http://chgi.developpez.com/c/objet/
Ce journal est basé sur Ginger, un gestionnaire de lien minimaliste développé dans le cadre d'un stage de perfectionnement. Pour plus d'informations, consulter le wiki consacré à mes projets personnels.