Next: Similarités non hiérarchiques Up: Protocoles Previous: Méthodes implémentées par d'autres

Objets Anonymes

Un protocole peut aussi être utilisé pour déclarer les methodes d'un objet anonyme d'une classe inconnue. An objet anonyme peut representer un service ou un accès à un groupe de fonctions, surtout quand un seul de objet de ce type est nécessaire. (Un objet que les utilisateurs initialisent, ou bien qui joue un rôle fondamental dans l'application ne sont pas des bons candidats à l'annonimité). Les objet ne sont pas anonymes pour leurs développeurs, mais peuvent l'être à leurs utilisateurs quand il sont produit par quelquun d'autre ou qu'il appartiennent à un autre processus!

Dans une bibliothèque d'objet par exemple certains objets ne sont pas nécessairement identifiés par une classe ni même un fichier d'interface. Sans ces informations l'utilisateur ne peut créer d'instances. Le fournisseur doit donc fournir une instance toute faite à la quelle il est possible d'accèder par une méthode définie dans une autre classe:

id formatter = [receiver formattingService];

L'objet rendu par la méthode est un objet sans classe (le fournisseur se réservant le secret). Par contre le fournisseur doit nous donner les messages auxquels cet objet répond pour qu'il nous soit d'une quelquonque utilité. Ceci est fait en associant à l'objet une liste de méthodes déclarées dans un protocole.

Il est possible d'envoyer des messages objetive C à des objet distants appartenant à d'autres applications. (voir "messages à distance" pour plus d'information).

Les autres applications ont leur propre structure, classes et logique interne. Vous n'avez pas besoin de savoir comment l'application marche ni même quels sont ses composants internes pour pouvoir communiquer avec. En tant qu'extérieur tout ce dont vous avez besoin est de savoir quels messages (le protocole) envoyer à qui (le receveur).

Une application qui publie une objet comme un receveur potentiel doit aussi publier le protocole qui déclare les méthodes que l'objet utilisera pour répondre aux messages. Il n'a pas besoin de publier autre chose sur l'objet. L'application cliente n'a pas besoin de connaître la classe de l'objet, ni d'utiliser la classe dans sa propre conception. Elle n'a besoin que du protocole!

Les protocoles permettent les objets anonymes. Sans protocoles il n'est pas possible de déclarer une interface avec un objet sans déclarer sa classe.

Next: Similarités non hiérarchiques Up: Protocoles Previous: Méthodes implémentées par d'autres

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