2.86k likes | 3.38k Views
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
E N D
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 • Threading et Gestion du Graphisme
Plan détaillé • Initiation C# • Interface Graphique • Manipulation Fichiers • Editeur de Texte • Réseaux et Sockets • Serveur Chat
Connaissances Acquises • Elaborer une bonne démarche scientifique nécessaire pour le développement d’une application • Intégrer les interfaces de programmation nécessaires à l’application en question. • Développer des applications dotées d’interfaces graphiques et/ou de communication (client/serveur).
Connaissances Requises • Des notions de bases en • Algorithmique L3G • Algorithme OO
Introduction Java • Orienté objet • Java ne permet d'utiliser que des objets (hors les types de base) • Sûr • Seul le bytecode est transmis, et «vérifié» par l’interpréteur • Le code source est préservé
Caractéristiques du langage Java • Simple • Apprentissage facile • faible nombre de mots-clés • simplifications des fonctionnalités essentielles • Développeurs opérationnels rapidement • Familier • Syntaxe proche de celle de C/C++
Caractéristiques du langage Java • Fiable • Gestion automatique de la mémoire(ramasse-miette ou "garbagecollector") • Gestion des exceptions • Sources d'erreurs limitées • typage fort, (le type est imposé) • pas d'héritage multiple, • pas de manipulations de pointeurs, etc. • Vérifications faites par le compilateur facilitant une plus grande rigueur du code • Vérification des types, des constructeurs des classes, …
Java, un langage Interprété • Java est un langage interprété • La compilation d'un programme Java crée du pseudo-code portable : le "byte-code" • Sur n'importe quelle plate-forme, une machine virtuelle Java peut interpréter le pseudo-code afin qu'il soit exécuté • Les machines virtuelles Java peuvent être • des interpréteurs de byte-code indépendants (pour exécuter les programmes Java) • contenues au sein d'un navigateur(pour exécuter des applets Java)
langage Compilé Compilateur C Fichier C (.c) Code executable
langage interprété Compilateur Javac Fichier Java (.java) bytecode(.class) Machine Virtuelle java Code executable
L’API de Java • Java fournit de nombreuses librairies de classes remplissant des fonctionnalités très diverses : c'est l'API Java • Ces classes sont regroupées, par catégories, en paquetages (ou "packages") • Swing • Java2D • Java3D • JAAS (Java Authentication and Authorization Service) • Java Security Framework • Etc.
APIs correspondantes • AWT • Utilise des composants du systèmes • Swing (Sun Microsystems) • Composants entièrement dessinés en Java • SWT (Standard WidgetToolkit) • Initialement développée par IBM • Maintenu par Eclipse foundation • Une librairie graphique • Utilise les composants du système d’exploitation( comme le dll WinApi,..) • Elle est plus riche que AWT/Swing
Les Fenêtres • JWindow • Conteneur que vous pouvez afficher sur votre écran • Jframe • Fenêtre destinée à être la fenêtre principale de votre application • JDialog • Fenêtre destinée aux boîtes de dialogue • Lancer un message d’avertissement • Entrer les données • Note the JoptionPaneexample(JavaApplication1/JButton7) • . showConfirmDialog • . showMessageDialog • . showInputDialog • . showOptionDialog
JFrame import javax.swing.JFrame; public class SimpleFenetre extends JFrame{ public SimpleFenetre(){ super(); build();//On initialise notre fenêtre } privatevoidbuild(){ setTitle("Ma première fenêtre"); //On donne un titre à l'application setSize(320,240); //On donne une taille à notre fenêtre setLocationRelativeTo(null); //On centre la fenêtre sur l'écran setResizable(false); //On interdit la redimensionnement de la fenêtre setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix } }
Les Fenêtres • JDialog • Fenêtre destinée aux boîtes de dialogue • . showConfirmDialog • intrep=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 Fenêtres • JDialog • Fenêtre destinée aux boîtes de dialogue • . showMessageDialog • jOptionPane1.showMessageDialog(this, • "Eggs are not supposed to be green.", • "Inane warning", • jOptionPane1.WARNING_MESSAGE);
Les Fenêtres • JDialog • Fenêtre destinée aux boîtes de dialogue • . showOptionDialog • Object[] options = {"Yes, please", • "No, thanks", • "No eggs, no ham!"}; • int n = jOptionPane1.showOptionDialog(this, • "Wouldyoulikesome green eggs to go « • + "withthatham?", • "A Silly Question", • jOptionPane1.YES_NO_CANCEL_OPTION, • jOptionPane1.QUESTION_MESSAGE, • null, • options, • options[2]); • System.out.println("n=" + n + "!");
Les Fenêtres • JDialog • Fenêtre destinée aux boîtes de dialogue • . showInputDialog • Object[] possibilities = {"ham", "spam", "yam"}; • //possibilities=null; • String s = (String)jOptionPane1.showInputDialog( • this, • "Complete the sentence:\n« • + "\"Green eggs and...\"", • "CustomizedDialog", • jOptionPane1.WARNING_MESSAGE, • null, • possibilities, • "ham"); • //If a string wasreturned • if ((s != null) && (s.length() > 0)) { • System.out.println("Green eggs and... " + s + "!");}
Positionnement des composants • Les Layouts • BorderLayout • GridLayout • FlowLayout • CardLayout • Boxlayout • Etc.
BorderLayout • Divise ses composants en 5 régions : nord, sud, ouest, est, et centre. • "nord" et "sud" occupent toute la largeur de la partie réservée à nord ou sud, • "ouest" et "est" occupent toute la hauteur qui reste de la partie réservée à ouest et est, • Centre" occupe la place restante.
BorderLayout • Demo: JavaApplication1\NewJFrame1
GridLayout • Composants sur une grille, ligne par ligne (dans l'ordre d'adjonction), • Les cellules ont la même taille, • à la retaille, les cellules se taillent, • hgapet vgapsont nuls par défaut. • Demo:JavaApplication1\NewJFrame • FrameGridLayout 5 lignes 0 colonne • Jpanels dans Jframe • Jpanels GridLayout 2 lignes 0 colonne GridLayout(intlignes, int cols, inthgap, intvgap) GridLayout(intlignes, int cols)
FlowLayout • FlowLayoutest le gestionnaire par défaut 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, inthgap, intvgap) FlowLayout(int align) FlowLayout() e.g. FlowLayout fl=new FlowLayout(FlowLayout.center,0,2)
public class Frame1 extendsJFrame{ public Frame1() { super(); this.setTitle("Ma premiere application"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); BorderLayoutbLayout= new BorderLayout(); this.getContentPane().setLayout(bLayout); JPanelbuttonsPanel= new JPanel(); JPaneltextPanel = new JPanel(); JLabel label = new JLabel("Nom: "); JTextFieldtextField = new JTextField(20); JButtonbtok = 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 méthode main public staticvoid main (String args[]) { Frame1 frame = new Frame1(); }
Exercice • Développez le code qui permet d’afficher la fenêtre suivante
Que se passe-t-il lors d'un clic ? En java, un clic génère un événement (Un objet)
import javax.swing.*; public class FenetreAvecBouton extends JFrame{ privateJButtonunBouton; privateJpanel pane = new JPanel (); public FenetreAvecBouton (){ JButtonunBouton = new JButton("Quitter"); pane.add (unBouton); setContentPane(pane); //or this.getContentPane().add(pane); } public static void main (String args []) { new FenetreAvecBouton().setVisible (true); } }
Events Create the Listener: Objects of this class are GoHandlers but also ActionListeners public class GoHandler implements ActionListener { ... public void actionPerformed (ActionEvent e) { ... } } This method is called automatically when the button is clicked ... JButton go = new JButton (“Go”); go.addActionListener (new GoHandler ()); Register the Listener:This method expects an ActionListener object (GoHandler)
Events • L'objet événement de Java est un objet de type EventObject • Tout objet de type EventObject a un attribut source qui peut être récupéré en utilisant la fonction getSource() de la class EventObject
Qui crée ce type d'objet ? • Un Thread (comme le EventDispatchingThread) dans JVM permet de récupérer les interactions de l’utilisateur avec l’application • Si on clique sur un composant, ce thread crée un événement relatif à l’action réalisée en utilisant le composant comme source de l’événement • Ensuite il appel le « handler » correspondant à ce composant • Cependant, on ne crée pas les événements: on se contente de les gérer • Explication additionnelle
La gestion des événements • Pour pouvoir gérer les événements, il faut les écouter • Tout le principe de la programmation événementielle repose sur la définition des événements et des objets qui les écoutent
Catégories des événements • Pour chaque catégorie d’événements, il existe une interface qui doit être respectée par toute classe souhaitant recevoir cette catégorie événements. • Cette interface exige que toutes les méthodes soient définies. • Ces méthodes sont appelées lorsque des événements particuliers surviennent.