• Aucun résultat trouvé

IFT2905 Interfaces personne-machine 4. Achitecture de logiciel IU

N/A
N/A
Protected

Academic year: 2022

Partager "IFT2905 Interfaces personne-machine 4. Achitecture de logiciel IU"

Copied!
30
0
0

Texte intégral

(1)

IFT2905 Interfaces personne-machine 4. Achitecture de logiciel IU

S´ebastien Roy

D´epartement d’Informatique et de recherche op´erationnelle Universit´e de Montr´eal

22 janvier 2007 Universit´e de Montr´eal

(2)

Horreur ou splendeur?

Message qui pr´esent´e lorsqu’on vidait la cache de Internet Explorer sur Win95.

Tautologie: Cookie:... is a cookie Trop d’exitation (!!)

Est-ce qu’on donne assez d’information `a l’usager pour d´ecider? Qu’est-ce qu’uncookie?

→ Ne pas poser de questions auquel on ne peut r´epondre.

(3)

Horreur ou splendeur?

Trop de question? utiliserto All.

mais ce n’est pas toujours la solution...

Ici on affiche chaque fichier un `a la fois...

Que faire si on veut changer de r´eponse sur un fichier `a la fin de la liste?

(4)

Horreur ou splendeur?

Vous avez beaucoup de questions similaires `a poser?

→ affichez une liste

(5)

Au programme

Comment on programme des interfaces usager?

Quelquesdesign patterns...

Mod`ele-Vue-Contrˆoleur (Model-View Controller ouMVC) Hi´erarchie de Vue

Observateur

(6)

Mod` ele-Vue-Contrˆ oleur

Mod`ele-Vue-Contrˆoleur

Pattern de programmation des interfaces usagers propos´e originalement par Smalltalk-80.

S´eparation des responsabilit´es Avant-sc`ene: VueetContrˆoleur Arri`ere-sc`ene: Mod`ele

D´ecouplage

On peut avoir plusieurs Vueou Contrˆoleur pour un mod`ele.

On peut r´eutiliser unVue ouContrˆoleur dans d’autres mod`eles.

(7)

Mod` ele-Vue-Contrˆ oleur

(8)

Mod` ele-Vue-Contrˆ oleur

Mod`ele

´Etat de l’appliquation

G`ere les donn´ees internes de l’appliquation Implante les changements d’´etat

Avertit les Vues/Contrˆoleurs des changements Si le patternObservateur(observer) est utilis´e: les Vues s’enregistrent au mod`ele pour recevoir les changements (en tant quelisteners). Sinon, les vues puisent directement dans le mod`ele.

(9)

Mod` ele-Vue-Contrˆ oleur

Vue

Sortie pour l’usager Occupe l’´ecran

Questionne le mod`ele pour l’info `a afficher (≈callbacks) Ecoute le mod`´ ele pour des changements (si pattern Obersvateur)

Contrˆoleur

Entr´ee de l’usager Clavier, souris, ...

Dit au Mod`ele ou `a la Vue de changer en fonction de l’input B´en´efice de la s´eparation M-V-C

Plusieurs fa¸con de voir une mˆeme donn´ee.

R´eutilisabilit´e → GUI toolkits

(10)

Exemple: Champs de texte

(11)

Exemple: client Web

(12)

Exemple: Serveur web avec base de donn´ ee

(13)

Exemple: Visualisation du traffic

(14)

Exemple: Multiplicateur minimaliste

entry .a -width 5 -textvariable a label .* -text *

entry .b -width 5 -textvariable b label .= -text =

label .c -width 10 -textvariable c eval pack .a .* .b .= .c -side left trace variable a w {recalcule}

trace variable b w {recalcule}

proc recalcule {args} { global a b c

catch {set c [expr {$a * $b}]}

}

(15)

Exemple: Multiplicateur minimaliste

Mod`ele

les variablesa,b, c Vue

lelabel .caffiche la valeur dec Contrˆoleur

les champs.aet.bpour entrer les valeurs

quoique...

-textvariablefait que la vue est avertie lors d’un changement sur aoub (ou mˆemec).

trace fait que le mod`ele est avertit lors d’un changement sur aoub.

(16)

Granularit´ e du mod` ele

Quelle est la granularit´e des parties observables du mod`ele?

getText()VSgetPartOfText(start, end) Carte routi`ere VS routes individuelles

Granulartie des ´evenements?

La string a chang´eVSLe caract`ere 12 `a chang´e La carte routi`ere VS Quelques routes ont chang´e

(17)

Granularit´ e: Multiplicateur

bind amaj "a" {puts "A!"; event generate %W "A"; break; } entry .a -width 5 -textvariable a

bindtags .a [concat amaj [bindtags .a]]

pack .a

Avant: un ´evenement pour chaque entr´ee (”Enter”).

Ici: un ´evenement pour chaque touche...

(18)

S´ eparation du Contrˆ oleur et Vue

Les composants d’interface (ex: entry) poss`ede une paire contrˆoleur-vue int´egr´es.

Un contrˆoleur doit produire une sortie

L’affichage fournit lacapacit´e suggestive d’action (affordance). Ex: scrollbar, entry, radio button, ...

