Démystifier la mise en œuvre de la programmation orientée objet sous LabVIEW Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012 france.ni.com
Qui sommes-nous? Une PME du Grésivaudan Créée en 1989! Plus de 15 développeurs certifiés LabVIEW Formations 10 % Produits 5 % Développement Intégration 85 %
Programme Pourquoi? Étude de cas Exemples d applications Perspectives
Historique 1950 : Apparition du concept de POO 1960 : Premiers langages «Orienté Objet» 1990 : Adoption généralisée (JAVA, C++ ) 1994 : GOOP - Add-on LabVIEW 2006 : LabVIEW 8.2 - implémentation native
Avantages escomptés Faciliter l ajout des fonctionnalités Simplifier le travail en équipe Gagner du temps lors du développement Améliorer la maintenabilité du code
Étude de cas Développer une application capable de récupérer des données en provenance d instruments multiples. RS-232 GPIB USB
Exigences Lire pour chaque instrument Un identifiant Un numéro de série La valeur mesurée Pouvoir ajouter facilement d autres instruments
Sans objet solution 1 «Modulaire» Peu évolutive Ne favorise pas un code homogène Risque de duplication de code
Sans objet solution 2 «Modulaire» «Plus évolutive» Moins maintenable!
Sans objet solution 2 «Modulaire» «Plus évolutive» Moins maintenable!
Sans objet solution 2 «Modulaire» «Plus évolutive» Moins maintenable!
Solution Orientée Objet Décrire le monde réel au sein du logiciel à l aide d objets Profiter des fonctionnalités de la POO pour obtenir un code évolutif et maintenable
Concept : encapsulation Une classe est un ensemble de données et de fonctions qui interagissent sur ces données Un objet est une instance spécifique d une classe Classe Instrument Objet 1 AG34401 B254255 1,4 mv Données Fonctions Identifiant Numéro de série Dernière valeur lue Initialiser Écrire Lire Libérer Objet 2 Objet 3 SP202 3367E 15,37g LSC480 S/2323A88 57,3 K
Important L accès aux données et fonctions d une classe est cadré Le niveau d accès aux données de la classe est privé Le niveau d accès aux fonctions de la classe est configurable
Démo
Concept : héritage Les enfants héritent des fonctions et des données du parent Les enfants peuvent ajouter des données et des fonctions Parent Instrument Ancêtres Enfants GPIB Série Descendants
Concept : redéfinition et dispatch dynamique Redéfinition Capacité de modifier le comportement d une fonction parente Dispatch dynamique LabVIEW décide lors de l exécution quelle fonction appeler Le choix est dicté par le type de l objet
Classe Données Fonctions Série Port COM Vitesse Bit de stop Identifiant Numéro de série Dernière valeur lue Initialiser Récupérer info Lire Libérer Classe Données Fonctions GPIB Adresse GPIB Identifiant Numéro de série Dernière valeur lue Initialiser Récupérer info Lire Libérer france.ni.com
Classe Données Fonctions Instrument Identifiant Numéro de série Dernière valeur lue Initialiser Récupérer info Lire Libérer Classe Série Classe GPIB Données Fonctions Port COM Vitesse Bit de stop Initialiser Lire Libérer Données Fonctions Adresse GPIB Initialiser Lire Libérer france.ni.com
Démo
Résumé
Résumé Un code structuré Organisation de code par les classes «Protection» des données Développement des classes >< Utilisation des classes Un code évolutif Très facile d ajouter de nouveaux instruments Très facile de faire évoluer le code principal
Exemple d application - Topaze france.ni.com
france.ni.com
Contexte Pouvoir s adapter à tout type de fichiers Pouvoir proposer différentes configurations (traitements, visualisations ) N avoir qu un seul exécutable
Solution Mettre en place une architecture plug-in Chargement dynamique de classes filles Enrichissement de l exécutable au runtime grâce au dispatch dynamique Chargement statique Chargement dynamique Fichier CSV WAV AIFF TDMS
Aller plus loin De nombreux modèles de conception existent : Factory pattern Singleton Pattern Débat ouvert entre «By value» et «By reference» Actor framework, G#...
Pour aller plus loin Communauté NI : Large LabVIEW Application Development Actor Framework 2011 G# Forum LAVA Formation Object-Oriented Design and programming in LabVIEW
Des questions? www.saphir.fr https://decibel.ni.com/content/groups/saphir-toolkit https://decibel.ni.com/content/groups/saphir-topaze france.ni.com