Catégories
développement

Simuler un objet en langage C

Il est très facile de simuler un objet en langage même si la syntaxe est assez verbeuse.

Voici un exemple de création d’objet et son instanciation :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <stdlib.h>
 
 
/// Déclaration de la structure de "l'objet C"
typedef struct Object {
	/// Un attribut de "Object"
	char * desc;
 
	/// Un pointeur de fonction pour 
	/// une méthode de classe "Object"
	char *(* toString)(struct Object *);
} Object;
 
/// Une méthode de classe
char* Object_toString(Object *this){
	return this->desc;
}
 
/// Le constructeur
Object * new_Object(char * desc){
	/// Allocation mémoire 
	/// pour la structure "Object"
	Object *o = (Object *) malloc(sizeof(Object));
 
	/// Valorisation de l'attribut "desc"
	o->desc = desc;
 
	/// Association de la méthode de classe 
	/// "Object_toString" au pointeur 
	/// de la structure "Object"
	o->toString = Object_toString;
}
 
/// Le destructeur
void delete_Object(Object *this){
	/// Libération des ressources allouées
	/// via une allocation dynamique
	free(this);
}
int main(void){
	/// Instanciation de la classe "Object"
	Object *o = new_Object("C'est un objet C.");
 
	/// Utilisation de la méthode "toString" 
	/// de la classe "Object"
	printf("%s\n", o->toString(o));
 
	/// Libération de l'objet
	delete_Object(o);
	return 0;
}
}