Dans LabVIEW, une interface peut être considérée comme une classe sans commande de données privées. Cette petite différence permet à une interface de remplir des objectifs totalement différents dans les architectures logicielles. Plus précisément, les interfaces permettent une forme d'héritage multiple.

Une interface déclare un rôle qu'un objet peut jouer sans définir comment le jouer. En héritant d'une interface, une classe déclare que ses objets remplissent ce rôle et la classe devient responsable de la spécification de la manière dont les comportements sont effectués. Lorsqu'une classe hérite de plusieurs interfaces, ses objets peuvent être transmis à plusieurs modules logiciels nécessitant des rôles différents.

Le projet suivant inclut la classe Outil avec plusieurs classes enfants d'outils différents. Le projet comprend également l'interface Levier. Vous pouvez voir que la classe Outil a une commande qui définit les données de la classe, tandis que l'interface Levier n'a pas de commande car les interfaces n'ont pas de données privées. Une classe est représentée par un cube plein . Une interface est représentée par les faces d'un cube . Les interfaces et les classes utilisent la même extension de fichier .lvclass.

L'image suivante illustre la relation d'héritage entre la classe Outil, la classe Clé de serrure et l'interface Levier. La classe Outil et l'interface Levier héritent toutes deux de l'objet LabVIEW. En plus d'avoir leurs propres méthodes et les méthodes de leurs classes parents respectives, les classes Outil de levier et Tournevis plat héritent également de l'interface Levier car elles peuvent toutes deux être utilisées comme levier. Elles héritent des méthodes de l'interface Levier. Étant donné que Levier est une interface et non une classe, cet héritage multiple est autorisé. Les trois classes indépendantes (Outil de levier, Tournevis plat et Clé de serrure) ont un ancêtre commun (Levier) autre que l'objet LabVIEW.

Meilleures pratiques pour donner un nom à une interface

Suivez les recommandations suivantes pour donner à l'interface que vous créez un nom qui identifie son objectif :

  • Utilisez une dénomination qui décrit les capacités d'un objet si celui-ci hérite de l'interface. Par exemple, nommez une interface Mesure tension.lvclass si l'interface représente du matériel capable de mesurer la tension. Toute classe ou interface héritant de cette interface est capable de mesurer la tension.
  • Utilisez un nom qui décrit la catégorie de classes qui héritent de l'interface. Par exemple, nommez une interface Levier.lvclass si l'interface décrit une catégorie de classes qui représentent des outils de levier.
  • Évitez d'utiliser un "I" majuscule en début de nom. Bien que la plupart des langages de programmation basés sur le texte donnent aux interfaces un nom commençant par un "I" majuscule pour les différencier des classes, LabVIEW distingue les interfaces et les classes à l'aide de symboles. De plus, la plupart des éléments de l'environnement de développement LabVIEW traitent, intentionnellement, les classes et les interfaces de manière identique. Les appelants d'une méthode ne se soucient généralement pas de savoir si le type sous-jacent est une interface ou une classe. Par conséquent, éviter le "I" vous permet de convertir une classe en interface, ou vice versa, sans refactoriser le code de l'appelant.

Reportez-vous aux projets suivants pour des exemples d'utilisation des interfaces :

  • labview\examples\Object-Oriented Programming\Basic Interfaces\Basic Interfaces.lvproj
  • labview\examples\Object-Oriented Programming\Actors and Interfaces\Actors and Interfaces.lvproj