Vous êtes sur la page 1sur 26

IHM

IHM ( Interface Homme Machine)


Par : Prof Y.ZOUANI
LOGO

MVC

LOGO

MVC

La couche View (Swing, JSP ..) est compose des diffrents objets graphiques de lapplication, elle sintresse linteraction avec lutilisateur final.

La couche Controler (Servlet) reprsente 6 tapes :


1- rcupration des paramtres; 2- vrification des paramtres (gnralement une vrification syntaxique) 3- instanciation du bean (et ventuellement linvocation des setters) 4- instanciation et invocation du service 5-dispatching (ou forwarding)

La couche Service (Java et Spring pour linjection de dpendance) est


compose des services mtiers (non crud mthodes)
*

LOGO

MVC

La couche Dao (TopLink, Hibernate, SpringORM ): cette couche reprsente le processus dORM (Object Relationel Mapping) et lintraction avec la BD. Elle permet lindcence par rapport au diteur du SGBD (via JDBC) .

La couche Web Service sintresse grer lindpendance de la couche


model par rapport au client.

NB : cette structure de couche affecte la structure du diagramme de package de votre projet (voir TP 1)

www.themegallery.c LOGO

MVC : Couche DAO


Le problme dhrtroginit entre le monde relationnel et le monde OO peut tre dnouer en utilisant lune des deux dmarche:

1- le ORM : faire la correspondance (pont) entre le monde OO et relationnel en proposant des rgles de transition

2-pencher vers des SGBD OO (mais a touche le standard SQL)

www.themegallery.c LOGO

MVC : Couche DAO

La couche Dao rgle plusieurs problmes, en fait : 1- le code SQL est inject dans le code source JAVA ce qui pose un problme immense de changement du SGBD (un code SQL de Oracle ne marche pas ncessairement sur MySQL!!) 2-le monde relationnel et le monde OO sont deux mondes nettement htrognes (cest quoi lquivalent de lhritage dans le relationnel et cest quoi lquivalent de Primery Key dans le OO )

3-les oprations crud sont trs rptitifs et une seule modification au niveau de la base de donne va affecter directement le code JAVA.

www.themegallery.c LOGO

DAO : TP 1
Le but du TP est :

Faire la correspondance entre le MVC et larchitecture de lapplication. Utiliser les best practice de limplmentation de la couche DAO (surtout le DP Singleton)

Manipuler lAPI JDBC.

www.themegallery.c LOGO

DAO : Hibernate
Hibernate est le Framwork de ORM le plus connu et le plus utilis. Il sagit dun Framwork open source et non payant (Licence GNU LGPL de Red Hat). Trois interface constitue hibernate core : Session, Query et Transaction. Hibernate propose un langage des requtes spcialement ddi au monde OO (HQL) Hibernate utilise JDBC comme une couche infrieure. Hibernate utilise des fichier XML pour expliciter le mapping objet-ralationel (contrairement au mapping implicite pour lAPI JDBC)

www.themegallery.c LOGO

DAO : Hibernate
Pour Hibernate il faut distinguer le fichier Hibernate.cfg.xml et les fichiers *.hbm.xml
Le fichier Hibernate.cfg.xml contient des configurations gnrales telles que: URL, Login, Password, Pool, lemplacement des fichiers hbm.xml Les fichiers *.hbm.xml contient le mapping entre les class Java et les tables de la BD. NB: Hibernate nexige pas des beans (surtout limplmentation de linterface java.io.Serializable) mais cette pratique est trs utile dans le contexte rseau: RMI, EJB, CORBA, WS)

www.themegallery.c LOGO

DAO : Hritage
Pour mapper une table une class trois possibilits sont disponibles :

Table per concrete class: seules les classes filles seront reprsentes par une table Table per class hierarchy : la hirarchie dhritage sera prsente par une seule table, pour faire la distinction il nous faut une colonne discriminator Table per Subclass : chaque class sera reprsente par une table.

www.themegallery.c LOGO

DAO : Hibernate TP
Le but du TP 2 est :

Peaufiner lutilisation de JDBC.


Configurer le Framwork Hibernate Travailler avec les mthodes prdfinies de Hibernate Travailler avec le langage HQL.

Appliquer la gnricit sur le Framwork Hibernate pour viter la redondance du code (et sapprocher de JPA).

www.themegallery.c LOGO

Swing : Introduction
java.awt : (awt : abstract window toolkit, java1.1 ) bas niveau. Anciens composants, dits composants lourds.

javax.swing : java 1.2. Composants lgers = pas de code natif (crits entirement en java).

La librairie Swing a t dveloppe en partie pour corriger certains inconvnients tels que celui pos par la technologie prcdente (AWT).

Tous les composants Swing sont construit au-dessus des bibliothques de base AWT.

www.themegallery.c LOGO

SWING : JFRAME
La JFrame est un objet qui reprsente un Window. Pour pouvoir afficher une JFrame on procde comme de suit :
JFrame fenetre = new JFrame(); // lobjet Jframe est par dfaut invisible

fenetre.setVisible(true);

