ITI Introduction à l informatique II

Documents pareils
Développement Logiciel

Interfaces graphiques avec l API Swing

Construire des plug-ins pour SAS Management Console SAS 9.1

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

F. Barthélemy. 17 mai 2005

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Mode. er. 1 / est. a jour. Tel : 03

TD/TP 1 Introduction au SDK d Android

LOG4430 : Architecture logicielle et conception avancée

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Chapitre VI- La validation de la composition.

Le site officiel des élections au Grand-Duché de Luxembourg

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Héritage presque multiple en Java (1/2)

Wix : mettre en place un site d e commerce

Tutoriel de formation SurveyMonkey

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Introduction aux composants logiciels : JavaBeans Master des Technologies de l'internet

Conception de circuits numériques et architecture des ordinateurs

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Génie Logiciel avec Ada. 4 février 2013

4 Exemples de problèmes MapReduce incrémentaux

Problèmes liés à la concurrence

INTRODUCTION À LA GESTION DE PROJET AGILE (BACKLOG, TABLEAUX DE BORD, BURNDOWN, PLANIFICATION D ITERATIONS)

Premiers Pas en Programmation Objet : les Classes et les Objets

acheter en ligne l Esko Store Comment sur

CORBA haute performance

Générer du code à partir d une description de haut niveau

Corrigé des exercices sur les références

PROJET 1 : BASE DE DONNÉES REPARTIES

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

BES WEBDEVELOPER ACTIVITÉ RÔLE

Création d un service web avec NetBeans 5.5 et SJAS 9

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Structuration des décisions de jurisprudence basée sur une ontologie juridique en langue arabe

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Construire une application marketing Facebook sur la plateforme Windows Azure

La Programmation Orientée Agent Les Agents Réactifs

Bases Java - Eclipse / Netbeans

Warren PAULUS. Android SDK et Android x86

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Programmation des Applications Réparties. Parsers XML DOM et SAX

Création et Gestion des tables

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

JavaServer Pages (JSP)

Design patterns. Design patterns - définition. Design patterns - avantages

L exclusion mutuelle distribuée

Mobile OGSI.NET: Grid Computing on Mobile Devices

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

IBM Workplace : Live!

Auto-évaluation Programmation en Java

Plan global Outils de développement et compilation. Ce que l on veut éviter. Plan. Git : gestion de code source et versionnement.

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Environnements de développement (intégrés)

Configuration de TCPIPconfig.h

Cours Bases de données 2ème année IUT

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Ed 03/95 PAQ 1530 NON URGENTE (INFO PRODUIT) TEMPORAIRE DEFINITIVE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Programmation Par Objets

Documentation : Réseau

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Les frameworks au coeur des applications web

Remote Method Invocation (RMI)

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Création d une application JEE

Comment rendre un site d e-commerce intelligent

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Cisco Certified Network Associate

Package Java.util Classe générique

TP1 : Initiation à Java et Eclipse

CATALOGUE DE FORMATIONS

Spécifications de raccordement au service de Téléphonie sur IP (ToIP) de RENATER

Cours 2 : programmation des interfaces graphiques

Plateforme de capture et d analyse de sites Web AspirWeb

Resolution limit in community detection

Centre de formation digital et communication : www. Komelya.fr

Etude et développement d un moteur de recherche

TP SIN Programmation sur androïde Support : eclipse

Présentation du PL/SQL

SQL Historique

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Programmation par les Objets en Java

Arbres binaires de recherche

Threads. Threads. USTL routier 1

Cours 8 Not Only SQL

AVerMedia CM3000 Manuel d utilisation

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Java et les bases de données

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Qu est-ce que l analyse des données qualitatives? TAMS Analyzer n est: Projets collaboratifs. TAMS Analyzer permet:

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Création d objet imbriqué sous PowerShell.

Transcription:

Interface utilisateur graphique : Modèle-Vue-Contrôleur École de science informatique et de génie électrique (SIGE) Université d Ottawa Version du 7 février 2017

Aperçu Interface utilisateur graphique : Modèle-Vue-Contrôleur En développement logiciel, un patron de conception est un arrangement spécifique de classes. C est une façon standard de résoudre des problèmes bien connus. Les programmeurs de l industrie sont familiers avec ces patrons. Cette semaine, nous découvrons le patron de conception Modèle-Vue-Contrôleur (MVC) qui sert dans la réalisation d interfaces utilisateur graphiques. Objectif général : Cette semaine, vous serez en mesure de concevoir l interface utilisateur graphique d une application simple en appliquant le patron de conception Modèle-Vue-Contrôleur.

Objectifs d apprentissage Décrire en vos propres mots le patron de conception Modèle-Vue-Contrôleur. Utiliser le patron de conception Modèle-Vue-Contrôleur afin de produire le rendu visuel d une interface utilisateur graphique. Lectures : https://fr.wikipedia.org/wiki/modèle-vue-contrôleur http://heim.ifi.uio.no/~trygver/2007/mvc_originals.pdf

Plan 1. Préambule 2. Théorie 3. Exemple 4. Prologue

