rappels Cours Java - F. Michel Ceux que vous devez connaître et savoir faire Les bases de Java ● La variable d'environnement CLASSPATH ● La notion de package ● créer une javadoc pour différents niveaux ● ● Savoir que le package java.lang est importé par défaut Connaître les méthodes importantes de la classe Object Définir et utiliser un package ● Toute nouvelle classe doit impérativement se trouver dans un package ! Le fichier MonProg.java doit se trouver dans le répertoire prog Écrire le nom d'une classe correctement ● Le nom complet et correct d'une classe/interface s'écrit en donnant l'ensemble des informations : MouseListener java.awt.event.MouseListener java.lang java.lang.Object Les packages/classes utiles ● ● Connaître certaines classes du package java.util : par exemple java.util.ArrayList<E> Les opérations de base java.util java.util Définir et parcourir une liste For each Avec un iterator Rappels sur les listes Le package javax.swing ● ● ● Connaître les composants de base qui se trouvent dans le package javax.swing : JFrame, JPanel, JButton, etc. Connaître les méthodes de base de la classe JFrame : setDefaultCloseOperation, add, setSize, setLocation, setTitle, setVisible, etc. Les différents LayoutManager Les composants swing de base ● Comprendre comment les composants sont agencés les uns avec les autres – Hiérarchie des composants : javax.swing.JFrame Le ContentPane de JFrame Le composant de base : JPanel La mise en page des composants ● Les différents LayoutManager – Par défaut le contentPane d'une JFrame est géré par un java.awt.BorderLayout Les différents LayoutManager FlowLayout ● FlowLayout : dispose les composants en ligne les uns après les autres, quand une ligne est pleine les composants suivants sont placés sur la ligne suivante. BorderLayout ● Divise le composant en 4 régions : Center, South, North, West et East. GridLayout ● Définie une grille : les composants sont placés en remplissant successivement chacune des cases de la grille dans l'ordre. Le gestionnaire du contentPane ● Le contentPane d'une JFrame est, par défaut, géré par un BorderLayout Le package java.awt.event ● ● Comprendre le mécanisme de gestion des événements Connaître les classes/interfaces nécessaire à la gestion des événements souris/boutons Principe de base des événements JPanel MouseEvent MouseListener JButton ActionEvent ActionListener Les interfaces de java.awt.event Les classes de java.awt.event Exemple événement bouton Exemple événement souris Les classes internes anonymes Pour un bouton Pour la souris Menus javax.swing. JMenuBar JMenu Barre de menu OBLIGATOIRE Un menu ajout dans la barre ajout de la barre dans la JFrame JMenuItem javax.swing.JMenuItem Écouter les JMenuItems ● ● ● Les JMenuItems sont des boutons ! Pour les écouter, on applique donc le même principe que pour les boutons Il faut donc créer un ActionListener par JMenuItem Écouter les JMenuItems ● Pour les autres composants, on utilise simplement l'interface écouteur qui correspond aux composants (cf. doc !) javax.swing.JOptionPane showMessageDialog JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.", "Message"); Les méthodes de la classe JOptionPane sont statiques java.util.HashMap<K,V> java.util.HashMap<K,V> ● ● ● Tableau associatif (implémenté en table de hachage) Permet d'associer des clés de type K à des valeurs de types V Implémente l'interface java.util.Map exemple Sur la manière dont vous devez écrire vos programmes Programmation objet appel de méthode d'instance instanceObjet . nomMethode ( arguments ); appel de méthode de classe (statiques) NomClasse . nomMethode ( arguments ); Javadoc : obligatoire! Qu'est-ce qu'un bon programme ? ● A première vue, un bon programme – fonctionne suivant le cahier des charges – possède un code optimisé (mémoire + cpu) : ne comporte pas de tests inutiles par exemple. – Traite toutes les exceptions D'un point de vue génie logiciel, Tout ceci est loin d'être suffisant D'un point de vue génie logiciel ● Un bon programme doit être : Facilement réutilisable Facile à maintenir D'un point de vue génie logiciel ● Un bon programme orienté objet : – Bien décomposé : hiérarchie des classes, méthodes courtes (30 lignes, c'est déjà beaucoup) – Bien factorisé : si on fait un traitement particulier plus d'une fois, il faut en faire une méthode. – Niveau de visibilité bien pensé : seules les méthodes destinées à être utilisées par d'autres objets doivent être public. Idem pour les classes. – Bien documenté : maintenance, réutilisation, utilisation par un tiers, intégration dans les ides (javadoc), etc. – Ne réinvente rien : il faut utiliser les librairies existantes au maximum À propos du projet Références croisées : exemple ● ● ● Une TamaFrame doit connaître le tamagoshi qui lui est associé : – Tamagoshi t = new Tamagoshi(name); – TamaFrame tf = new TamaFrame(t): Idem pour le TamaJPanel : – Dans le constructeur de la TamaFrame tf – TamaJPanel tjp = new TamaJPanel(t); Inversement, le tamagoshi peut avoir besoin de connaître son TamaJPanel : – Dans le constructeur du TamaJPanel : – monTama.setTamaPanel(this);