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
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
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).
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
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.
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)
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.