SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
Interface graphique

               Responsable : Françoise Gayral
 enseignant-chercheur au LIPN (Laboratoire d ’informatique de
        Paris-Nord) et à l ’IUT (département informatique)

LIPN : http://www.lipn.univ-paris13.fr/~gayral/
IUT : http://www-info.iutv.univ-paris13.fr/~gayral/
Mail : fg@lipn.univ-paris13.fr




                             F. Gayral                          1
Situation du cours d'interface graphique

Dans le PPN, partie algorithmique

„ Algorithmique en 1ère année

   ƒ algorithmique et programmation impérative : langage C
   ƒ algorithmique et programmation orientée objet : langage Java

                     „ Jusque là :
      „ Programmation non graphique et séquentielle


                              F. Gayral                             2
En 2 ème année : cours algorithmique en 2 parties

„ Développement d’interface graphique
                       (F. Gayral) : 9 semaines
   ƒ principes généraux indépendants des langages d’implémentation

   ƒ utilisation du langage Java comme support et utilisation de
     packages prédéfinis dédiés au graphique


„ Algorithmique avancée : 11 semaines
   ƒ structures de données complexes : piles, files, arbres, graphes...



                                F. Gayral                                 3
Déroulement du cours
„ Organisation
   ƒ équipe : Françoise Gayral (responsable du cours), Dominique
     Bouthinon, Bouchaïb Khafif, Jean-Michel Barrachina
   ƒ 1 cours d’1h15 obligatoire - 3h de TD/TP
„ Evaluation
   ƒ 1 contrôle court : coeff 1, sans documents : semaine 5 ou 6
   ƒ 1 contrôle long : coeff 3, une partie sans documents, une partie
     avec documents : semaine du 12/12/05

„ Cours Powerpoint avec photocopies distribuées en début de
  cours, à compléter et à enrichir durant le cours
                               F. Gayral                                4
Semaine 1 Introduction à la programmation d’interfaces graphiques utilisateur
          Java comme langage de création d’interface graphique
          Classe de base pour les fenêtres (avec swing) : premier canevas
Semaine 2 Les composants graphiques
          Les gestionnaires de mise en page
Semaine 3 Gestion des événements

Semaine 4 fin événement : les classes Adapter
          Composants particuliers : JList, dialogue avec l’utilisateur, ...
                     »
Semaine 5 Le graphisme: classe Graphics, redéfinition de paintComponent

Semaine 6 Java et le web : les applets java

Semaine 7 L'architecture Modèle-Vue-Contrôleur en général
          L'architecture MVC : un exemple : gestion d'un ensemble d'éléments
Semaine 8 L'architecture MVC : Gestion de données "tabulaires"

Semaine 9 MVC et interaction avec une base de données JDBC
                                      F. Gayral                               5
Bibliographie

„ Tutoriels de Sun :
   //java.sun.com/docs/books/tutorial/uiswing/
   //java.sun.com/developer/onlineTraining/GUI/Swing1/shortcourse.html#JFCIntro
   //java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html#JFCIntro
„ Livres
   ƒ java 1.2 : (s&sM), le programmeur
   ƒ Au cœur de Java 2 (2 volumes), campus press
„ Rechercher quelque chose de précis ou pointu:
       //java.sun.com/developer/JDCTechTips/
       //java.sun.com/developer/technicalArticles/


                                    F. Gayral                            6
Généralités sur les
interfaces graphiques




         F. Gayral      7
Bibliographie

„ Tutoriels de Sun :
   //java.sun.com/docs/books/tutorial/uiswing/
   //java.sun.com/developer/onlineTraining/GUI/Swing1/shortcourse.html#JFCIntro
   //java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html#JFCIntro
„ Livres
   ƒ java 1.2 : (s&sM), le programmeur
   ƒ Au cœur de Java 2 (2 volumes), campus press
„ Rechercher quelque chose de précis ou pointu:
       //java.sun.com/developer/JDCTechTips/
       //java.sun.com/developer/technicalArticles/


                                    F. Gayral                            8
Historique

„ avant 1970 : système à cartes perforées

„ années 1970 : introduction du clavier et de l’écran

„ années 1980 : introduction de l’écran bitmap (point par
  point) et de la souris, système de fenêtres et de menus
      ==> IHM tels Smalltalk (76)
      Apple avec Macintosh (84), Windows


                           F. Gayral                        9
Changements par rapport à la
        programmation non graphique


„ Tout programme s'exécute dans le cadre d'une fenêtre graphique

   ƒ Mode graphique contre mode texte

   ƒ Programmation événementielle




                            F. Gayral                       10
Fenêtre : élément fondamental d'une interface
                  graphique

„ Tout programme qui s'exécute le fait dans le cadre d'une ou
  plusieurs fenêtres
„ Système de fenêtrage permet à plusieurs programmes
  d’utiliser le même écran graphique
   ƒ A un instant donné, une seule fenêtre est active (voir la barre
     d’état).
„ Fenêtre composée de composants graphiques (ou widgets)
„ L'utilisateur communique ses ordres non plus seulement par le
  clavier, mais en agissant, par l'intermédiaire de la souris, sur
  les différents composants de le fenêtre

                                F. Gayral                              11
Mode graphique contre mode texte
„ Mode texte utilisé jusqu'à présent :
   ƒ informations apparaissent à l'écran uniquement sous forme de
     caractères
   ƒ la couleur est rare
   ƒ le principal organe de communication est le clavier.
     ==> Possibilités d ’affichage très limitées