Plusieurs methodes sont disponibles pour modifier les proprits dune JFrame :
fenetre.setTitle( titre de la fentre "); fenetre.setSize(400, 500); fenetre.setLocationRelativeTo(null); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

LOGO

SWING : JFRAME
Une JFrame est dcoupe en plusieurs parties : ContentPane ; c'est dans celui-ci que nous mettrons nos composants, MenuBar, la barre de menu sil existe

Pour pouvoir utilis un JPanel soit on instance directement un JPanel soit on accde au Panel de notre JFrame via la mthode getContentPane() : JPanel pan = new JPanel(); fen.setContentPane(pan); fen.getContentPane().add(new Jbutton()) ;

LOGO

SWING : JBUTTON
Les composants de Swing sont des source-event composants. Les source-event composants un bouton par exemple crent un objet de type event ds quune action associe est dclenche.

On distingue donc troix composants : le Listner, lobjet event-source et lobjet. event. Lobjet event contient des informations sur la source de l'vnement.

LOGO

SWING : JCOMBOBOX
Un comboBox sert exprimer une relation de choix unique. Pour ajouter une option la liste, il suffit dutiliser la mthode addItem(Object obj).

Pour ajouter tous les lments d'un seul coup, lobjet JComboBox un constructeur JComboBox (String[] tab).

Pour dtecter un changement dtat dun JComboBox il faut implmenter linterface ItemListener et redfinir la mthode itemStateChanged(ItemEvent e), on pourra aussi implmenter linterface ActionListener et rdifinir la mthode actionPerformed(ActionEvent e).

LOGO

SWING : JCHECKBOX
Un JCheckBox sert exprimer une relation de choix multiple. Pour crer un objet de type JCheckBox : JCheckBox check1 = new JCheckBox("Case 1");.

On peut cocher la case en appelant la mthode setSelected(true).

Pour dtecter un changement dtat dun JCheckBox il faut implmenter linterface ActionListener et rdifinir la mthode actionPerformed(ActionEvent e).

LOGO

SWING : JTEXTFIELD
Un JTextField est une zone texte, la cration dun objet JTextField comme de suit : JTextField jtf = new JTextField("Valeur par dfaut");

On peut modifier la valeur dune zone de texte on utilisant la mthode setText(String str).

On peut lire la valeur dune zone de texte on utilisant la mthode String getText().

LOGO

SWING : JFORMATTEDTEXTFIELD
Par fois on a besoin de texte qui correspond un format bien dtermin tel que : la date, numro de tlphone .. Le JFormattedTextField est une zone de texte qui respecte un format prcis.

Pour crer un JFormattedTextField on doit tout dabord crer un mask on utilisant le MaskFormatter comme de suit : MaskFormatter tel = new MaskFormatter("## ## ## ## ##"); La cration du JFormattedTextField se fait comme de suit : JFormattedTextField jtf = new JFormattedTextField (maskObject)

LOGO

SWING : JOPTIONPANE
Les boites de dialogues sont exprims par un objet JOptionPane Trois types du boite de dialogue : Bote du message d'information, Bote du message prventif et Bote du message d'erreur.

Pour afficher la boite dialogue on utilise la mthode showMessageDialog comme de suit : showMessageDialog(Component parentComponent, String message, String title, int messageType); Il existe une autres mthodes showMessageDialog() qui prend une icne comme paramtre.

LOGO

SWING : JMENU
Pour utiliser les menus on aura besoin de l'objets JMenu qui reprsente un titre global d'un point de menu et l'objets JMenuItem qui est un lment composant de nos menus.

Trois types du boite de dialogue : Bote du message d'information, Bote du message prventif et Bote du message d'erreur.

Pour afficher la boite dialogue on utilise la mthode showMessageDialog comme de suit : showMessageDialog(Component parentComponent, String message, String title, int messageType); Il existe une autres mthodes showMessageDialog() qui prend une icne comme paramtre.

LOGO

SWING : JTABLE
JTable un composant Swing complexe pour prsenter et diter des donnes sous forme de table.

Pour crer un Jtable de contenu static on procde comme suivant : Object[][] data = { {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false)}, {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)}, {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)}, {"Mark", "Andrews", "Speed reading", new Integer(20), new Boolean(true)}, {"Angela", "Lih", "Teaching high school", new Integer(4), new Boolean(false)} };
String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"}; JTable table = new JTable(data, columnNames);
*

LOGO

SWING : JTABLE
Pour rcuprer la valeur slctionne il suffit dinvoquer la mthode model.getValueAt(jTable.getSelectedRow(),model.getValueAt(jTable. getSele ctedColumn()) .

Pour rcuprer la ligne slctionne il suffit dinvoquer :


for(int i=0; i<jTable.getColumnCount(); i++){ model.getValueAt(jTable.getSelectedRow(),i) }

LOGO

SWING : JTABLE
Le composant JTable est un visualisateur qui prend les donnes afficher dans un modle qui implmente linterface TableModel, ou qui drive de la classe abstraite AbstractTableModel (javax.swing.table.AbstractTableModel).

La classe AbstractTableModel implmente les mthodes de TableModel sauf : public Object getValueAt(intligne, int colonne) : l'objet l'intersection de ligne et colonne. public int getColumnCount() : le nombre de colonnes. public int getRowCount() : le nombre de lignes.

LOGO

SWING : JTABLE
La classe JTable coute les vnements en provenance de son modle. Le modle a plusieurs mthodes pour signaler une modification des donnes : fireTableDataChanged() : les donnes du modles ont t modifies : soit les donnes elle-mme soit le nombre de lignes. fireTableStructureChanged() : le nombre de colonnes, le nom ou le type des colonnes a chang fireTableRowsInserted(int d, int f) : des lignes ont t insres entre d et f. fireTableRowsUpdated(int d, int f) : des lignes entre d et f ont t mises jour fireTableRowsDeleted(int d, int f) : les lignes entre d et f ont t supprimes. fireTableCellUpdated(int l, int c) : la valeur de la cellule (l, c) a t modifie. fireTableChangedEvent(TableModelEvent e) : transmet l'vnement e tous les TableModelListener qui se sont enregistrs comme auditeur de ce modle.

LOGO

REMERCIEMENT

Merci Pour Votre Attention


*

LOGO

Vous aimerez peut-être aussi