Travail de diplôme Framework à but pédagogique sous Linux Plan de la présentation Introduction Environnements Techniques développées Implémentation Résultat Conclusion 1
Introduction Framework Outil de développement d applications Méthode de programmation Mise en oeuvre du concept Orienté Objet Architecture d application Inversion du contrôle 2
Introduction Framework à BUT PEDAGOGIQUE Simplifications Limitation des fonctionnalités Limitation du nombre de composants Simplification des mécanismes Aspect performances négligable Orientation Orientation Interface Utilisateur Facilement appréhendable Peu spécifique au type d application 3
Introduction Framework à but pédagogique SOUS LINUX Système libre, accessible à tous Développement Open Source donc informations disponibles Outils de développement de qualité (GNU) Bonne stabilité 4
Environnements de travail utilisés Java Développement et écriture rapide, portable API graphique (Swing) très complète C++ Langage classique en programmation OO, connu des utilisateurs cibles Librairies graphiques nombreuses et outils standards (gcc) Gtk Librairie graphique en langage C++, standard sous Linux, complète et performante 5
Aspects importants des librairies utilisées Hiérarchie de classes OO Hiérarchie d imbrication des composants Mécanisme de dimensionnement géométrique (Layout) Boucle événementielle fournie Composants automatisés 6
Techniques développées Description des composants par assignation de propriétés : Apparence graphique (positionnement et comportement) Composants contenus (type conteneur) > Description de l apparence de l interface graphique Actions assignées à la réaction aux événements 7
Techniques développées Schéma d initialisation Possibilité d effectuer des références croisées Apparence statique de l interface utilisateur > Construction puis initialisation Constructeur vide Schéma récursif (Assignation / Initialisation) 8
Techniques développées Schéma de traitement des événements Description du code de réaction Référence sur une méthode (Java) Référence sur une instance de classe spécifique (C++) Réactions spécifiées par une propriété Possibilité simple de modification dynamique du traite événement > Plus lent Plus flexible Possibilité d éviter les structures conditionnelles 9
Implémentation Hiérarchie des composants > copie de celle de la librairie / l API utilisé Possibilité d extension à l ensemble des fonctionnalités Simplification de l utilisation Connaissance de l API relativement inutile 10
Implémentation Schéma d initialisation Création des composants Mécanisme récursif Assignation Création des instances Paramètrage 11
Schéma récursif d initialisation JfApplication JfFrame JfMenuBar JfMenu JfMenuItem JfMenuItem JfMenu JfMenuItem JfMenu JfMenuItem JfMenuItem JfPane JfLayout JfButton JfPane JfLayout JfButton JfTextField 12
Implémentation Traite Evénements Java Utilisation du mécanisme Listener Génération d instances de la classe Method à l aide de l API Reflexion C++ Redéfinition de méthodes de réaction fournies par la librairie Articulation en trois classes : Event Action Utilisateur Appel de la méthode de la super classe possible (pré parent post) 13
Traite événements en Gtk Classes permettant la récupération des événements GfContainer Gtk::Container GfBin Gtk::Bin Has a Gtk::Button GfAction Is a GfEventButton GfButtonAction GfButton 14
Implémentation Liaison entre le Framework et l application utilisateur Connaissance de l application par le Framework impossible > Méthodes d indication Modification d une méthode fournie par le Framework (Java) Définir une méthode extern renvoyant l instance d application (C++) Instances des objets > Variables globalement visibles Constantes de la classe application, elle même globale (Java) Variables globales statiques (C++) 15
Forme du code utilisateur Un composant est représenté par une classe dérivée et instancié par une variable La classe dérivée consiste essentiellement en la redéfinition de la méthode assign() Un traite événement consiste en une méthode ou classe > Plus de classes mais très simples > Lourdeur (négligeable pour de petites applications) Meilleure réutilisabilité du code, simplicité extrême 16
Résultat Méthode d implémentation possible du Framework selon 2 environnements Possibilité d extension prévue Raffinement des composants Ajout d autres composants de l API utilisée 17
Conclusion Projet réalisé quasiment exclusivement sous Linux > Validation de la solution Linux Enrichissement personnel Domaine d étude très vaste GUI, Programmation événementielle, architecture d application, plusieurs environnements de développement > Acquisition d une somme de connaissances très diversifiées 18
Fin de la présentation Le mémoire et la présentation ne permettent de donner qu un aperçu global des domaines étudiés. Je suis à votre disposition pour toute précision ou explication d aspects trop succinctement traités. 19