Next: Objets Anonymes Up: Protocoles Previous: Comment utiliser les protocoles

Méthodes implémentées par d'autres

Si vous connaissez la classe d'un objet vous pouvez regardez son interface et celle des classes dont elle hérite, pour connaître les messages auquel elle repond. Ces déclarations publient les messages qu'elles peuvent recevoir. Un protocole permet de publier les messages qu'elles envoient. La communication est une voie à double sens, les objets ne font pas que recevoir des messages ils en envoient. Par exemple, un objet peut déléguer la responsabilité d'une certaine opération à un autre objet, il il peut, plus simplement, avoir besoin de demander des informations à un autre objet. Dans d'autre cas un objet peut envoyer des messages de notification à d'autres objets pour indiquer ce qu'il fait, afin qu'ils prennent les dispositions nécessaires.

Si vous déclarer la classe de sender (pourvoyeur) et la classe de receiver (receveur) dans un même projet (ou si quelqun d'autre a fournit le receveur et son fichier d'interface), cette communication est facilement coordonné. Le pourvoyeur déclare les méthodes qu'il utilise en important le fichier d'interface du receveur.

Par contre si vous développer un objet qui envoi des messages à des objets que d'autre programmeur écrirons, vous avez besoin d'un moyen de définir les méthodes qu'ils doivents implémenter. C'est le rôle du protocole. Il informe le compilateur sur les méthodes exterieur que la classe utilise et informe les autre programmeurs des méthodes qu'ils doivent fournirent pour que leurs objets fonctionnent avec les votres.

Si un objet envoi des messages à des objets non encore définis il ne peut connaître leurs adresses. Il doit donc fournir un moyen aux autres objets de s'enregistrer comme des receveurs potentiels de ses messages. Supposons par exemple que votre objet utilise une variable d'instance assistant qui sert de cible à tous ses messages. Il doit exister une méthode qui acompagne cette variable d'instance :

- setAssistant:anObject assistant = anObject; return self;

En suite, à chaque fois qu'un message doit être envoyer à l'assistant, une vérification est faite pour vérifier que le receveur implémente la méthode :

- travail if ( assistant && [assistant respondsTo:@selector(aider:)] ) [assistant aider:self]; return self; return nil;

La méthode aider: doit être définie dans un protocole.

Next: Objets Anonymes Up: Protocoles Previous: Comment utiliser les protocoles

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