Next: Les variables d'instance du Up: Objective C Previous: Dynamic Typing (typage dynamique)

Messages

Pour qu'un objet fassent quelque chose il faut lui envoyer un message lui disant d'exécuter une méthode. La syntaxe des messages en Objective C est la suivante:

[ receveur message ]

Le receveur est un objet, et le message lui dit que faire. Cette forme syntaxique est une expression au sens du langage C, remarquer l'usage des crochet identique a celui de smalltalk. Dans du source, le message est simplement le nom d'une méthode et tous les arguments qui vont avec. Quand le message est envoyé, le noyau (d'exécution), sélectionne la méthode appropriée dans le répertoire de méthode du receveur et l'invoque. C'est pourquoi le nom de méthode dans le message est appelé sélecteur de méthode (selector).

L'exemple suivant demande à l'objet maMatrix d'exécuter sa méthode affiche, qui dessine la matrice dans une fenêtre.

[maMatrix affiche];

Une méthode peut avoir des arguments. Le message suivant dit à la matrice de changer ces coordonnée pour la position (30.0, 50.0) de la fenêtre.

[maMatrix allerEn:30.0 :50.0];

Le nom de la méthode est allerEn:: remarquer les deux caractères ":" un pour chaque argument. Les arguments sont insérés après chaque ":" qui séparent le nom en morceaux. En effet les ":" n'ont pas besoin d'être tous placés en fin de mot comme il le sont ici. Habituellement un mot décrivant l'argument est placé avant chaque ":". La méthode getRow:andColumn:ofCell: prend trois arguments:

int row, column; [maMatrix getRow:&row andColumn:&column ofCell:someCell];

Cette méthode trouve la position de la cellule someCell dans la matrice et place dans les deux entiers donnés en paramètres la ligne et la colonne où la cellule se trouve.

Les méthodes à nombre variable d'arguments sont aussi possibles. Les arguments surnuméraires étant séparés par des virgules et placés en fin de message. ( A l'inverse des ":" les virgules ne font pas partie du nom de la méthode). Dans l'exemple suivant une méthode imaginaire makeGroup: prend un argument obligatoire (group) et ici trois arguments optionnels:

[receveur makeGroup:group, memberOne, memberTwo, memberThree];

Comme les fonctions C les méthodes peuvent retourner des valeurs. l'exemple suivant affecte l'entier retourne par la méthode tag à une variable du même nom.

int tag; tag = [maMatrix tag];

Un message à l'objet nil est valide,

[nil moveTo:100.0 :22.5];

mais n'a pas d'effet . Les messages envoyés à l'objet nil retourne simplement nil.



Next: Les variables d'instance du Up: Objective C Previous: Dynamic Typing (typage dynamique)

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