Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012

Slides:



Advertisements
Présentations similaires
Cilia, un framework de médiation ouvert, léger, multi-personnalités
Advertisements

C#3 et le projet Linq Mitsuru FURUTA
19 septembre 2006 Tendances Logicielles MDD/MDA : Génération dapplications avec IBM Rational Software Architect Jean-Pierre Schoch –
Patterns & Anti Patterns
J. Paul Gibson Bureau A 207, Le département LOgiciels-Réseaux
Groupe France Télécom Projet Cilia : collaboration LIG Adèle – Orange Labs/MAPS/MEP slide 1 Cilia, un framework de médiation ouvert, léger, multi-personnalités.
L’architecture .net et ASP.net
Le développement d’applications sous Lotus Notes
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Programmation Orientée Objet (POO)
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
UML (Unified Modeling Langage)
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Démarche Analyse des OGL et des Méthodes Objectifs : Activités :
Programmation orientée objet
Création, configuration et déploiement d’un OS Windows Embedded CE.
XML-Family Web Services Description Language W.S.D.L.
Principes de la technologie orientée objets
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
.Net Remoting.
Modélisation orientée objet UML
ISICIL SWEETDEKI Intégration du logiciel Mindtouch Core dans la plate-forme ISICIL Guillaume HUSSON.
Microsoft et les Standards
Calculatrice Financière Android
TDD : avec ou sans Mocks ? Par Anthony Dahanne, Yannick Ameur,
Veille Technologique : Étudier les avantages et inconvénients du typage statique et du typage dynamique pour des applications interactives Sujet proposé.
Introduction au paradigme orienté-objet (suite)
Présentation du mémoire
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
Cilia Mediation Framework v0.9.0 Implantation.. Plan Cilia: c'est quoi? Capacités. Cilia: Modèle d'implantation. Mise en œuvre: Médiateur Cilia. Assemblage.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Sensibilisation a la modelisation
Patrons de conceptions de créations
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
La machine d’états de JKI
Travaux Pratiques Représentation des connaissances
Présentation de CORBA et de IIOP
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Découverte des Framework : SPRING & JAXB
Design Patterns en programmation par objets. Plan  Design patterns –De quoi s’agit-il? –Pourquoi faut-il les utiliser?  Design patterns essentiels 
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Designs Patterns comment rendre son code faiblement couplé, et maintenable...
Introduction à la plateforme .NET
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Traitement de texte +.
MOCK.
Entity/Facet/Pattern Une application qui en a…
Les classes Introduction aux Langages Orientés Objets
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
L’enseignement de spécialité SLAM
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Les bases du protocole Modbus
Factory Design Patterns Raffaella Sanna Sylvain Giroux.
Campus-Booster ID : Copyright © SUPINFO. All rights reserved La programmation objet, un fondement de la programmation évènementielle.
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Introduction à la Programmation Orientée Objet
1 Matthieu GUIBERT Rodolphe DELLA NEGRA 1. Introduction, Concepts de base, Boucles. TP 2. Tableaux,structures,conditions, séquences, chaînes de caractères,
Année Universitaire : 2013/2014 Réalisée par: Rahma DAIKHI Encadrants : M. Jean-Yves TIGLI M. Stéphane LAVIROTTE Au sein de : Laboratoire I3S, Equipe RAINBOW.
FACTORY systemes Module 6 Section 1 Page 6-3 Les ActiveX FORMATION INTOUCH 7.0.
Transcription de la présentation:

Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012 Démystifier la mise en œuvre de la programmation orientée objet sous LabVIEW Merci de votre présence L’objectif de notre présentation n’est pas de balayer l’ensemble des techniques liés à la POO, mais de présenter les concepts de bases sans lesquels la POO peut rester obscure et complexe. Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012

Qui sommes nous ? Une PME du Grésivaudan Créée en 1989 ! Plus de 15 développeurs certifiés LabVIEW Notre activité se compose de 3 pôles : Services : Développement d’applications de traitement de signal et de test sur cahier des charges, expertise, assistance technique… Produits : une application de relecture de fichier et 5 toolkits LabVIEW dont un gratuit Formation : Centre de formation agréé par NI, formation custom…

Programme Pourquoi ? Etude de cas Exemples d’applications Perspectives Passons maintenant au vif du sujet :

Historique 1990 : Adoption généralisée (JAVA, C++,…) 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 Un concept ancien et éprouvé dans de très nombreux langages, mais jeune avec LabVIEW.

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. Pour démontrer les apport de la POO nous allons étudier un cas concret simplifié. 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 évolutif N’est pas un mauvais choix à priori, mais peu entrainer des difficultés au fur et à mesure de l’évolution du code. - code hétérogène - difficulté intégrer des fonctionnalité communes (moyennage, mise à l’échelle…) - duplication de code pour les instruments très proches - … « Modulaire » Peu évolutif Ne favorise pas un code homogène Risque de duplication de code

Sans objet – solution 2 « Modulaire » « Plus évolutif » Evolution possible pour répondre à certaine problématique comme l’ajout de fonctionnalité (par ex : moyennage sans faire initialisation-libération à chaque mesure) ou l’homogénéité du code (« obligation » de faire un « init », un « Read » et « un release ». Difficulté pour résoudre les cas particuliers, augmentation du nombre d’instrument = augmentation de la complexité du code « 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 Manière de penser notre code sous forme « d’ objet » en liens avec la réalité physique Fonctionnalités intrinsèques à la POO

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 Objet 1 AG34401 B254255 1,4 mV Classe Instrument Données Identifiant Numéro de série Dernière valeur lue Fonctions Initialiser Ecrire Lire Libérer 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 Données modifiées uniquement au sein de l’objet. Méthodes privées

Démo Présentation class dans projet : ctl, methodes privé, public. Créatoin objet et appel méthodes dans main. 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 Enfants Parent Instrument GPIB Série Ancêtres Descendants

Concept : Redéfinition et dispatch dynamique 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 Classe Classe Classe Classe Données Données Données Données Série Données Port COM Vitesse Bit de stop Fonctions Initialiser Lire Libérer Classe GPIB Données Adresse GPIB Fonctions Initialiser Lire Libérer Classe Série Données Port COM Vitesse Bit de stop Identifiant Numéro de série Dernière valeur lue Fonctions Initialiser Récupérer info Lire Libérer Classe Instrument Données Identifiant Numéro de série Dernière valeur lue Fonctions Initialiser Récupérer info Lire Libérer Classe GPIB Données Adresse GPIB Identifiant Numéro de série Dernière valeur lue Fonctions Initialiser Récupérer info Lire Libérer

Démo

Résumé

Résumé Un code structuré Un code évolutif 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

Exemple d’application - Topaze

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 dynamique Chargement statique 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… NI Community : Forum LAVA 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