POO / IHM Architecture Logicielle Anne-Marie Dery (pinna@polytech.unice.fr)

download POO / IHM Architecture Logicielle Anne-Marie Dery (pinna@polytech.unice.fr)

of 70

  • date post

    03-Apr-2015
  • Category

    Documents

  • view

    106
  • download

    1

Embed Size (px)

Transcript of POO / IHM Architecture Logicielle Anne-Marie Dery (pinna@polytech.unice.fr)

  • Page 1
  • POO / IHM Architecture Logicielle Anne-Marie Dery (pinna@polytech.unice.fr)
  • Page 2
  • Organiser le code (rangement) Simplifier (diviser rgner) Organiser le travail Modifier (une partie) R-utiliser Notions : modularit, volutivit, flexibilit Sparation possible Code pour IHM Code Mtier Exemple IHM diffrente pour une Gestion dun stock de chaussures ou de bibelots ? Linux sous gnome ou kde, le systme change-t-il ? Objectif : viter de tout modifier si on change la partie fonctionnelle ou la partie IHM Architecture Logicielle et IHM : Pourquoi ?
  • Page 3
  • Un problme classique
  • Page 4
  • Des architectures logicielles http://tel.archives-ouvertes.fr/docs/00/04/82/79/HTML/2_2modelesinterface_referen.html Tous les modles partent du principe : un systme interactif comporte une partie interface et une partie application pure Cette dernire est souvent appele noyau fonctionnel. Le noyau fonctionnel est considr comme prexistant, et les modles de systmes interactifs dcrivent essentiellement la partie interface, ainsi que ses relations avec les objets du domaine. La plupart des modles identifient au moins trois types d'lments : un ``cot utilisateur' (prsentations), un ``ct noyau fonctionnel' (interfaces du noyau fonctionnel, abstractions, modles), et des lments articulatoires (contrleurs, adaptateurs). Systme interactif utilisateur
  • Page 5
  • Des architectures logicielles : modles architecturaux Seeheim Premier modle (groupe de travail Seeheim en 1985) - destin au traitement lexical des entres et sorties dans les interfaces textuelles a servi de base beaucoup d'autres modles. Retour smantique direct utilisateur NF
  • Page 6
  • Des architectures logicielles : modles architecturaux Arch utilisateur Composant d'interaction - ensemble des widgets (objets interactifs) + communications avec les priphriques physiques Composant de prsentation - reprsentation logique des widgets indpendante de la plate-forme. Contrleur de dialogue - responsable du squencement des tches et du maintien de la consistance entre les vues multiples. Adaptateur du domaine - responsable des tches dpendantes du domaine qui ne font pas partie du noyau fonctionnel mais qui sont ncessaires sa manipulation par l'utilisateur. Noyau fonctionnel reprsente la partie non interactive de l'application. Le modle Arch [1992]1992 5 composants et 3 types de donnes objets du domaine objets du domaine objets de prsentation objets d'interaction
  • Page 7
  • Des architectures logicielles : modles agents utilisateur Le modle MVC (Modle, Vue, Contrleur) Smalltalk [Goldberg and Robson, 1981].Goldberg and Robson, 1981 modifiabilit + conception itrative + compatibilit avec les langages objets. les systmes interactifs = une hirarchie d'agents. Un agent MVC = un modle, une ou plusieurs vues, et un ou plusieurs contrleurs modle = noyau fonctionnel de l'agent. (entier, chane de caractres ou objets) Le modle notifie les vues chaque fois que son tat est modifi par le noyau ou par ses contrleurs. La vue (constitue d'objets graphiques) maintient une reprsentation du modle pour l'utilisateur, mise jour chaque notification d'tat. Le contrleur reoit et interprte les vnements utilisateur, les rpercutant sur le modle (modification de son tat) ou sur la vue (retour instantan).
  • Page 8
  • Des architectures logicielles : modles agents PAC utilisteur modle agents PAC (Prsentation, Abstraction, Contrle) [Coutaz, 1987] = hirarchie d'agents.Coutaz, 1987 prsentation = comportement en entre et en sortie de l'agent pour l'utilisateur. Abstraction = la partie smantique de l'agent. Contrle = consistance entre la prsentation et l'abstraction,. Abstraction : quivalent modle de MVC, prsentation : fusion des composants vue et contrleur. Le composant contrle n'a pas d'existence explicite dans le modle MVC. le modle PAC peut tre appliqu plusieurs niveaux d'un systme interactif. Une application interactive peut ainsi tre dcrite comme une hirarchie d'agents disposs sur plusieurs couches d'abstractions PAC/Amodeus = Arch + Pac avec hirarchie PAC dans le contrleur
  • Page 9
  • Zoom : Architecture MVC Smalltalk[Goldberg et Robson1979-1983] Model : modlisation (donnes et comportement) View: reprsentation manipulable de l'objet Control : interprtation des entres Sparer dans le code les donnes (le Modle), La ou les Vues, Le Contrle V sabonne M C sabonne V C modifie M et V
  • Page 10
  • Le contrleur au centre de la communication
  • Page 11
  • Plusieurs vues 1 modle
  • Page 12
  • Exemple
  • Page 13
  • Pour voir le code complet http://java.sun.com/developer/technicalArticl es/javase/mvc/
  • Page 14
  • Observer Observable
  • Page 15
  • Motivation Un effet de bord frquent de la partition dun systme en une collection de classes cooprantes est la ncessit de maintenir la consistance entre les objets relis entre eux. On ne veut pas obtenir la consistance en liant troitement les classes, parce que cela aurait comme effet de rduire leur rutilisabilit.
  • Page 16
  • Moyen Dfinir une dpendance de 1 n entre des objets telle que lorsque ltat dun objet change, tous ses dpendants sont informs et mis jour automatiquement
  • Page 17
  • Quand lappliquer Lorsquune abstraction possde deux aspects dont lun dpend de lautre. Lencapsulation de ces aspects dans des objets spars permet de les varier et de les rutiliser indpendamment. Exemple : Modle-Vue-Contrleur Lorsquune modification un objet exige la modification des autres, et que lon ne sait pas a priori combien dobjets devront tre modifis. Lorsquun objet devrait tre capable dinformer les autres objets sans faire dhypothses sur ce que sont ces objets,
  • Page 18
  • Besoin dvnements Le pattern Observer dcrit comment tablir les relations entre les objets dpendants. Les objets-cls sont la source Peut avoir nimporte quel nombre dobservateurs dpendants Tous les observateurs sont informs lorsque ltat de la source change lobservateur. Chaque observateur demande la source son tat afin de se synchroniser
  • Page 19
  • Structure
  • Page 20
  • Collaborations
  • Page 21
  • Bnfices Utilisation indpendante des sources et des observateurs. On peut rutiliser les sources sans rutiliser les observateurs et vice- versa. On peut ajouter des observateurs sans modifier la source et les autres observateurs. Support pour la communication broadcast La source ne se proccupe pas du nombre dobservateurs.
  • Page 22
  • Implmentations Java du pattern Une classe et une interface : class Observable {... } et interface Observer Un objet Observable doit tre une instance de la classe qui drive de la classe Observable Un objet observer doit tre instance dune classe qui implmente linterface Observer void update(Observable o, Object arg); Des listeners : ajouter des listerners, notifier les listeners avec des vnements, ragir aux vnements
  • Page 23
  • Observer-Observable et Listeners
  • Page 24
  • Exemple de Listener jan.newmarch.name/java/replayJava/paper.htm
  • Page 25
  • Listeners Supported by Swing Components http://java.sun.com/docs/books/tutorial/uisw ing/events/intro.html
  • Page 26
  • Des lments graphiques : Component Dfinition dun lment graphique avec une dimension, une position Des Coordonnes (Origine coin suprieur gauche, x (width) vers la droite et y (height) vers le bas) Des morceaux dcrans : Graphics Contexte graphique Permet de dessiner Changer de crayon : couleur, formes gomtriques, images, chanes de caractres - Automatiquement redimensionns, raffichs Que trouve-t-on dans les librairies graphiques ? Des lments graphiques Contenant Container : qui contiennent dautres lments graphiques organiss Du Formattage : LayoutManager Dfinition de lorganisation En ligne, en tableau, avec des contraintes,etc
  • Page 27
  • Hirarchie Swing
  • Page 28
  • Aperu de Swing Arch http://download.instantiations.com/DesignerDoc/integration/latest/docs/html/palettes/ swing_palettes.html
  • Page 29
  • Aperu de Swing Les Containers Les containers Ont un LayoutManager add / remove dun Component Unicit de lieu Indice des components Mthodes connatre repaint() ! validate() ! setEnabled(true / false) : activ / dsactiv (Rectangle) getBounds / setBounds(x,y, w, h) : positionne et dimensionne getWidth() : largeur / getHeight() : hauteur getX() et getY() : obtenir une coordonne setVisible(true / false) getBackground et setBackground [objet Color, dfinition RGB]
  • Page 30
  • Aperu de Swing Des composants JComponent Hrite de Container Mthodes de commodit getSize retourne une Dimension setSize : une Dimension ou deux entiers Une position getLocation retourne un Point setLocation avec un Point ou deux entiers Coordonnes Origine au coin suprieur gauche x (width) vers la droite et y (height) vers le bas Mthode public void paint(Graphicsg ) setPreferredSize setDoubleBuffered(true/false) / isDoubleBuffered() setOpaque(true / false) Dessin lcran : paint appelle paintComponent paintBorder paintChildren Les boutons JButton /JToggleButton / JCheckBox / JRadioButton java.awt.ButtonGroup (mthode add) Les champs textuels JTextField/ JTextArea Etc
  • Page 31
  • Aperu de Swing et aussi Les cones : javax.swing.ImageIcon crer avec le no