ISI5 Développement d’interfaces Homme-Machine

Slides:



Advertisements
Présentations similaires
51 Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Métier Janvier Version 1.0 -
Advertisements

Stéphane Frenot - Département Télécommunication - SID - II - Jdbc 280 JDBC Java Databases Connectivity.
Connexion base de données
JDBC ou comment manipuler une base de données en Java ?
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
JDBC - p. 1 JDBC. JDBC - p. 2 Objectifs Fournir un accès homogène aux SGBDR Abstraction des SGBDR cibles Requêtes SQL Simple à mettre en oeuvre Core API.
JDBC (Complément de cours) IFT 3030
Séance /10/2004 SGBD - Approches & Principes.
JDBC - Y. Bekkers1 Java et les SGBDR Librairies JDBC Yves Bekkers.
Catalog fonctionne sur vos données Catalog est préconfiguré pour fonctionner directement avec les données – WinBooks Accounting – WinBooks Logistics –
Ghost (Création d'image Système)‏ C.R.I.P.T Informatique (BOYER Jérôme)‏
Logiciel Assistant Gestion d’Événement Rémi Papillié (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Ninja Online PROJET TUTEURÉ N3 Clément BAERT Alexis BEAUREPAIRE Nathan DAMIE Laurent LAPLACE Valentine MAILLART Emmanuel PERRIN Tuteur : Jean CARLE DUT.
Toulibre : présentation de... par Rémy Sanchez +.
Développement à l'Aide de Langages Dynamiques : Smalltalk module IT308: Méthodologies et outils logiciels Nada Ayad, Damien Cassou et Annabelle Souc.
Séminaire Novembre 2006 Serveur pédagogique : Scribe.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
ANNEE ACADEMIQUE Institut Supérieur Emmanuelle D’Alzon de Butembo COURS: THEORIE DE BASE DE DONNEES : 45H PROMOTION: G2 Gestion Informatique.
1 Rapport PFE Gestion de Stock M LLE Nouhaila Touzani Ouazli.
Les Bases de données Définition Architecture d’un SGBD
Framework EHop/Ecenvir
ATS8500 Standalone Downloader.
Environnement du développement de BD ORACLE REPORTS 10g
ملخص Initiation à la sgbdr
Les P G I Les Progiciels de Gestion Intégrés
Université Stendhal - Grenoble
Présentation Scribe NG Serveur pédagogique.
Langage de manipulation de données (LMD)
Javadoc et débogueur Semaine 03 Version A17.
Généralité sur les bases de données
DARCY Lionel BTS SIO Option SLAM
Langage de Manipulation des Données LMD
Chapitre 12 Surveillance des ressources et des performances
Introduction Bases de données Accès Internet (Web)
Développement d’une application Android destinée aux commerciaux
Réalisation d’une application web sous le thème: «Mon vétérinaire » par : Benzineb Asmaa et Meftahi Oualid Présentation à Université Saad Dahlab Blida.
Programmation système
Août 2009.
Manipulation D’Une Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Plus de 4000 langages....
A. DAAIF ENSET Mohammedia Université Hassan II Casablanca.
Présentation de frameworks J2EE 1 LIU Sizhao LUO Xin MALICK MANDENGUE Serge.
Outils et principes de base. Exemple d’application  Gestion de données d’enquête : Interface de saisie en ligne  insère directement les données dans.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
D Copyright © 2004, Oracle. Tous droits réservés. Utiliser SQL*Plus.
Architecture BD Récif.
Messagerie (Orange - Gmail)
5 Interface entre SQL et un programme
Programmation PHP / PDO
L’architecture du gestionnaire de profils
Info Bases de données avancées
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
PLATE FORME DE GESTION ÉLECTRONIQUE DE DOCUMENTS Présenté par: Amine LARIBI.
Système d’exploitation: Principe IFT6800 – E 2008 Pierre Poulin.
© Robert Godin. Tous droits réservés.
FRAMEWORKS : XMLBEANS / STRIPES
Lecture/Écriture de fichiers (I/O)
YII Yes It Is !.
Bases de données Singleton pour la connexion
Business Intelligence en ACube OLAP et Reporting avec ACubeOLAP et GRaM.
Transcription de la présentation:

ISI5 Développement d’interfaces Homme-Machine Manuele Kirsch Pinheiro Maître de conférences en Informatique Centre de Recherche en Informatique Université Paris 1 – Panthéon Sorbonne Manuele.Kirsch-Pinheiro@univ-paris1.fr http://mkirschp.free.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Présentation Contenu prévisionnel Architecture en 3 couches (3-tier) JDBC Déploiement des applications 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Architecture en 3 couches

Architecture en 3 couches Termes liés 3-tier, n-tier, multi-tier architecture Objectif Une réelle séparation entre l’interface utilisateur, la logique de l’application (métier) et les données Structure Couche présentation : interface Couche application : logique métier Couche données : données de l’application 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Architecture en 3 couches Interface utilisateur Logique de présentation Couche présentation Couche application Logique d’application (Business logic) Données de l’application Couche données 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Architecture en 3 couches Interface utilisateur Logique de présentation Couche présentation Présentation des données aux utilisateurs Interaction avec les utilisateurs Couche application Représentation de la logique métier Contrôle des fonctionnalités de l’application Couche données Gestion des données Serveurs de données Logique d’application (Business logic) Données de l’application 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Architecture en 3 couches Avantages Modularité Indépendance Chaque couche peut évoluer et être modifiée sans que cette évolution affecte les autres couches Changements technologiques sont possibles Usage Développement d’applications réparties Programmation Client/Server 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Architecture en 3 couches Comparaison avec le modèle MVC Extension naturelle, même principe : division des responsabilités La couche de présentation ne communique jamais avec la couche des données MVC Triangulaire 3-tier Linéaire 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Architecture en 3 couches Accès aux couches Chaque couche doit être isolée des autres Usage des design patterns Facade 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Connexion aux bases de données JDBC 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr JDBC API d’accès aux bases de données Paquetage java.sql.* Connexion à une base de données Manipulation d’une base de données Query Update Historique Première version en 1996 (J2SE 1.1) JDBC 2 avec J2SE 1.2 en 1998 JDBC 4 avec J2SE 6 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr JDBC Les applications accèdent à la BD par un driver (JDBC Driver) Apache Derby : derbyclient.jar PostegreSQL : postgresql-8.3-604.jdbc3.jar Les drivers sont proposés par les fournisseurs du SGBD Ces drivers ne sont pas forcément 100% pure Java Source : Horstmann, Core Java, vol. II 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Architecture avec JDBC JDBC peut être utilisé aussi bien en 2 couches qu’en 3 couches Source : Horstmann, Core Java, vol. II 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Connexion JDBC Avant tout, il faut avoir une base de données disponible…  Exemple : Base de données « Dictionnaire » sur Apache Derby Sous NetBeans : onglet Services  JavaDB  Create… 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Connexion JDBC Création d’une table sous NetBeans Onglet Services Database connection  Connect Database connection  Table, puis Create Table 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Connexion JDBC Insertion de quelques données sous NetBeans Onglet Services Database connection  Connect Database connection  Table, puis Execute Command 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Connexion JDBC Connexion à la BD passe par un URL JDBC jdbc:driver:other stuff Paramètres de connexion propres au driver et à la base jdbc:derby://localhost:1527/Dictionnaire Driver Port DB Server DataBase 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Connexion JDBC Connexion à travers la classe DriverManager Chargement dynamique du driver Entrée des paramètres Création de la connexion  classe Connection Class.forName(driver); Connection conn = DriverManager.getConnection(bdd, login, pass); //on peut lire ces informations sur des proprietes String driver = "org.apache.derby.jdbc.ClientDriver"; String bdd = "jdbc:derby://localhost:1527/Dictionnaire"; String login = "dico"; String pass = "dico"; Connection conn = null; try { //Charge le pilote Class.forName(driver); //Crée la connection conn = DriverManager.getConnection(bdd, login, pass); . . . } catch (ClassNotFoundException cnfe) { . . . } } catch (SQLException sqle) { . . . } 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Connexion JDBC Toute connexion ouverte doit être fermée ! conn.close () Usage de la clause finally est suggérée try { Class.forName(driver); conn = DriverManager.getConnection(bdd, login, pass); . . . } catch (ClassNotFoundException cnfe) { . . . } } catch (SQLException sqle) { . . . } } finally { if (conn != null) conn.close(); } 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Connexion JDBC Sous NetBeans, on peut obtenir les paramètres de connexion Onglet Services, Database connection, puis Proprieties 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Connexion JDBC On ajout le jar (Library) à notre projet On doit garantir que le .jar correspondant au driver est accessible Classpath Projet On vérifie si le driver est disponible dans la plateforme. On l’ajoute si nécessaire 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Manipulation BD La manipulation de la base de données se fait à travers la classe Statement Statement statement =conn.getStatement() Une query SELECT ResultSet rs = statement.executeQuery (sql) Un update (INSERT, UPDATE…) int rs = statement.executeUpdate (sql) Générique boolean rs = statement.execute (sql) 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Manipulation BD Les résultats d’une requête SELECT sont accessibles par un ResultSet resultSet.next() : avance sur l’ensemble des n-uplets getString (colName) / getString(n) : récupère la valeur sur la colonne ‘colName’ ou la n-ème colonne Autres types de données getInt, getFloat, getByte, getDate, getObject… String sql = "SELECT * FROM TABLE"; try { Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { String col = rs.getString("Colonne"); . . . } } catch (SQLException ex) { . . . } 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Manipulation BD L’exécution d’une requête INSERT, UPDATE, DELETE… indique le nombre de lignes (n-uplets) affectées int rs = statement.executeUpdate (sql) String pattern = "INSERT INTO TABLE (Col1, Col2…) VALUES (val1, val2… )"; try { Statement stat = conn.createStatement(); rows = stat.executeUpdate(sql); . . . } catch (SQLException ex) { . . . } 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Base de données Dictionnaire sous Apache Derby Table FR (Id, Word) int id String (VarChar) Word 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Classe DicoBase : connexion et accès à la BD Connexion Déconnexion 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Classe DicoBase : connexion et accès à la BD Select Select 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Classe DicoBase : connexion et accès à la BD Insert 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple Classe Main 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Déploiement des applications Une fois l’application terminée, elle doit être déployée chez le client Le déploiement doit être le plus facile et pratique possible Méthodes : Usage des fichier Jar Usage des ressources 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Fichiers Jar Les fichiers .jar permettent le déploiement sur un fichier unique Fichier Jar Compression Zip Structure répertoire Fichier class Ressources : audio, images, textes Librairies Manifeste Description du contenu du Jar 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Commande jar Format général : jar cvf JarFile.jar file1 file2 … jar cvf JarFile.jar dir Options : m manifeste t affiche la table de matières u met à jour le Jar jar -cf JarFileName.jar -m manifest.mf . . . 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple jar cvf ihmexamples.jar ihmexamples Resources*.properties jar tvf ihmexamples.jar 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Manifeste Manifeste décrit les caractéristiques du .jar MANIEST.MF META-INF/MANIFEST.MF Entrées sur la forme « header: value » Manifest-Version: 1.0 Main-Class:  ClassePrincipale Class-Path:  dir-name/lib1.jar dir-name/lib2.jar Name: aPackage Specification-Title: PackageTitle Specification-Version: 1.2 Implementation-Title: myappli.mypackage Implementation-Vendor: MyCompany 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple META-INF\MANIFEST.MF Manifest-Version: 1.0 Main-Class: ihmexamples.tempconverter.converterswing.TempConverterSwingGUIv2 Name: ihmexamples/tempconverter Specification-Title: TemperatureConverter Specification-Version: 1.2 Specification-Vendor: Kirsch, co Implementation-Title: ihmexamples.tempconverter Implementation-Version: build57 Implementation-Vendor: Kirsch, co Attention à tous les détails !! Pas d’espace en trop, pas de tabulation 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Exemple jar mcf META-INF\MANIFEST.MF ihmexamples.jar ihmexamples Resources*.properties 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr Jar exécutable Exécution d’un jar Header « Main-Class » dans le MANIFEST.MF java -jar ihmexamples.jar ihmexamples.tempconverter.converterswing.TempConverterSwingGUIv2 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr

Exercices

Exercices (Optionnel) Créer une base de données Dictionnaire Implémenter une application permettant l’insertion des nouveaux mots dans le dictionnaire Modèle MVC Vue : interface utilisateur indépendante Contrôle : gestion interaction, écouteur modèle Modèle : facade pour l’accès à la BD, événements newWord Jeu de scrabble (optionnel) : Intégration de la BD au jeu 05/05/2019 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr