Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
COM fait une distinction fondamentale entre les définitions d’interface et leurs implémentations.
Une interface est en fait un contrat qui se compose d’un groupe de prototypes de fonction connexes dont l’utilisation est définie, mais dont l’implémentation n’est pas. Ces prototypes de fonction sont équivalents à des classes de base virtuelle pures dans la programmation C++. Une définition d’interface spécifie les fonctions membres de l’interface, appelées méthodes, leurs types de retour, le nombre et les types de leurs paramètres, ainsi que ce qu’ils doivent faire. Aucune implémentation n’est associée à une interface.
Une implémentation d’interface est le code qu’un programmeur fournit pour effectuer les actions spécifiées dans une définition d’interface. Les implémentations de nombreuses interfaces qu’un programmeur peut utiliser dans une application basée sur des objets sont incluses dans les bibliothèques COM. Toutefois, les programmeurs sont libres d’ignorer ces implémentations et d’écrire leurs propres implémentations. Une implémentation d’interface doit être associée à un objet lorsqu’une instance de cet objet est créée, et l’implémentation fournit les services proposés par l’objet.
Par exemple, une interface hypothétique nommée IStack peut définir deux méthodes, nommées Push et Pop, spécifiant que les appels successifs à la méthode Pop retournent, dans l’ordre inverse, les valeurs précédemment passées à la méthode Push. Cette définition d’interface ne spécifie pas la façon dont les fonctions doivent être implémentées dans le code. Lors de l’implémentation de l’interface, un programmeur peut implémenter la pile en tant que tableau et implémenter les méthodes Push et Pop de manière à accéder à ce tableau, tandis qu’un autre programmeur peut utiliser une liste liée et implémenter les méthodes en conséquence. Quelle que soit l’implémentation particulière des méthodes Push et Pop, la représentation en mémoire d’un pointeur vers une interface IStack, et par conséquent son utilisation par un client, est entièrement déterminée par la définition de l’interface.
Les objets simples ne prennent en charge qu’une seule interface. Les objets plus complexes, tels que les objets pouvant être incorporés, prennent généralement en charge plusieurs interfaces. Les clients ont accès à un objet COM uniquement par le biais d’un pointeur vers l’une de ses interfaces, ce qui permet au client d’appeler l’une des méthodes qui composent cette interface. Ces méthodes déterminent comment un client peut utiliser les données de l’objet.
Les interfaces définissent un contrat entre un objet et ses clients. Le contrat spécifie les méthodes qui doivent être associées à chaque interface et le comportement de chacune des méthodes en termes d’entrée et de sortie. Le contrat ne définit généralement pas comment implémenter les méthodes dans une interface. Un autre aspect important du contrat est que si un objet prend en charge une interface, il doit prendre en charge toutes les méthodes de cette interface d’une certaine manière. Toutes les méthodes d’une implémentation n’ont pas besoin d’effectuer quelque chose. Si un objet ne prend pas en charge la fonction implicite par une méthode, son implémentation peut être un retour simple ou peut-être le retour d’un message d’erreur significatif, mais les méthodes doivent exister.
Rubriques connexes