France.ni.com Démystifier la mise en œuvre de la programmation orientée objet sous LabVIEW...

Preview:

Citation preview

france.ni.com

Démystifier la mise en œuvre de la programmation orientée objet sous

LabVIEW

Mathilde VINCENT - Olivier JOURDANParis - le 7/2/2012

Qui sommes nous ?

• Une PME du Grésivaudan• Créée en 1989 !• Plus de 15 développeurs certifiés LabVIEW

Programme

• Pourquoi ?• Etude de cas• Exemples d’applications • Perspectives

Historique

Bénéfices attendus

• Faciliter l’ajout des fonctionnalités• Faciliter le travail en équipe• Gagner du temps lors du développement• Améliorer la maintenabilité du code

Etude de cas

Développer une application capable de récupérer des données en provenance d’instruments multiples.

USB

GPIB

RS-232

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 évolutif• Ne favorise pas un code homogène• Risque de duplication de code

Sans objet – solution 2

• « Modulaire »• « Plus évolutif »• Moins maintenable !

Solution OO

• 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

DonnéesIdentifiantNuméro de sérieDernière valeur lue

FonctionsInitialiserEcrireLireLibérer

Objet 1• AG34401• B254255• 1,4 mV

Objet 2• SP202• 3367E• 15,37g

Objet 3• LSC480• S/2323A88• 57,3K

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

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

france.ni.com

Classe Série

Données

Port COMVitesseBit de stopIdentifiantNuméro de sérieDernière valeur lue

FonctionsInitialiserRécupérer infoLireLibérer

Classe GPIB

DonnéesAdresse GPIBIdentifiantNuméro de sérieDernière valeur lue

FonctionsInitialiserRécupérer infoLireLibérer

Classe Instrument

DonnéesIdentifiantNuméro de sérieDernière valeur lue

FonctionsInitialiserRécupérer infoLireLibérer

Classe Série

DonnéesPort COMVitesseBit de stop

FonctionsInitialiserLireLibérer

Classe GPIB

Données Adresse GPIB

FonctionsInitialiserLireLibérer

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 nouvelles fonctionnalités Très facile de faire évoluer le code principal

france.ni.com

Exemple d’application-

Topaze

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

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…

• NI Community : Large LabVIEW Application Development Actor Framework 2011 G#

• Forum LAVA• Formation Object-Oriented Design and programming

in LabVIEW

france.ni.com

Des questions ?www.saphir.fr

https://decibel.ni.com/content/groups/saphir-toolkithttps://decibel.ni.com/content/groups/saphir-topaze

Recommended