Next: Codage des types Up: Options Statiques Previous: Optenir l'adresse d'une méthode

Manipuler la structure de donnée d'un objet

Un des points de fort de la programmation orienté Objets est que les structure de données d'un objet lui sont privées. Les informations stockés dans l'objet ne sont accessible que par l'envois de messages. Malgré cela il existe un moyen de dépouiller la structure de son coté objet et de la manipuler comme une structure C. Ceci rend évidement public tous les variables d'instance.

Quand on donne à la directive @defs() un nom de classe elle produit la liste des déclarations pour une instance de la classe. Cette liste n'est utile que pour déclarer des structure et ne peut donc apparaître que dans le corps d'une déclaration de structure. Le code suivant, déclare une structure qui est identique la structure des instances de la classe Robinets:

struct robinetDef @defs(Robinet) *publique;

Ici publique est déclaré comme un pointeur sur une structure indistinguable d'une instance de Robinet. Avec un peu de coercition une instance de Robinet peut être affectée au pointeur et manipulée par ce biais:

id unRobinet; unRobinet = [[Robinet alloc] init];

publique = (struct robinetDef *)unRobinet; publique->eauOuverte = OUI;



Dominique REVUZ
Vendredi 21 février 1997 17:27:12
Une Bug Un mail Merci