Next: Protocoles informels Up: Protocoles Previous: Objets Anonymes

Similarités non hiérarchiques

Si plus d'une classe implémente un ensemble de méthodes, ces classes sont souvent regroupées sous une superclasse abstraite qui déclare les méthodes qu'elles ont en commun. Chaque sous classe réimplémente les méthodes à sa façon, mais la hiérarchie d'héritage et les déclarations communes dans la superclasse abstraite capture l'essentiel des similarités entre les sous classes.

Malheureusement il n'est pas toujours possible de regrouper les méthodes communes dans une superclasse abstraite. Des classes sans points communs dans la hiérarchie d'héritage peuvent néanmoins avoir des méthodes très similaires. Ces méthodes similaires peuvent ne pas justifier une relation hiérarchique. Par exemple, de nombreuse classes peuvent utiliser des méthodes qui permettent la gestion du nombre de références:

- setRefCount:(int)count; - (int)refCount; - incrementCount; - decrementCount;

Ces méthodes peuvent être regroupées dans un protocole et les similarités entre classes sera perceptible par le fait qu'elles adoptent toutes les même protocole.

Les objets peuvent ainsi êtres typés par les protocoles auxquels il se conforment plutôt que par leur classes. Par exemple qu'un robinet doivent ce connecté à un autre objet qui peut lui fournir de l'eau. Au lieu de ce connecter à un objet de type tuyaux (un type basé sur une classe), il peut permettre une connection avec tout objet qui implémente les méthodes qui répondent à ses messages (un type basé sur un protocole).



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