„ Mode graphique
   ƒ Informations peuvent être affichées d'une multitude de manières
     différentes :
       ‚ sous forme d'images, de dessins, de courbes ou graphiques, et bien
          sûr de caractères.
   ƒ utilisation des couleurs (plusieurs millions)
                ==> Plus de convivialité
                              F. Gayral                                   12
Affichage graphique

„ Plus de mode texte, comme sous DOS où l’affichage était
  “ séquentiel ” : chaque information affichée ou lue s'inscrivait
  à la suite de la précédente.

 „ Tout programme sous IG s'exécute dans une fenêtre graphique
     ==> Prise en compte des notions de coordonnées, de fonte, 
       d’épaisseur de traits, de couleurs... 
     ==> Impossible d'utiliser les fonctions d’affichage standard 

                 Java : System.out.println…
                    C : printf(…)
                                F. Gayral                            13
Programmation événementielle

„ Sans IG ==> la programmation est séquentielle
       public static void main(String[] args) {
           System.out.println("le programme est séquentiel");
           String nom=Console.readString("donner votre nom");
           System.out.println("bonjour "+nom);
           }                   Le programme termine et rend la main

„ C’est le programme qui garde le contrôle des opérations
„ Les instructions du programme principal sont exécutées les
  unes après les autres
„ L’utilisateur est simplement sollicité pour fournir des
  informations au moment voulu
                               F. Gayral                              14
Démo
 Programmation événementielle