Patron de conception («design pattern») En développement logiciel, un patron de conception est un arrangement spécifique de classes. C est une façon standard de résoudre des problèmes bien connus. Les programmeurs de l industrie sont familiers avec ces patrons.

Modèle-Vue-Contrôleur («Model-View-Controller») Model 2 4 Controller 1 3 View MVC permet de séparer les données, la vue et la logique de l application.

Avantages Permet de modifier ou adapter chacune des parties de l application de façon indépendante ; Favorise l implémentation de plusieurs vues ; L association entre le modèle et la vue se fait dynamiquement au moment de l exécution (et non au moment de la compilation), ce qui permet de changer la vue au moment de l exécution.

Définitions Modèle l implémentation, état : attributs et comportements ; Vue (View) l interface en sortie, une représentation du modèle pour le monde extérieur ; Contrôleur (Controller) l interface en entrée, achemine les requêtes de l usager afin de mettre-à-jour le modèle.

Modèle Contient les données de l application et les méthodes pour transformer les données ; Possède une connaissance minimale de l interface graphique (parfois aucune connaissance) ; La vue et le modèle sont très différents.

Vue Une représentation (graphique, textuelle, vocale, etc.) du modèle pour l utilisateur.

Contrôleur Un contrôleur est un objet permettant à l utilisateur de transformer les données ou la représentation ; Connaît très bien le modèle.

Counter increment() reset() Model getvalue() Controller actionperformed() update() View Une interface graphique pour la classe Counter.

Counter : Modèle p u b l i c c l a s s Counter { p r i v a t e i n t v a l u e ; p u b l i c Counter ( ) { v a l u e = 0 ; p u b l i c void increment ( ) { v a l u e++; p u b l i c i n t getvalue ( ) { return v a l u e ; p u b l i c void r e s e t ( ) { v a l u e = 0 ; p u b l i c S t r i n g t o S t r i n g ( ) { return Counter : { v a l u e= +v a l u e+ ;

View p u b l i c i n t e r f a c e View { void update ( ) ; Pour faciliter le développement de plusieurs vues, nous créons l interface View. Notre exemple aura deux vues : GraphicalView et TextView.

p u b l i c c l a s s TextView implements View { p r i v a t e Counter model ; p u b l i c TextView ( Counter model ) { t h i s. model = model ; p u b l i c void update ( ) { System. out. p r i n t l n ( model. t o S t r i n g ( ) ) ;

p u b l i c c l a s s GraphicalView extends JFrame implements View { p r i v a t e JLabel i n p u t ; p r i v a t e Counter model ; p u b l i c GraphicalView ( Counter model, C o n t r o l l e r c o n t r o l l e r ) setlayout (new GridLayout ( 1, 3 ) ) ; t h i s. model = model ; JButton button ; button = new JButton ( Increment ) ; button. a d d A c t i o n L i s t e n e r ( c o n t r o l l e r ) ; add ( button ) ; JButton r e s e t ; r e s e t = new JButton ( Reset ) ; r e s e t. a d d A c t i o n L i s t e n e r ( c o n t r o l l e r ) ; add ( r e s e t ) ; i n p u t = new JLabel ( ) ; add ( i n p u t ) ; p u b l i c void update ( ) { i n p u t. settext ( I n t e g e r. t o S t r i n g ( model. getvalue ( ) ) ) ;

p u b l i c c l a s s C o n t r o l l e r implements A c t i o n L i s t e n e r { p r i v a t e Counter model ; p r i v a t e View [ ] views ; p r i v a t e i n t numberofviews ; p u b l i c C o n t r o l l e r ( ) { views = new View [ 2 ] ; numberofviews = 0 ; model = new Counter ( ) ; r e g i s t e r (new GraphicalView ( model, t h i s ) ) ; r e g i s t e r (new TextView ( model ) ) ; update ( ) ;

p r i v a t e void r e g i s t e r ( View view ) { views [ numberofviews ] = view ; numberofviews++; p r i v a t e void update ( ) { f o r ( i n t i =0 ; i <numberofviews ; i ++) { views [ i ]. update ( ) ;

p u b l i c void actionperformed ( ActionEvent e ) { i f ( e. getactioncommand ( ). e q u a l s ( Increment ) ) { model. increment ( ) ; e l s e { model. r e s e t ( ) ; update ( ) ;

Application Counter increment() reset() Model getvalue() Controller actionperformed() update() View

p u b l i c c l a s s App { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { C o n t r o l l e r c o n t r o l l e r ; c o n t r o l l e r = new C o n t r o l l e r ( ) ;

Counter L application Counter est ses deux vues : textuelle et graphique.

Résumé MVC permet de séparer clairement les données, les vues, et la logique d une application.

Excercises Implémentez chacune des applications suivantes à l aide du patron de conception Modèle-Vue-Contrôleur (MVC). Un jeu de tic-tac-toe Un jeu de bataille navale Un jeu de mémoire Jeu 2048

Prochain module Types paramétrés («generics»)

References I E. B. Koffman and Wolfgang P. A. T. Data Structures : Abstraction and Design Using Java. John Wiley & Sons, 2e edition, 2010.

Pensez-y! L impression de ces notes n est probablement pas nécessaire!