L’affichage fournit dufeedback`a l’utilisateur. Ex: bouton press´e, ...

Etat partag´´ e entre contrˆoleur et vue... qui controle la s´election?

doit ˆetre affich´e par la vue

doit ˆetre mis `a jour par le contrˆoleur

Certaines composantes d’interface usager sont difficiles `a d´ecomposer selon le mod`ele MVC.

(19)

En pratique: Contrˆ oleur et Vue coupl´ es

MVC est maintenant remplac´e par MV(Mod`ele-Vue) Une Vue g`ere `a la fois les entr´ees et l’affichage

appell´ewidget, ou composant d’interface Ex: buttons, entry, scrollbar, etc...

(20)

Hi´ erarchie de Vues

Les Vues sont organis´ees hi´erarchiquement Contenant (Containers)

Fenˆetre, paneau, widget texte complexe, ...

tk window, frame

Composants (Components)

Canvas, bouton, ´etiquette, boˆıte de texte, ...

Les contenants sont ausse des composants

Chaque syst`eme de GUI offre des hi´erarchies `a usage vari´e Sortie

Entr´ee

Agencement (Layout)

(21)

Hi´ erarchie de Vues: exemple

frame .f

entry .f.a -width 5 -textvariable a label .f.* -text *

entry .f.b -width 5 -textvariable b label .f.= -text =

label .f.c -width 10 -textvariable c

eval pack .f.a .f.* .f.b .f.= .f.c -side left button .q -text Quit -command {destroy .}

pack .f .q -side top

trace variable a w {recompute}

trace variable b w {recompute}

proc recompute {args} { global a b c

catch {set c [expr {$a * $b}]}

}

(22)

Hi´ erarchie de Vue: Sortie

Dessin

Un demande de dessin passe du haut vers le bas de la hi´erarchie

D´ecoupage (Clipping)

Le contenant parent pr´evient ses enfants des limites o`u ils peuvent dessiner

Ordre de profondeur

Les enfants son (g´en´eralement) dessin´es au dessus des parents L’ordre des enfants dicte l’ordre d’affichage

Syst`eme de coordonn´ees

Chaque contenant `a son propre syst`eme (origine au coin en haut `a gauche, typiquement)

La position des enfants est exprim´ee dans le syst`eme du parent

(23)

Hi´ erarchie de Vue: Entr´ ee

Distribution et propagation des ´evenements

Les ´evenements brutes (touche press´ee, mouvement de souris, clics) sont envoy´es `a la composante la plus basse (feuille de la hi´erarchie)

un ´evenement se propage vers le haut, jusqu’`a ce qu’une composante l’utilise

Focus clavier et souris

Une seul composante `a la fois poss`ede le focus (et ses parents

´

evidement)

(24)

Hi´ erarchie de Vue: Agencement

Agencement automatique: Choix de la position et taille d’un enfant pour qu’il soit `a l’int´erieur du parent.

Permet d’adapter au changement de taille de fenˆetre Permet l’internationalisation et les diff´erences entre plateformes (polices, ...)

Elimine la lourdeur de la gestion explicite des positions.´ En r´ealit´e, le programmeur doit quand mˆeme placer les composants...

(25)

Pattern Observateur

On utilise le patternObservateurpour s´eparer le Mod`ele des Vues.

→ En Java, ce sont les Listeners.

(26)

Int´ eraction de base

interface Model {

void register(Observer) void unregister(Observer) Object get()

void modify() }

interface Observer { void update(Event) }

(27)

Int´ eraction de base: Attention

Le mod`ele doit ˆetre consistant avant une mise `a jour.

(28)

Int´ eraction de base: Attention

Changement d’inscription (registration) pendant la mise `a jour.

(29)

Int´ eraction de base: Attention

La mise `a jour d´eclanche une modification.

(30)

Int´ eraction de base: Attention

Mises `a jour d´esordonn´ees.

Références

Documents relatifs

Trois versions: Court, Moyen, Long Les courts sont faible et sensibles au bleu Les moyens et longs sont plus sensibles Les moyens sont sensibles au vert. Les longs sont sensibles

Alterner entre l’´ evaluation heuristique et les tests usagers Chaque m´ ethode trouve diff´ erents probl` emes. l’´ evaluation heuristique est moins

12 Prototypes sur ordinateur 13 Outils pour les interfaces 14 Evaluation par heuristiques 15 Tests usagers.. 16 Conception et analyse

L’interface devrait ˆ etre coh´ erente avec le monde et l’exp´ erience de l’usager.. Speak the user’s

Ces composants sont des vue + contrˆ oleur en un seul objet Mod` ele int´ egr´ e. Le mod` ele est conserv´ e dans le widget Mod` ele

Pour mieux g´ erer le risque inh´ erent aux interfaces usagers, on propose un mod` ele it´ eratif o` u l’on r´ ep` ete.. Conception de

→ (le Undo fonctionne g´ en´ eralement ` a ce niveau) Entr´ ee texte consid´ er´ ee comme une action unique Que faire d’un macro d´ efini par l’usager.. Undo du macro comme

C’est bien d’avoir un usager repr´ esentatif des vrais usagers du site, mais c’est plus important de tester au d´ ebut et souvent... Ce que Krug