Cours 3a : Architecture Logicielle & MVC

Documents pareils
LOG4430 : Architecture logicielle et conception avancée

as Architecture des Systèmes d Information

Alfstore workflow framework Spécification technique

Développement Logiciel

Auto-évaluation Programmation en Java

Programmer en JAVA. par Tama

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

Objets et Programmation. origine des langages orientés-objet

Bases Java - Eclipse / Netbeans

Java Licence Professionnelle CISII,

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)

Java et les bases de données

Construire des plug-ins pour SAS Management Console SAS 9.1

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Paginer les données côté serveur, mettre en cache côté client

Les différents parcours en S4

Interfaces graphiques avec l API Swing

F. Barthélemy. 17 mai 2005

Premiers Pas en Programmation Objet : les Classes et les Objets

Module.NET 3 Les Assemblys.NET

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

PROJET DE PORTAIL INTRANET YNNA

Introduction à la programmation concurrente

Plateforme de capture et d analyse de sites Web AspirWeb

Rappel sur les bases de données

Remote Method Invocation Les classes implémentant Serializable

WEA Un Gérant d'objets Persistants pour des environnements distribués

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Package Java.util Classe générique

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

RMI le langage Java XII-1 JMF

Chapitre VI- La validation de la composition.

Cours de Programmation 2

TP1 : Initiation à Java et Eclipse

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

4 Exemples de problèmes MapReduce incrémentaux

Projet de programmation (IK3) : TP n 1 Correction

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

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Mise en œuvre des serveurs d application

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

Classes et Objets en Ocaml.

Applet pour visualiser les variables «automate» notifiées

Composants Logiciels. Le modèle de composant de CORBA. Plan

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cours en ligne Développement Java pour le web

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

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

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Problèmes liés à la concurrence

Examen Médian - 1 heure 30

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

JavaServer Pages (JSP)

Diagrammes de Package, de déploiement et de composants UML

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Introduction au langage C

UE 8 Systèmes d information de gestion Le programme

Devenez un véritable développeur web en 3 mois!

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Proposition de stage

COMMENT LIRE UN DEVIS DE CREATION DE SITE WEB?

OCL - Object Constraint Language

Quel CMS choisir pour son site web?

Haka : un langage orienté réseaux et sécurité

DÉVELOPPER DES APPLICATIONS WEB SÉCURISÉES

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

//////////////////////////////////////////////////////////////////// Administration bases de données

digital asset management

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Messagerie asynchrone et Services Web

OpenPaaS Le réseau social d'entreprise

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Connaître la version de SharePoint installée

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Projet gestion d'objets dupliqués

En date du 11 décembre 2008

Les grandes familles du numérique

Programmation Orientée Objet Java

Chapitre 10. Architectures des systèmes de gestion de bases de données

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Valoriser vos bases de connaissances avec AMI Help Desk. AMI Enterprise Discovery version 3.9

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Transcription:

Structure d un système interactif Cours 3a : Architecture Logicielle & MVC jgarcia@ircam.fr (partie de la présentation basée sur des transparents d Anastasia Bezerianos, Fanis Tsandilas et Michel Beaudouin-Lafon) Ce que l on voit les sorties Ce que l on fait les entrées Ce qu il se passe traitement calcul communication données (stockage et accès) partie visible «front end» partie invisible «back end» Structure d un système interactif Structure d un système interactif Ce que l on voit (entends-perçois): les sorties Ce qu on le fait : les entrées http://youtu.be/u7gm0oekxwu

Exemple 1 Exemple 2 - modèle de données (albums, artistes, catégories, etc.) - communication avec le serveur de itunes - traitement de requêtes - traitement des achats - sécurité - modèles géométriques - calcul (transformations, rendu graphique, etc.) - stockage et accès aux dessins back end back end front end front end Liaison entre les deux parties Exemple 3 programmation selon un modèle organisé Organiser, structurer une application interactive en séparant : Les données et leurs traitements : Le - structure tabulaire - stockage et accès aux données La représentation des données : La back end Le comportement de l application : Le front end

Le modèle (MVC) Le MVC est : Un patron de conception (solution de conception standardisé indépendante du langage de programmation) Une architecture logicielle (une manière de structurer une application ou un ensemble de logiciels) Introduit le 1979 par Trygve Reenskaug Fortement lié aux concepts de la programmation objet (Smalltalk)

de de demande d état de de sélection de la vue sélection de la vue

demande d état demande d état de de changement de sélection de la vue sélection de la vue mise à jour mise à jour MVC : références entre composants Le modèle: MVC : le modèle Représente les données Fournit les accès aux données Fournit les traitements applicables aux données Expose les fonctionnalités de l application Noyau Fonctionnel de l application

MVC : la vue MVC : le contrôleur La vue: Représente la (ou une) représentation des données du modèle Assure la consistance entre la représentation qu elle donne et l état du modèle/le contexte de l application Sorties de l application Le contrôleur: Représente le comportement de l application face aux actions de l utilisateur Fournit la traduction des actions de l utilisateur en actions sur le modèle Fournit la vue appropriée par rapport aux actions de l utilisateur et des réactions du modèle Comportement et gestion des entrées de l application Avantages de MVC Structure propre de l application Adapté aux concepts de la programmation O-O Indépendance données représentation comportements Modulaire et réutilisable Inconvénients de MVC Mise en place complexe dans le cas d applications importantes Mises à jour potentiellement trop nombreuses «Spaghettis» dans le code et restent souvent fortement liés au adapter la réalisation au problème

MVC et Java Swing La séparation -- n est pas stricte Les widgets de base : le comportement abstrait du widget et : Look & Feel + Listener Exemples : JButon, JLabel, JPanel, etc. La plupart des fois, on ne touche pas le modèle des widgets Swing utilise un modèle par défaut pour chaque widget Swing : types de modèles Look & Feel Interfaces : ButtonModel, ListSelectionModel Classes par default : DefaultButtonModel, DefaultListSelectionModel Données Interfaces : ListModel, TableModel, TreeModel Classes par default : DefaultListModel, DefaultTableModel, DefaultTreeModel Look & Feel + Données Pour certains widgets Exemples : BoundedRangeModel pour JSlider Exemple Exemple Les données Object[][] data = { {"Kathy", "Smith","Snowboarding", new Integer(5), new Boolen(false)}, {"John", "Doe", "Rowing", new Integer(3), new Boolean(true)}, {"Sue", "Black","Knitting", new Integer(2), new Boolean(false)}, {"Jane", "White","Speed reading", new Integer(20), new Boolean (true)}, {"Joe", "Brown","Pool", new Integer(10), new Boolean(false)} }; Table Object javax.swing.jtable Table Model Object javax.swing.table.tablemodel Table Data

Exemple Exemple Le modèle class MyTableModel extends AbstractTableModel { private String[] columnnames = private Object[][] data = public int getcolumncount() { return columnnames.length; } public int getrowcount() { return data.length; } public String getcolumnname(int col) { return columnnames[col]; } public Object getvalueat(int row, int col) { return data[row][col]; } } La vue TableModel datamodel = new MyTableModel(); JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); Exercice Proposez une implémentation MVC