Projet Programmation orientée objet (POO)

  • View
    30

  • Download
    2

Embed Size (px)

DESCRIPTION

Université Antonine 2010 - 2011. Projet Programmation orientée objet (POO). Plan détaillé. Initiation Java Interfaces Graphiques Awt Swing Evénements ActionListener MouseListener Etc. Rappel sur les notions de POO Application Client - Serveur Base de données - PowerPoint PPT Presentation

Text of Projet Programmation orientée objet (POO)

Base de Donnes

Projet Programmation oriente objet (POO)Universit Antonine 2010 - 2011

1Plan dtaill Initiation JavaInterfaces GraphiquesAwtSwingEvnementsActionListenerMouseListenerEtc.Rappel sur les notions de POOApplication Client - Serveur Base de donnes Threading et Gestion du Graphisme

Plan dtaill Initiation C#Interface GraphiqueManipulation FichiersEditeur de TexteRseaux et Sockets Serveur ChatConnaissances Acquises Elaborer une bonne dmarche scientifique ncessaire pour le dveloppement dune application

Intgrer les interfaces de programmation ncessaires lapplication en question.

Dvelopper des applications dotes dinterfaces graphiques et/ou de communication (client/serveur).Connaissances Requises Des notions de bases en

Algorithmique L3G

Algorithme OOInitiation Java Introduction Java Orient objetJava ne permet d'utiliser que des objets (hors les types de base)

Sr

Seul le bytecode est transmis, et vrifi par linterprteurLe code source est prserv

7Caractristiques du langage Java SimpleApprentissage facile faible nombre de mots-clssimplifications des fonctionnalits essentiellesDveloppeurs oprationnels rapidement

FamilierSyntaxe proche de celle de C/C++8Caractristiques du langage Java FiableGestion automatique de la mmoire(ramasse-miette ou "garbage collector")Gestion des exceptionsSources d'erreurs limitestypage fort, (le type est impos)pas d'hritage multiple,pas de manipulations de pointeurs, etc.Vrifications faites par le compilateur facilitant une plus grande rigueur du codeVrification des types, des constructeurs des classes, 9Java, un langage InterprtJava est un langage interprtLa compilation d'un programme Java cre du pseudo-code portable : le "byte-code"Sur n'importe quelle plate-forme, une machine virtuelle Java peut interprter le pseudo-code afin qu'il soit excutLes machines virtuelles Java peuvent tre des interprteurs de byte-code indpendants (pour excuter les programmes Java)contenues au sein d'un navigateur(pour excuter des applets Java)1011

Fichier C(.c)Compilateur C

Codeexecutablelangage Compil1112

Fichier Java(.java)Compilateur Javac

bytecode(.class)Machine Virtuelle javaCodeexecutablelangage interprt 1213LAPI de JavaJava fournit de nombreuses librairies de classes remplissant des fonctionnalits trs diverses : c'est l'API Java Ces classes sont regroupes, par catgories, en paquetages (ou "packages")Swing Java2DJava3DJAAS (Java Authentication and Authorization Service)Java Security FrameworkEtc.Interface Graphique en JAVAAPIs correspondantesAWT Utilise des composants du systmes Swing (Sun Microsystems)Composants entirement dessins en Java SWT (Standard Widget Toolkit)Initialement dveloppe par IBMMaintenu par Eclipse foundationUne librairie graphiqueUtilise les composants du systme dexploitation( comme le dll WinApi,..)Elle est plus riche que AWT/Swing

SWING

Les Fentres JWindowConteneur que vous pouvez afficher sur votre cranJframeFentre destine tre la fentre principale de votre applicationJDialogFentre destine aux botes de dialogueLancer un message davertissementEntrer les donnesNote the JoptionPane example(JavaApplication1/JButton7)

. showConfirmDialog. showMessageDialog. showInputDialog. showOptionDialogJFrameimport javax.swing.JFrame;

