Programmagon Orienté Objet -‐ Transparents

publicité
Programma'on Orienté Objet -­‐ Transparents supplémentaires -­‐ Goran Frehse UJF -­‐ UFR IM2AG 2014 Espaces de Nom (namespace) • espace de nom = répertoire pour un ensemble d’iden'fiants • permet de dis'nguer un même iden'fiant dans plusieurs contextes (par exemple, bibliothèques) – UBLAS.matrice et LAPACK.matrice • de même manière, protège un iden'fiant contre la pollu'on par les iden'fiants définis ailleurs (venant de bibliothèques) Package • moyen de Java d’organiser des classes avec – un espaces de nom commun – des droits d’accès privilégiés • nommage hiérarchique avec « . » – exemple : fr.monentreprise.monprojet – a_en'on : pas de lien formel entre les sous-­‐package – conseillé d’u'liser la même structure pour les fichiers (package => répertoire); le compilateur y cherche les fichiers par défaut Package • noyau de Java : – java.lang (classes de base) – java.u'l (collec'ons) – java.io (fichiers) – java.math (arithmé'que) – java.net (réseau) – java.awt (graphique) – … U'lisa'on de package • définir le package dans la première ligne du programme – package java.awt.event;
• u'liser ces classes dans un autre package avec import – import java.awt.event.*;
• pour importer une classe spécifique – import java.awt.event.ActionEvent;
…
ActionEvent a = new ActionEvent();
• u'lisa'on sans import avec nom complèt du package – java.awt.event.ActionEvent a = new
java.awt.event.ActionEvent(); Niveaux d’Accès Modifier Class Package Subclass Subclass World (same package) (other package) public ok ok ok ok ok protected ok ok ok ok no (unspecified) = package-­‐private ok ok ok no no private ok no no no no Niveaux d’Accès -­‐ Conseils • pour les membres, u'liser le niveau d’accès le plus restric've possible (normalement private) – ques'on : à qui faut-­‐il donner accès ? • éviter des champs publiques – viola'on de l’encapsula'on – u'lisé dans exemples seulement pour simplicité Programma'on Graphique -­‐ Swing -­‐ Event Event Type Event Listener Interface Bu_on click, menu selec'on, text field entry Ac.onEvent Ac.onListener Resizing, moving, showing or hiding a component ComponentEvent ComponentListener Mouse press, mouse release, mouse click, mouse enter, mouse exit MouseEvent MouseListener Mouse move, mouse drag MouseEvent MouseMo.onListener Key press, key release KeyEvent KeyListener Gain keyboard focus, lose keyboard focus FocusEvent FocusListener Window closing, window iconified, window deiconified WindowEvent WindowListener Scrolling AdjustmentEvent AdjustmentListener Item selec'on e.g. checkbox, list item ItemEvent ItemListener Return key pressed TextEvent TextListener Adding/removing a component to/from a container ContainerEvent ContainerListener WindowListener import javax.swing.*; import java.awt.event.*; public class Main { public sta'c void main(String[] args) { JFrame frame = new JFrame("Main window"); frame.setSize(400,400); frame.setVisible(true); WindowListener listener = new MyWindowListener(); frame.addWindowListener(listener); } } WindowListener class MyWindowListener implements WindowListener { public void windowClosing(WindowEvent e) { System.out.println("Termina'ng the program now."); System.exit(0); } public void windowClosed(WindowEvent e) {} public void windowOpened(WindowEvent e) {} public void windowAc'vated(WindowEvent e) {} public void windowDeac'vated(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} } Exercise: Implement using anonymous classes Exemple import javax.swing.*; import java.awt.event.*; public class Main { public sta'c void main(String[] args) { JFrame frame = new JFrame("Main window"); frame.setSize(400,400); JBu_on bu_on = new JBu_on("Click me"); frame.getContentPane().add(bu_on); bu_on.addAc'onListener(new Ac'onListener() { public void ac'onPerformed(Ac'onEvent e) { // Only one method to implement. System.out.println(e.getAc'onCommand()); // Prints out "Click me". } }); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true); } } TabbedPane public class TabbedPaneDemo extends JPanel { public TabbedPaneDemo() { super(new GridLayout(1, 1)); JTabbedPane tabbedPane = new JTabbedPane(); ImageIcon icon = createImageIcon("images/middle.gif"); JComponent panel1 = makeTextPanel("Panel #1"); tabbedPane.addTab("Tab 1", icon, panel1, "Does nothing"); tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); JComponent panel2 = makeTextPanel("Panel #2"); tabbedPane.addTab("Tab 2", icon, panel2, "Does twice as much nothing"); tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); JComponent panel3 = makeTextPanel("Panel #3"); tabbedPane.addTab("Tab 3", icon, panel3, "S'll does nothing"); tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); JComponent panel4 = makeTextPanel("Panel #4 (has a preferred size of 410 x 50)."); panel4.setPreferredSize(new Dimension(410, 50)); tabbedPane.addTab("Tab 4", icon, panel4, "Does nothing at all"); tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); add(tabbedPane); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); } 
Téléchargement