„ Avec une IG ==> la programmation est événementielle
   ƒ C’est l’utilisateur, par ses actions, qui contrôle les opérations en
     cliquant où il veut. C’est l'utilisateur qui "pilote" le programme
   ƒ Le programme ne fait que réagir aux sollicitations de l’utilisateur
     (pourvu qu'elles aient été prévues)
„ Dès que vous lancez un programme avec interface graphique :
   ƒ une boucle infinie est générée
   ƒ le programme attend les événements (enfoncer une touche du clavier,
     cliquer avec la souris etc.)
   ƒ "attrape" et traite les événements quand ils se produisent.
„ Le programme est dirigé par les événements
                                   F. Gayral                                 15
Comment ça fonctionne ?

                         Système

  Action de                                  Evénement transmis
                        Boîte noire
                                             à l ’application qui
  l ’utilisateur                             réagit à l ’événement
                                             ou pas

„ Evénement = Objet construit par le système en réponse à une
  action de l’utilisateur et qui contient toutes les informations
  concernant cette action


                             F. Gayral                         16
Comment ça fonctionne (détails) ?
„ Action de l’utilisateur dans la fenêtre de l’application
   ==> Interruption matérielle
      ==> Récupération de l’interruption par le système
           ==> Construction de l’événement correspondant
      <== Envoi d'une message à l’application concernée avec des
        informations sur l’événement
   <== L'application réagit à l'événement ou non
„ Exemples :
   ƒ clic souris : connaissances des coordonnées du point de clic
   ƒ frappe d’un caractère : connaissance du caractère frappé
   ƒ événement de fenêtre :

                                  F. Gayral                         17
Schéma général

                  Système
                                                     appli1
                        Construction
         Traitement
                        d ’un
         d ’une
         interruption   événement                      appli2

                  Message avec toutes les
                  caractéristiques de l ’événement
                  transmis à l ’application           appli3
azerty




                        F. Gayral                               18
Concevoir une application munie d’une
           interface graphique

„ Bien séparer ce qui relève de l’application de ce qui relève de
  l ’interface graphique

„ Exemple d’une banque :
   ƒ applicatif : gérer les clients, les comptes, les transferts,….
   ƒ GUI (graphical user interface) : comment l’applicatif apparaît à
     l’utilisateur
   ƒ Un même applicatif peut avoir différentes GUI , suivant l ’utilisateur :
       ‚ le guichetier, l ’administrateur,…




                                  F. Gayral                                 19
Concevoir une interface graphique, c’est:

„ définir la fenêtre “ cadre ” de l’application et les objets
  graphiques qu’elle contient : menu, composants...
                                          Aspect visuel

„ définir les différentes actions que pourra réaliser l’utilisateur
  dans cette fenêtre (cliquer dans tel ou tel item du menu, dans
  tel composant : bouton, item d'une liste...)
„ écrire le traitement correspondant à chacune des actions
  prévues.                             Aspect événementiel


                              F. Gayral                          20
Remarques

„ Toutes les actions de l’utilisateur qu’on veut traiter doivent
  avoir un traitement prévu

„ Mais on ne connaît pas le moment où l ’action est déclenchée

„ Le traitement prévu concerne le plus souvent l ’applicatif




                              F. Gayral                            21
API pour le graphique

„ API = Application Programing Interface
   ƒ Ensemble d’objets graphiques
   ƒ Ensemble de fonctions permettant l’affichage, l’ouverture de fenêtre


„ On peut utiliser :
   • directement l’API (programmation de bas niveau)
   • faire appel à des bibliothèques de haut niveau encapsulant ces
     fonctions, types...
   • Souvent langages objets avec des bibliothèques de classes organisées
     en hiérarchie


                                  F. Gayral                                 22
Différentes API
„ XLib : bibliothèque de bas niveau en C utilisant le protocole
  X Window
„ Gtk+ (Gimp tool kit) bibliothèque de haut niveau (widget),
  surcouche de Xlib
„ Qt (société Trolltech) autre bibliothèque (C++). Qt a été
  choisi par Kde, environnement graphique de bureau Open
  Source pour les stations de travail Unix/Linux.
„ Tcl/Tk
   ƒ Tcl (Tool Command Language) langage de script (langage de
     programmation interprété)
   ƒ Tk (Tool Kit) : la bibliothèque graphique de widget pour l'écriture de
     GUI, surcouche de Xlib
„ Visual basic (pour windows), C++, bibliothèque java swing 23
                          F. Gayral
Les éléments communs à ces API

„ Les widgets : composants visuels de base généralement
  implémentés sous forme d'objet
   ƒ posséde des attributs et méthodes par défaut et modifiables
   ƒ définis et organisés selon une hiérarchie de classes fournie par l’API et,
     par l'héritage, il est possible de définir ses propres widgets dérivés d'une
     de ces classes


„ La gestion événementielle par des déclenchements de
  fonctions ou méthodes




                                     F. Gayral                                 24
Les environnements de programmation
       (IDE Integrated Development Environment )


„ Integrated Development Environment (IDE) :
  a programming environment integrated into a software
  application that provides a GUI builder, a text or code editor,
  a compiler and/or interpreter and a debugger.
„ en français : environnement de développement intégré
„ Exemples :
   ƒ  Visual Studio (microsoft), Delphi, JBuilder (borland), KDevelop (
     license GPL) pour KDE, Eclipse,...
   ƒ Supportent souvent différents langages de programmation



                                 F. Gayral                                25
Environnements de développement pour
                 Java
Nombreux IDE commerciaux




Des environnements freeware ou shareware
-- Kawa           http://www.macromedia.com/software/kawa/
-- Emacs + JDE      http://sunsite.auc.dk/jde


                         F. Gayral                    26
Dans ce cours

„ Pas d'IDE
„ environnement unix simple :
   ƒ éditeur +
   ƒ JRE (Java Runtime Environment) contient uniquement
     l'environnement d'exécution de programmes Java : javac, java,
     javadoc, jar…


„ API : packages java (objets swing)



                                 F. Gayral                           27
Interface graphique
     avec Java



             - Historique
             - 2 types de programmes
             graphiques java
             - La classe JFrame




        F. Gayral                      28
Historique
„ Java 1.0 en 1996, 1.1,... classes du package awt
„ à partir de Java 1.2 (1998) : classes “ Java Foundation Classes ” (JFC)
  javax.swing, javax.swing.border, javax.swing.event,...
„ Depuis sa version 1.2, Java a été renommé Java 2.
„ Le JDK a été renommé J2SDK (Java 2 Software Development Kit)
    ƒ 1.4 :  2002
    ƒ 1.5 : 2004 désignée sous le nom J2SE (Java 2 Standard Edition)
    ƒ Pour les différences J2SDK1.4 et J2SDK1.5, consulter
      http://perso.wanadoo.fr/jm.doudoux/java/tutorial/chap009.htm

„
                                   F. Gayral                           29
2 types de programmes graphiques java
„ Les Applications
   indépendantes :
– Programmes autonomes (stand-alone)
„ Les Applets
– Programmes exécutés dans
   l’environnement d’un navigateur
   Web et chargés au travers de pages
   HTML
„ Différences :
   ƒ les contextes d'invocation et d’exécution
   ƒ Les classes concernées

                                  F. Gayral      30
2 types de programmes graphiques java

„ Indépendante du web : sur la machine locale
             ⇒ classe javax.swing.JFrame


„ Dans une application pour le web : applet placée sur un
  serveur et téléchargée sur le poste client

             ⇒ classe javax.swing.JApplet


                            F. Gayral                       31
JFrame et ses superclasses

                                       Object    java.lang
Component : objet qui peut être
  dessiné (bouton, scrollbar.)      Component
 Container est un composant qui
eut contenir d’autres composants Container
                                                 java.awt
e fenêtre des plus simples : pas de
    barre de titre, ni de bords     Window
ne fenêtre avec barre de titre et
                                       Frame
            bords
Une JFrame est une Frame avec          JFrame   javax.swing
     certaines extensions
                                    F. Gayral                 32
Premier exemple : ouvrir une simple
                  fenêtre                                Démo

import javax.swing.*;
public class FenSimple extends JFrame {


public FenSimple (String titre, int x, int y, int w, int h) {
       super(titre);
       this.setDefaultCloseOperation(EXIT_ON_CLOSE);
       this.setBounds(x,y,w,h);
       this.setVisible(true);
 }

public static void main(String[] args) {
       new FenSimple ( "Ma première fenêtre ",
300,200,500,400);
 }                          F. Gayral                           33
Remarques sur le programme

„ Ce programme se contente d'afficher une fenêtre a l'écran

„ Une fois qu'arrive la dernière instruction de la fonction main() :
   ƒ le programme ne s'arrête pas : il attend les événements
   ƒ la fenêtre est toujours à l'écran
   ƒ si l'utilisateur agit, rien ne se passe car rien n'a été prévu
   ƒ le programme tourne tant que la fenêtre n'est pas fermée


„ Fenêtre pas du tout paramétrée : position et dimensions "en dur"

                                     F. Gayral                        34
Positionnement et taille

this.setBounds(300,200,500,400); //Position et taille

    (0,0)           X (300)




  Y (200)                               H (400)



                              W (500)
                        F. Gayral                  35
Détails sur les méthodes employées

„ setVisible : Dessine la fenêtre au premier plan, par dessus toute
  fenêtre déjà visible à l’écran
„ Les méthodes setBounds() et setVisible() sont héritées de
  Component, et sont donc disponibles pour tout Component
„ setDefaultCloseOperation(EXIT_ON_CLOSE) permet de
  fermer la fenêtre quand l ’utilisateur cliquera sur la croix
„ Autres méthodes :
   ƒ setSize(int w, int h)
   ƒ setLocation (int x, int y)
   ƒ show() équivalente à setVisible(true)
                               F. Gayral                         36
Comment pallier l'indépendance de Java par rapport
                 aux plate-formes ?

„ Par exemple : si on veut connaître des informations sur la
  machine sur laquelle s ’exécute le programme ?
„ La classe Toolkit
   ƒ fait le lien entre les classes java indépendantes de toute plate-
     forme et la plate-forme sur laquelle tourne le programme
   ƒ On obtient une instance de Toolkit par la méthode de classe de
     Toolkit :        public static Toolkit
     getDefaultToolkit()
       ‚ Exemple de code :
         Toolkit aTK= Toolkit.getDefaultToolkit();
         Dimension dim = aTK.getScreenSize();
                                 F. Gayral                               37
et si on veut connaître des informations sur la
   machine sur laquelle s ’exécute le programme ?

„ La classe System
   ƒ permet d ’accéder à des informations liées au système ou à
     l ’utilisateur
   ƒ Variables de classe connues
       ‚ in, out, err (dans System.out)
   ƒ   Méthode importante
       ‚ public static String getProperty(String key) :
         retourne la valeur de la propriété repérée par la clé key
       ‚ Exemple de code :
         System.getProperty("user.dir");

                                  F. Gayral                          38

Más contenido relacionado

Destacado

Persönliche prӓsentation Katarzyna Płoska
Persönliche  prӓsentation Katarzyna  PłoskaPersönliche  prӓsentation Katarzyna  Płoska
Persönliche prӓsentation Katarzyna PłoskaElżbieta Dziedzicka
 
Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"Newday
 
Usages du e-Portfolio 2.0 : Des enjeux aux perspectives
Usages du e-Portfolio 2.0 : Des enjeux aux perspectivesUsages du e-Portfolio 2.0 : Des enjeux aux perspectives
Usages du e-Portfolio 2.0 : Des enjeux aux perspectivesPhilippe-Didier GAUTHIER
 
L'Histoire du Manifeste Agile
L'Histoire du Manifeste AgileL'Histoire du Manifeste Agile
L'Histoire du Manifeste AgileFabrice Aimetti
 
La mise en place de la ctm
La mise en place de la ctmLa mise en place de la ctm
La mise en place de la ctmGwladys
 
Mise en oeuvre d'un espace multimédia - jour 2
Mise en oeuvre d'un espace multimédia - jour 2Mise en oeuvre d'un espace multimédia - jour 2
Mise en oeuvre d'un espace multimédia - jour 2Julien Devriendt
 
Piraten partei wahl-kausalketten_btw13
Piraten partei wahl-kausalketten_btw13Piraten partei wahl-kausalketten_btw13
Piraten partei wahl-kausalketten_btw13Katha42
 
Decoupage daiara artes
Decoupage daiara artesDecoupage daiara artes
Decoupage daiara artesAutonoma
 
Käfer Kindertag bei Feinkost Käfer (Käferakademie)
Käfer Kindertag bei Feinkost Käfer (Käferakademie)Käfer Kindertag bei Feinkost Käfer (Käferakademie)
Käfer Kindertag bei Feinkost Käfer (Käferakademie)Käfer Akademie
 
Imagebroschüre Anfang 2012
Imagebroschüre Anfang 2012Imagebroschüre Anfang 2012
Imagebroschüre Anfang 2012Junge mit Ideen
 
SwissQ Testing Trends & Benchmarking 2011
SwissQ Testing Trends & Benchmarking 2011SwissQ Testing Trends & Benchmarking 2011
SwissQ Testing Trends & Benchmarking 2011SwissQ Consulting AG
 

Destacado (17)

Persönliche prӓsentation Katarzyna Płoska
Persönliche  prӓsentation Katarzyna  PłoskaPersönliche  prӓsentation Katarzyna  Płoska
Persönliche prӓsentation Katarzyna Płoska
 
Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"Livre de Pierre de Villard : "Faut-il quitter la France ?"
Livre de Pierre de Villard : "Faut-il quitter la France ?"
 
Usages du e-Portfolio 2.0 : Des enjeux aux perspectives
Usages du e-Portfolio 2.0 : Des enjeux aux perspectivesUsages du e-Portfolio 2.0 : Des enjeux aux perspectives
Usages du e-Portfolio 2.0 : Des enjeux aux perspectives
 
L'Histoire du Manifeste Agile
L'Histoire du Manifeste AgileL'Histoire du Manifeste Agile
L'Histoire du Manifeste Agile
 
La mise en place de la ctm
La mise en place de la ctmLa mise en place de la ctm
La mise en place de la ctm
 
Combien de livres y a-t-il ?
Combien de livres y a-t-il ?Combien de livres y a-t-il ?
Combien de livres y a-t-il ?
 
Mise en oeuvre d'un espace multimédia - jour 2
Mise en oeuvre d'un espace multimédia - jour 2Mise en oeuvre d'un espace multimédia - jour 2
Mise en oeuvre d'un espace multimédia - jour 2
 
Talleres 21 01-2015
Talleres 21 01-2015Talleres 21 01-2015
Talleres 21 01-2015
 
Piraten partei wahl-kausalketten_btw13
Piraten partei wahl-kausalketten_btw13Piraten partei wahl-kausalketten_btw13
Piraten partei wahl-kausalketten_btw13
 
Inicios del folclor chileno
Inicios del folclor chilenoInicios del folclor chileno
Inicios del folclor chileno
 
Decoupage daiara artes
Decoupage daiara artesDecoupage daiara artes
Decoupage daiara artes
 
Käfer Kindertag bei Feinkost Käfer (Käferakademie)
Käfer Kindertag bei Feinkost Käfer (Käferakademie)Käfer Kindertag bei Feinkost Käfer (Käferakademie)
Käfer Kindertag bei Feinkost Käfer (Käferakademie)
 
Walking Dead
Walking DeadWalking Dead
Walking Dead
 
Presentac..[1]
Presentac..[1]Presentac..[1]
Presentac..[1]
 
Imagebroschüre Anfang 2012
Imagebroschüre Anfang 2012Imagebroschüre Anfang 2012
Imagebroschüre Anfang 2012
 
SwissQ Testing Trends & Benchmarking 2011
SwissQ Testing Trends & Benchmarking 2011SwissQ Testing Trends & Benchmarking 2011
SwissQ Testing Trends & Benchmarking 2011
 
Ruta
RutaRuta
Ruta
 

Similar a Cours intro05 06

Développement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelleDéveloppement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelleREGIONAL ACADEMY OF EDUCATION AND TRAINING
 
De iOS à bada présentation complète_octobre 2011
De iOS à bada présentation complète_octobre 2011De iOS à bada présentation complète_octobre 2011
De iOS à bada présentation complète_octobre 2011BeMyApp
 
Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Anne-Marie Pinna-Dery
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdfRihabBENLAMINE
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobileHaifa Chorfi
 
Ch2. Développement mobile
Ch2. Développement mobileCh2. Développement mobile
Ch2. Développement mobileHaifa Chorfi
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Paris Android User Group
 
Fiche technique système d'exploitation
Fiche technique système d'exploitationFiche technique système d'exploitation
Fiche technique système d'exploitationYoussef Tanawiati
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfmed_univ78
 
Développement Windows 8 METRO App
Développement Windows 8 METRO AppDéveloppement Windows 8 METRO App
Développement Windows 8 METRO AppClément Hallet
 

Similar a Cours intro05 06 (20)

Développement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelleDéveloppement d'applications mobiles.. Environnement de programmation visuelle
Développement d'applications mobiles.. Environnement de programmation visuelle
 
De iOS à bada présentation complète_octobre 2011
De iOS à bada présentation complète_octobre 2011De iOS à bada présentation complète_octobre 2011
De iOS à bada présentation complète_octobre 2011
 
Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
JavaSwing.pdf
JavaSwing.pdfJavaSwing.pdf
JavaSwing.pdf
 
5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Windows Phone 7 et la sécurité
Windows Phone 7 et la sécuritéWindows Phone 7 et la sécurité
Windows Phone 7 et la sécurité
 
cours.pdf
cours.pdfcours.pdf
cours.pdf
 
GeneralitesGUI1.pdf
GeneralitesGUI1.pdfGeneralitesGUI1.pdf
GeneralitesGUI1.pdf
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdf
 
Cours 1 Android
Cours 1 AndroidCours 1 Android
Cours 1 Android
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobile
 
Ch2. Développement mobile
Ch2. Développement mobileCh2. Développement mobile
Ch2. Développement mobile
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014
 
Fiche technique système d'exploitation
Fiche technique système d'exploitationFiche technique système d'exploitation
Fiche technique système d'exploitation
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdf
 
Développement Windows 8 METRO App
Développement Windows 8 METRO AppDéveloppement Windows 8 METRO App
Développement Windows 8 METRO App
 
4-2-java swing.ppt
4-2-java swing.ppt4-2-java swing.ppt
4-2-java swing.ppt
 

Más de Wael Ismail

Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1 Wael Ismail
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Wael Ismail
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012Wael Ismail
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de donnéesWael Ismail
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentationWael Ismail
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texteWael Ismail
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximationWael Ismail
 
Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Wael Ismail
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++Wael Ismail
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)Wael Ismail
 

Más de Wael Ismail (20)

Dc23 si
Dc23 siDc23 si
Dc23 si
 
Dc13 si
Dc13 siDc13 si
Dc13 si
 
Ds1
Ds1Ds1
Ds1
 
Dc23 si
Dc23 siDc23 si
Dc23 si
 
Dc2cc
Dc2ccDc2cc
Dc2cc
 
Dc2
Dc2Dc2
Dc2
 
Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de données
 
Ch4 internet
Ch4   internetCh4   internet
Ch4 internet
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentation
 
Ch2 tableur
Ch2  tableurCh2  tableur
Ch2 tableur
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texte
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximation
 
Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)
 
L2006
L2006L2006
L2006
 
Jmc habile
Jmc habileJmc habile
Jmc habile
 

Cours intro05 06

  • 1. Interface graphique Responsable : Françoise Gayral enseignant-chercheur au LIPN (Laboratoire d ’informatique de Paris-Nord) et à l ’IUT (département informatique) LIPN : http://www.lipn.univ-paris13.fr/~gayral/ IUT : http://www-info.iutv.univ-paris13.fr/~gayral/ Mail : fg@lipn.univ-paris13.fr F. Gayral 1
  • 2. Situation du cours d'interface graphique Dans le PPN, partie algorithmique „ Algorithmique en 1ère année ƒ algorithmique et programmation impérative : langage C ƒ algorithmique et programmation orientée objet : langage Java „ Jusque là : „ Programmation non graphique et séquentielle F. Gayral 2
  • 3. En 2 ème année : cours algorithmique en 2 parties „ Développement d’interface graphique (F. Gayral) : 9 semaines ƒ principes généraux indépendants des langages d’implémentation ƒ utilisation du langage Java comme support et utilisation de packages prédéfinis dédiés au graphique „ Algorithmique avancée : 11 semaines ƒ structures de données complexes : piles, files, arbres, graphes... F. Gayral 3
  • 4. Déroulement du cours „ Organisation ƒ équipe : Françoise Gayral (responsable du cours), Dominique Bouthinon, Bouchaïb Khafif, Jean-Michel Barrachina ƒ 1 cours d’1h15 obligatoire - 3h de TD/TP „ Evaluation ƒ 1 contrôle court : coeff 1, sans documents : semaine 5 ou 6 ƒ 1 contrôle long : coeff 3, une partie sans documents, une partie avec documents : semaine du 12/12/05 „ Cours Powerpoint avec photocopies distribuées en début de cours, à compléter et à enrichir durant le cours F. Gayral 4
  • 5. Semaine 1 Introduction à la programmation d’interfaces graphiques utilisateur Java comme langage de création d’interface graphique Classe de base pour les fenêtres (avec swing) : premier canevas Semaine 2 Les composants graphiques Les gestionnaires de mise en page Semaine 3 Gestion des événements Semaine 4 fin événement : les classes Adapter Composants particuliers : JList, dialogue avec l’utilisateur, ...  » Semaine 5 Le graphisme: classe Graphics, redéfinition de paintComponent Semaine 6 Java et le web : les applets java Semaine 7 L'architecture Modèle-Vue-Contrôleur en général L'architecture MVC : un exemple : gestion d'un ensemble d'éléments Semaine 8 L'architecture MVC : Gestion de données "tabulaires" Semaine 9 MVC et interaction avec une base de données JDBC F. Gayral 5
  • 6. Bibliographie „ Tutoriels de Sun : //java.sun.com/docs/books/tutorial/uiswing/ //java.sun.com/developer/onlineTraining/GUI/Swing1/shortcourse.html#JFCIntro //java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html#JFCIntro „ Livres ƒ java 1.2 : (s&sM), le programmeur ƒ Au cœur de Java 2 (2 volumes), campus press „ Rechercher quelque chose de précis ou pointu: //java.sun.com/developer/JDCTechTips/ //java.sun.com/developer/technicalArticles/ F. Gayral 6
  • 7. Généralités sur les interfaces graphiques F. Gayral 7
  • 8. Bibliographie „ Tutoriels de Sun : //java.sun.com/docs/books/tutorial/uiswing/ //java.sun.com/developer/onlineTraining/GUI/Swing1/shortcourse.html#JFCIntro //java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html#JFCIntro „ Livres ƒ java 1.2 : (s&sM), le programmeur ƒ Au cœur de Java 2 (2 volumes), campus press „ Rechercher quelque chose de précis ou pointu: //java.sun.com/developer/JDCTechTips/ //java.sun.com/developer/technicalArticles/ F. Gayral 8
  • 9. Historique „ avant 1970 : système à cartes perforées „ années 1970 : introduction du clavier et de l’écran „ années 1980 : introduction de l’écran bitmap (point par point) et de la souris, système de fenêtres et de menus ==> IHM tels Smalltalk (76) Apple avec Macintosh (84), Windows F. Gayral 9
  • 10. Changements par rapport à la programmation non graphique „ Tout programme s'exécute dans le cadre d'une fenêtre graphique ƒ Mode graphique contre mode texte ƒ Programmation événementielle F. Gayral 10
  • 11. Fenêtre : élément fondamental d'une interface graphique „ Tout programme qui s'exécute le fait dans le cadre d'une ou plusieurs fenêtres „ Système de fenêtrage permet à plusieurs programmes d’utiliser le même écran graphique ƒ A un instant donné, une seule fenêtre est active (voir la barre d’état). „ Fenêtre composée de composants graphiques (ou widgets) „ L'utilisateur communique ses ordres non plus seulement par le clavier, mais en agissant, par l'intermédiaire de la souris, sur les différents composants de le fenêtre F. Gayral 11
  • 12. Mode graphique contre mode texte „ Mode texte utilisé jusqu'à présent : ƒ informations apparaissent à l'écran uniquement sous forme de caractères ƒ la couleur est rare ƒ le principal organe de communication est le clavier. ==> Possibilités d ’affichage très limitées „ Mode graphique ƒ Informations peuvent être affichées d'une multitude de manières différentes : ‚ sous forme d'images, de dessins, de courbes ou graphiques, et bien sûr de caractères. ƒ utilisation des couleurs (plusieurs millions) ==> Plus de convivialité F. Gayral 12
  • 13. Affichage graphique „ Plus de mode texte, comme sous DOS où l’affichage était “ séquentiel ” : chaque information affichée ou lue s'inscrivait à la suite de la précédente. „ Tout programme sous IG s'exécute dans une fenêtre graphique ==> Prise en compte des notions de coordonnées, de fonte,  d’épaisseur de traits, de couleurs...  ==> Impossible d'utiliser les fonctions d’affichage standard  Java : System.out.println… C : printf(…) F. Gayral 13
  • 14. Programmation événementielle „ Sans IG ==> la programmation est séquentielle public static void main(String[] args) { System.out.println("le programme est séquentiel"); String nom=Console.readString("donner votre nom"); System.out.println("bonjour "+nom); } Le programme termine et rend la main „ C’est le programme qui garde le contrôle des opérations „ Les instructions du programme principal sont exécutées les unes après les autres „ L’utilisateur est simplement sollicité pour fournir des informations au moment voulu F. Gayral 14
  • 15. Démo Programmation événementielle „ Avec une IG ==> la programmation est événementielle ƒ C’est l’utilisateur, par ses actions, qui contrôle les opérations en cliquant où il veut. C’est l'utilisateur qui "pilote" le programme ƒ Le programme ne fait que réagir aux sollicitations de l’utilisateur (pourvu qu'elles aient été prévues) „ Dès que vous lancez un programme avec interface graphique : ƒ une boucle infinie est générée ƒ le programme attend les événements (enfoncer une touche du clavier, cliquer avec la souris etc.) ƒ "attrape" et traite les événements quand ils se produisent. „ Le programme est dirigé par les événements F. Gayral 15
  • 16. Comment ça fonctionne ? Système Action de Evénement transmis Boîte noire à l ’application qui l ’utilisateur réagit à l ’événement ou pas „ Evénement = Objet construit par le système en réponse à une action de l’utilisateur et qui contient toutes les informations concernant cette action F. Gayral 16
  • 17. Comment ça fonctionne (détails) ? „ Action de l’utilisateur dans la fenêtre de l’application ==> Interruption matérielle ==> Récupération de l’interruption par le système ==> Construction de l’événement correspondant <== Envoi d'une message à l’application concernée avec des informations sur l’événement <== L'application réagit à l'événement ou non „ Exemples : ƒ clic souris : connaissances des coordonnées du point de clic ƒ frappe d’un caractère : connaissance du caractère frappé ƒ événement de fenêtre : F. Gayral 17
  • 18. Schéma général Système appli1 Construction Traitement d ’un d ’une interruption événement appli2 Message avec toutes les caractéristiques de l ’événement transmis à l ’application appli3 azerty F. Gayral 18
  • 19. Concevoir une application munie d’une interface graphique „ Bien séparer ce qui relève de l’application de ce qui relève de l ’interface graphique „ Exemple d’une banque : ƒ applicatif : gérer les clients, les comptes, les transferts,…. ƒ GUI (graphical user interface) : comment l’applicatif apparaît à l’utilisateur ƒ Un même applicatif peut avoir différentes GUI , suivant l ’utilisateur : ‚ le guichetier, l ’administrateur,… F. Gayral 19
  • 20. Concevoir une interface graphique, c’est: „ définir la fenêtre “ cadre ” de l’application et les objets graphiques qu’elle contient : menu, composants... Aspect visuel „ définir les différentes actions que pourra réaliser l’utilisateur dans cette fenêtre (cliquer dans tel ou tel item du menu, dans tel composant : bouton, item d'une liste...) „ écrire le traitement correspondant à chacune des actions prévues. Aspect événementiel F. Gayral 20
  • 21. Remarques „ Toutes les actions de l’utilisateur qu’on veut traiter doivent avoir un traitement prévu „ Mais on ne connaît pas le moment où l ’action est déclenchée „ Le traitement prévu concerne le plus souvent l ’applicatif F. Gayral 21
  • 22. API pour le graphique „ API = Application Programing Interface ƒ Ensemble d’objets graphiques ƒ Ensemble de fonctions permettant l’affichage, l’ouverture de fenêtre „ On peut utiliser : • directement l’API (programmation de bas niveau) • faire appel à des bibliothèques de haut niveau encapsulant ces fonctions, types... • Souvent langages objets avec des bibliothèques de classes organisées en hiérarchie F. Gayral 22
  • 23. Différentes API „ XLib : bibliothèque de bas niveau en C utilisant le protocole X Window „ Gtk+ (Gimp tool kit) bibliothèque de haut niveau (widget), surcouche de Xlib „ Qt (société Trolltech) autre bibliothèque (C++). Qt a été choisi par Kde, environnement graphique de bureau Open Source pour les stations de travail Unix/Linux. „ Tcl/Tk ƒ Tcl (Tool Command Language) langage de script (langage de programmation interprété) ƒ Tk (Tool Kit) : la bibliothèque graphique de widget pour l'écriture de GUI, surcouche de Xlib „ Visual basic (pour windows), C++, bibliothèque java swing 23 F. Gayral
  • 24. Les éléments communs à ces API „ Les widgets : composants visuels de base généralement implémentés sous forme d'objet ƒ posséde des attributs et méthodes par défaut et modifiables ƒ définis et organisés selon une hiérarchie de classes fournie par l’API et, par l'héritage, il est possible de définir ses propres widgets dérivés d'une de ces classes „ La gestion événementielle par des déclenchements de fonctions ou méthodes F. Gayral 24
  • 25. Les environnements de programmation (IDE Integrated Development Environment ) „ Integrated Development Environment (IDE) : a programming environment integrated into a software application that provides a GUI builder, a text or code editor, a compiler and/or interpreter and a debugger. „ en français : environnement de développement intégré „ Exemples : ƒ Visual Studio (microsoft), Delphi, JBuilder (borland), KDevelop ( license GPL) pour KDE, Eclipse,... ƒ Supportent souvent différents langages de programmation F. Gayral 25
  • 26. Environnements de développement pour Java Nombreux IDE commerciaux Des environnements freeware ou shareware -- Kawa http://www.macromedia.com/software/kawa/ -- Emacs + JDE http://sunsite.auc.dk/jde F. Gayral 26
  • 27. Dans ce cours „ Pas d'IDE „ environnement unix simple : ƒ éditeur + ƒ JRE (Java Runtime Environment) contient uniquement l'environnement d'exécution de programmes Java : javac, java, javadoc, jar… „ API : packages java (objets swing) F. Gayral 27
  • 28. Interface graphique avec Java - Historique - 2 types de programmes graphiques java - La classe JFrame F. Gayral 28
  • 29. Historique „ Java 1.0 en 1996, 1.1,... classes du package awt „ à partir de Java 1.2 (1998) : classes “ Java Foundation Classes ” (JFC) javax.swing, javax.swing.border, javax.swing.event,... „ Depuis sa version 1.2, Java a été renommé Java 2. „ Le JDK a été renommé J2SDK (Java 2 Software Development Kit) ƒ 1.4 :  2002 ƒ 1.5 : 2004 désignée sous le nom J2SE (Java 2 Standard Edition) ƒ Pour les différences J2SDK1.4 et J2SDK1.5, consulter http://perso.wanadoo.fr/jm.doudoux/java/tutorial/chap009.htm „ F. Gayral 29
  • 30. 2 types de programmes graphiques java „ Les Applications indépendantes : – Programmes autonomes (stand-alone) „ Les Applets – Programmes exécutés dans l’environnement d’un navigateur Web et chargés au travers de pages HTML „ Différences : ƒ les contextes d'invocation et d’exécution ƒ Les classes concernées F. Gayral 30
  • 31. 2 types de programmes graphiques java „ Indépendante du web : sur la machine locale ⇒ classe javax.swing.JFrame „ Dans une application pour le web : applet placée sur un serveur et téléchargée sur le poste client ⇒ classe javax.swing.JApplet F. Gayral 31
  • 32. JFrame et ses superclasses Object java.lang Component : objet qui peut être dessiné (bouton, scrollbar.) Component Container est un composant qui eut contenir d’autres composants Container java.awt e fenêtre des plus simples : pas de barre de titre, ni de bords Window ne fenêtre avec barre de titre et Frame bords Une JFrame est une Frame avec JFrame javax.swing certaines extensions F. Gayral 32
  • 33. Premier exemple : ouvrir une simple fenêtre Démo import javax.swing.*; public class FenSimple extends JFrame { public FenSimple (String titre, int x, int y, int w, int h) { super(titre); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setBounds(x,y,w,h); this.setVisible(true); } public static void main(String[] args) { new FenSimple ( "Ma première fenêtre ", 300,200,500,400); } F. Gayral 33
  • 34. Remarques sur le programme „ Ce programme se contente d'afficher une fenêtre a l'écran „ Une fois qu'arrive la dernière instruction de la fonction main() : ƒ le programme ne s'arrête pas : il attend les événements ƒ la fenêtre est toujours à l'écran ƒ si l'utilisateur agit, rien ne se passe car rien n'a été prévu ƒ le programme tourne tant que la fenêtre n'est pas fermée „ Fenêtre pas du tout paramétrée : position et dimensions "en dur" F. Gayral 34
  • 35. Positionnement et taille this.setBounds(300,200,500,400); //Position et taille (0,0) X (300) Y (200) H (400) W (500) F. Gayral 35
  • 36. Détails sur les méthodes employées „ setVisible : Dessine la fenêtre au premier plan, par dessus toute fenêtre déjà visible à l’écran „ Les méthodes setBounds() et setVisible() sont héritées de Component, et sont donc disponibles pour tout Component „ setDefaultCloseOperation(EXIT_ON_CLOSE) permet de fermer la fenêtre quand l ’utilisateur cliquera sur la croix „ Autres méthodes : ƒ setSize(int w, int h) ƒ setLocation (int x, int y) ƒ show() équivalente à setVisible(true) F. Gayral 36
  • 37. Comment pallier l'indépendance de Java par rapport aux plate-formes ? „ Par exemple : si on veut connaître des informations sur la machine sur laquelle s ’exécute le programme ? „ La classe Toolkit ƒ fait le lien entre les classes java indépendantes de toute plate- forme et la plate-forme sur laquelle tourne le programme ƒ On obtient une instance de Toolkit par la méthode de classe de Toolkit : public static Toolkit getDefaultToolkit() ‚ Exemple de code : Toolkit aTK= Toolkit.getDefaultToolkit(); Dimension dim = aTK.getScreenSize(); F. Gayral 37
  • 38. et si on veut connaître des informations sur la machine sur laquelle s ’exécute le programme ? „ La classe System ƒ permet d ’accéder à des informations liées au système ou à l ’utilisateur ƒ Variables de classe connues ‚ in, out, err (dans System.out) ƒ Méthode importante ‚ public static String getProperty(String key) : retourne la valeur de la propriété repérée par la clé key ‚ Exemple de code : System.getProperty("user.dir"); F. Gayral 38