public class SimpleFenetre extends JFrame{

public SimpleFenetre(){super();build();//On initialise notre fentre}

private void build(){setTitle("Ma premire fentre"); //On donne un titre l'applicationsetSize(320,240); //On donne une taille notre fentresetLocationRelativeTo(null); //On centre la fentre sur l'cransetResizable(false); //On interdit la redimensionnement de la fentresetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit l'application de se fermer lors du clic sur la croix}}Les Fentres JDialogFentre destine aux botes de dialogue. showConfirmDialog int rep=jOptionPane1.showConfirmDialog(this, "Cont O/N:Presss Escape or Close for Cancel", "My_title", jOptionPane1.CLOSED_OPTION);

//0 si OK, -1 si ESCAPE or CLOSE

System.out.println("reponse="+rep);

Les Fentres JDialogFentre destine aux botes de dialogue. showMessageDialog

jOptionPane1.showMessageDialog(this, "Eggs are not supposed to be green.", "Inane warning", jOptionPane1.WARNING_MESSAGE);

Les Fentres JDialogFentre destine aux botes de dialogue. showOptionDialog

Object[] options = {"Yes, please", "No, thanks", "No eggs, no ham!"};

int n = jOptionPane1.showOptionDialog(this, "Would you like some green eggs to go + "with that ham?", "A Silly Question", jOptionPane1.YES_NO_CANCEL_OPTION, jOptionPane1.QUESTION_MESSAGE, null, options, options[2]); System.out.println("n=" + n + "!");

Les Fentres JDialogFentre destine aux botes de dialogue. showInputDialog

Object[] possibilities = {"ham", "spam", "yam"}; //possibilities=null;

String s = (String)jOptionPane1.showInputDialog( this, "Complete the sentence:\n + "\"Green eggs and...\"", "Customized Dialog", jOptionPane1.WARNING_MESSAGE, null, possibilities, "ham");

//If a string was returnedif ((s != null) && (s.length() > 0)) { System.out.println("Green eggs and... " + s + "!");}

Positionnement des composantsLes LayoutsBorderLayout GridLayoutFlowLayout CardLayout BoxlayoutEtc.

BorderLayoutDivise ses composants en 5 rgions : nord, sud, ouest, est, et centre. "nord" et "sud" occupent toute la largeur de la partie rserve nord ou sud,"ouest" et "est" occupent toute la hauteur qui reste de la partie rserve ouest et est,Centre" occupe la place restante. BorderLayoutDemo: JavaApplication1\NewJFrame1

BorderLayout main_layout=new BorderLayout(5,5);

this.setLayout(main_layout);(this=mainFrame)

Panel p1=new Panel();this.add(p1, BorderLayout._____) north, center, south, west, east)p1.setLayout( A layout for p1)

GridLayoutComposants sur une grille, ligne par ligne (dans l'ordre d'adjonction),Les cellules ont la mme taille, la retaille, les cellules se taillent,hgap et vgap sont nuls par dfaut.Demo:JavaApplication1\NewJFrameFrameGridLayout 5 lignes 0 colonneJpanels dans JframeJpanels GridLayout2 lignes 0 colonneGridLayout(int lignes, int cols, int hgap, int vgap)GridLayout(int lignes, int cols)

FlowLayoutFlowLayout est le gestionnaire par dfaut des Panel. Affiche les composants de la gauche vers la droite, et passe la ligne s'il n'y a plus de place.FlowLayout(int align, int hgap, int vgap)FlowLayout(int align)FlowLayout()e.g.FlowLayout fl=new FlowLayout(FlowLayout.center,0,2)FlowLayout

CardLayout

CardLayout

BoxLayout

BoxLayout

BoxLayout

BoxLayout

BoxLayout

BoxLayout

public class Frame1 extends JFrame{ public Frame1() { super(); this.setTitle("Ma premiere application"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null);

BorderLayout bLayout= new BorderLayout(); this.getContentPane().setLayout(bLayout); JPanel buttonsPanel = new JPanel(); JPanel textPanel = new JPanel(); JLabel label = new JLabel("Nom: "); JTextField textField = new JTextField(20); JButton btok = new JButton("ok"); textPanel.add(label); textPanel.add(textField); buttonsPanel.add(btok);

this.getContentPane().add(buttonsPanel, BorderLayout.SOUTH); this.getContentPane().add(textPanel, BorderLayout.CENTER); this.pack(); this.setVisible(true); }}

La mthode main public static void main (String args[]) {

Frame1 frame = new Frame1(); } Exercice Dveloppez le code qui permet dafficher la fentre suivante

Java et Evnements Que se passe-t-il lors d'un clic ?En java, un clic gnre un vnement (Un objet)

import javax.swing.*;

public class FenetreAvecBouton extends JFrame {

private JButton unBouton;private Jpanel pane = new JPanel ();

public FenetreAvecBouton (){JButton unBouton = new JButton("Quitter");pane.add (unBouton);setContentPane(pane);//or this.getContentPane().add(pane);}

public static void main (String args []) {new FenetreAvecBouton().setVisible (true);}}

16-43Eventspublic class GoHandler implements ActionListener{ ... public void actionPerformed (ActionEvent e) { ... }} ... JButton go = new JButton (Go); go.addActionListener (new GoHandler ());

Create the Listener:Objects of this class are GoHandlers but also ActionListenersRegister the Listener:This method expects an ActionListener object (GoHandler)This method is called automatically when the button is clicked43ActionListener specifies one method:

void actionPerformed(ActionEvent e);EventsL'objet vnement de Java est un objet de type EventObject

Tout objet de type EventObject a un attribut source qui peut tre rcupr en utilisant la fonction getSource() de la class EventObject

Hirarchie des vnements

Qui cre ce type d'objet ?Un Thread (comme le EventDispatchingThread) dans JVM permet de rcuprer les interactions de lutilisateur avec lapplication Si on clique sur un composant, ce thread cre un vnement relatif laction ralise en utilisant le composant comme source de lvnementEnsuite il appel le handler correspondant ce composantCependant, on ne cre pas les v