Next: Vérification de type Up: Protocoles Previous: Les Objets protocole.

Se conformer à un protocole

On dit d'une classe qu'elle se conforme à un protocole formel si elle adopte ce protocole ou hérite d'une classe qui a adopté le protocole. Une instance se conforme au mêmes protocoles que sa classe.

Comme une classe doit implémenter toutes les méthodes déclarées dans un protocole qu'elle adopte, ces méthodes sont héritées par les sous classes. D'ou l'on peut dire que une classe se conforme à un protocole si elle implémente toutes les méthodes demandées.

Il est possible de vérifier qu'un objet se conforme à un protocole en lui envoyant un message conformsTo:

if ( [receiver conformsTo:@protocol(ReferenceCounting)] ) [receiver incrementCount];

Le test conformsTo: est très proche du test respondsTo: pour une seule méthode, excepté qu'il vérifie que le protocole a bien été adopté (et à priori toutes les méthodes qu'il demande) plutôt que de tester si une méthode est bien implémenté ou non. Comme conformsTo: vérifie toute la liste des méthodes ce peut être plus pratique a utiliser. Ce test est devient très utile avec les objets anonimes. Comme la classe de l'objet est inconnue, les protocoles sont le seul moyen de publier (ou découvrir) les messages que l'objet anonyme peut réalisé. C'est une bonne pratique de tester si l'objet est conforme au protocole avant de lui envoyer des messages.



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