Post on 04-Apr-2015
Jour 2 1
Jour 2
Jour 2 2
Environnement standard
• Commandes de base
• javac (compilateur)
• java (interpréteur)
• appletviewer
Jour 2 3
EnvironnementStandard
• jdb
• javah
• javap (désassembleur de classes)
• javadoc
Jour 2 4
• Compilateur java
• javac options files
• Chaque fichier doit contenir une classe publique
• -d: directory
• -o: pour optimization
javac
Jour 2 5
• interprète et exécute des fichiers .class
• java options classname arguments
• la classes doit contenir une méthode main
• -help: liste des options
• -verify: vérification du bytecode
java
Jour 2 6
• charge des documents HTML
• cherche les tags référençant une applet
• ignore tous les autres tags HTML
• appletviewer options urls
• -debug: avec le jdb
appletviewer
Jour 2 7
• Le débogueur java
• Fonctionne avec l’interpréteur java
• Trouver des parties défectueuses du code
• jdb intoptions
• intoptions: les options de l’interpréteur
jdb
Jour 2 8
• Créer un fichier source C
• javah options classnames
• -d directory: le répertoire de sauvegarde
• -o outpufile: combine l’entête et le code source
javah
Jour 2 9
javap
• imprimer une version lisible du bytecode
• déclaration méthodes, constructeurs, public et default
• javah options classnames
• -c: imprime les instructions de la machine virtuelle
• -l: nb lignes, informations sur variables locales
Jour 2 10
javadoc
• générateur de documentation (HTML)
• classe, interface, hiérarchie, méthodes et variables
• inclus tous les commentaires des codes sources
Jour 2 11
javadoc
• javadoc options packagename
• javadoc options files
• -private: toutes les classes, variables et méthodes
Jour 2 12
Libraries standard
• packages des base
• Les améliorations Java2
• Documentation Java2
Jour 2 13
• java.applet
• java.awt
• java.awt.event
• java.io
• java.lang
Packages de base
Jour 2 14
• java.math
• java.net
• java.text
• java.util
Packages de base
Jour 2 15
java.applet
• Une seule classe: Applet
Objectjava.lang
Componentjava.awt
Containerjava.awt
Paneljava.awt Applet
Jour 2 16
• init (): joue le rôle d’un constructeur
• start (): lancer un thread de l’applet
• stop (): après avoir quitté la page web
• destroy (): après l’arrêt du navigateur
java.applet
Jour 2 17
java.awt
• awt: Abstract Windowing Toolkit
• Tous les aspects graphiques
• Amélioré par swing
Jour 2 18
java.awt (1 of 3)AWTEventMulticaster
CheckboxGroup
Color SystemColor
Cursor
Dimension
Event
EventQueue
Font
FontMetrics
Graphics
Image
Insets
MediaTracker
MenuShortcut
Point
Polygon
PrintJ ob
Rectangle
Toolkit
Objectjava.lang
Jour 2 19
java.awt.Color
• Manipulation de couleurs
• Couleurs prédéfinis:
public final static Color orange;public final static Color pink;public final static Color yellow;
Jour 2 20
java.awt.Color
• Méthodes:
public Color (int r, int g, int b)
public Color getColor ()
public void setColor (Color c)
public int getGreen ()
Jour 2 21
java.awt.Event
• Saisie des événements (clavier, fenêtre ou souris)
• Evénements:
public static final int END = 1001;public static final int PGUP = 1002;public static final int MOUSE_DOWN;
Jour 2 22
java.awt.Event
• Méthodes:
boolean isConsumed(): événement consommé
public boolean shiftDown(): si le shift est pressé
Jour 2 23
java.awt.Graphics
• Classe abstraite pour effectuer des dessins
• Aucune constante n’est prédéfinie
• Toutes les méthodes sont abstraites sauf rectangle
• Méthodes: Dessiner des rectangles
drawRect(int x, int y, int width, int height)
Jour 2 24
java.awt (2 of 3)
List
Scrollbar
TextCompnent
Window
TextArea
TextField
Frame
MenuComponentMenuBar
MenuItemMenu
CheckboxMenuItem
PopupMenuObjectjava.lang
EventObjectjava.util AWTEvent
Throwablejava.lang
Errorjava.lang
Exceptionjava.lang
AWTError
AWTException
RuntimeExceptionjava.lang
RuntimeExceptionjava.lang
IllegalComponentStateException
Button
Canvas
Checkbox
Choice
Container
Label
Panel
Scrollpane
FileDialog
Component
Appletjava.applet
Dialog
Jour 2 25
java.awt.Component
• Classe abstraite
• Tous les composants graphiques y héritent
• Variables:
Color background;
Cursor cursor;
Jour 2 26
java.awt.Component
• Méthodes:
addMouseListener(MouseListener l): la souris
setBackground(Color c): arrière plan
setVisible(boolean b): rendre visible
Jour 2 27
java.awt.Frame
• Dessiner des fenêtres
• Les constantesint DEFAULT_CURSOR=
Cursor.DEFAULT_CURSOR;boolean resizable = true; taille fenêtre;String title = “Untitled”; titre par défaut
Jour 2 28
java.awt.Frame
• Méthodes:
Frame(String title): constructeur
setMenuBar(MenuBar mb): une barre de menu
setTitle(String title): mettre à jour le titre
isResizable(): modifier la taille
Jour 2 29
java.awt.Menu
• Définir les éléments d’un menu
• Variables:Vector items = new Vector(); elts du menu
• Méthodes:Menu(String label): construire un menuadd(MenuItem mi): ajouter un item du menu
Jour 2 30
java.awt.AWTException
• Signale qu’une exception AWT est survenue
• Méthode:
AWTException(String msg):
afficher un message particulier
Jour 2 31
BorderLayout
CardLayout
FlowLayout
GridLayout
GridBagLayout
GridBagConstraints
Objectjava.lang
java.awt (3 of 3)
Jour 2 32
Objectjava.lang
ComponentAdapter
ContainerAdapter
FocusAdapter
KeyAdapter
MouseAdapter
MouseMotionAdaptor
WindowAdaptor
EventObjectjava.util
AWTEventjava.awt
ActionEvent
AdjustmentEvent
ComponentEvent
ItemEvent
TextEvent
ContainerEvent
FocusEvent
InputEvent
PaintEvent
WindowEvent
KeyEvent
MouseEvent
java.awt.event
Jour 2 33
java.awt.event.ActionEvent
• Permet de localiser l’événement
• Constantes:
public static final int ALT_MST // alt
public static final int CTRL_MASK // ctrl
public static final int SHIFT_MASK // shift
Jour 2 34
java.awt.event.MouseEvent
• Saisir un événement de la souris
• Constantes:
public static final int MOUSE_CLICKED
public static final int MOUSE_MOVED
public static final int MOUSE_PRESSED
Jour 2 35
java.awt.event.MouseEvent
• Méthodes:
public int getX() // position X de la souris
public int getY() // positon Y de la souris
private static native void initIDs():
permettre l’accès par des méthodes C
Jour 2 36
java.io
• Les entrées sorties standards
• Les entrées sorties fichiers
Jour 2 37
UnsupportedEncodingException
ByteArrayInputStream
FileInputStream
FilterInputStream
ObjectInputStream
PipedInputStream
SequenceInputStream
StringBufferInputStream
ButeArrayOutputStream
FileOutputStream
FilterOutputStream
PipedOutputSteam
ObjectOutputStream
BufferedOuptutStream
DataOutputStream
PrintStream
BufferedInputStream
DataInputStream
LineNumberInputStream
PushbackInputStream
OutputStream
InputStream
ObjectStreamClass
File
FileDescriptor
RandomAccessFile
StreamTokenizer
Objectjava.lang
Throwablejava.lang
Exceptionjava.lang
FileNotFoundException
InterruptedIOException
ObjectStreamException
SuncFailedException
UTFDataFormatException
CharConversionException
EOFException
IOException
InvalidObjectException
NotActiveException
NotSerializableException
OptionalDataException
StreamCorruptedException
WriteAbortedException
InvalidClassException
java.io (1 of 2)
Jour 2 38
Writer
Reader
Objectjava.lang
BufferedReader
CharArrayReader
FilterReader
InputStreamReader
PipedReader
StringReader
CharArrayWriter
FilterWriter
OutputStreamWriter
PipedWriter
PrintWriter
StringWriter
BufferedWriter
File Writer
PushbackReader
LineNumberReader
FileReader
java.io (2 of 2)
Jour 2 39
java.lang
• Les classes wrapper
• La classe Math
• La classe String
• La classe System
• La classe Thread
Jour 2 40
Boolean
Character
Class
ClassLoader
Compiler
Math
Number
Process
Runtime
SecurityManager
String
StringBuffer
System
Thread
TreadGroup
Void
Object
Byte
Double
Float
Integer
Long
Short
java.lang (1 of 3)
Jour 2 41
java.lang.Math
• Classe finale
• Les fonctions mathématiques standards
• Constantes:E=2.1782818284590452354 // exponentiellePI=3.14159265358979323846 //
Jour 2 42
java.lang.Math
• Méthodes:
cos(double a) // le cosinus d’un nombre
ext(double a) // exponentielle
sqrt(double a) // racine carrée
Jour 2 43
java.lang.Number
• Racine des classes wrapper
• Majorité des méthodes abstraites
• Méthodes:
shortValue() // transformer une valeur en short
intValue() // abstraite
Jour 2 44
java.lang.String
• Classe finale
• Traitement des chaînes des caractères
• Méthodes:
String(char value[ ]) // créer un nouveau string
length() // longueur d’une chaîne de caractère
Jour 2 45
java.lang.String
• Méthodes:
substring(int beginIndex, int endIndex)
compareTo(String anotherString)
replace(char oldChar, char newChar)
Jour 2 46
java.lang.System
• Classe finale
• Des méthodes sur le système
• Constantes:
PrintStream out // pour écritureInputStream in // pour la saisieSecurityManager security // gestion de la sécurité
Jour 2 47
java.lang.System
• Méthodes:
gc() // forcer le garbage collector
setSecurityManager(SecurityManager s)
exit(int status) // quitter
Jour 2 48
java.lang.Thread
• Processus qui tourne continuellement
• Constantes:
MAX_PRIORITY=10 // priorité maximale
NORM_PRIORITY=5 // priorité par défaut
Jour 2 49
java.lang.Thread
• Méthodes:
start() // lancer un thread
sleep (long) // mettre en veille un thread
interrupt() // arrêter un thread
suspend() // suspendre un thread
Jour 2 50
Exception
IllegalAccessException
InstantiationException
InterruptedException
NoSuchMethodException
NoSuchMethodException
RuntimeException
ClassNotFoundException
CloneNotSupportedExceptionTrowable
Object
IllegalArgumentException
IllegalMonitorStateException
IllegalStateException
IndexOutOfBoundsException
NullPointerException
ArrayStoreException
ClassCastException
ArithmeticException
SecurityException
NegativeArraySizeException
IllegalThreadStateException
NumberFormatException
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
java.lang (2 of 3)
Jour 2 51
Error
LinkageError
TreadDeath
VirtualMachineError
Trowable
Object
ClassFormatError
IncompatibleClassChangeError
ExceptionInInitializationError
NoClassDefFoundErrorError
UnsatisfiedError
VerifyError
AbstractMethodError AbstractMethodError
IllegalAccessError
InstantiationError
NoSuchFieldError
NoSuchMethodError
InternalError
OutOfMemoryError
StackOverflowError
UnknownError
java.lang (3 of 3)
Jour 2 52
java.math
• Les wrappers
• BigInteger et BigDecimal
Jour 2 53
BigDecimal
BigInteger
Objectjava.lang
Numberjava.lang
java.math
Jour 2 54
java.net
• La programmation réseau
• La programmation Internet
Jour 2 55
Objectjava.lang
Throwablejava.lang
Exceptionjava.lang
IOExceptionjava.lang
ContentHandler
DatagramPacket
DatagramSocket
DatagramSocketImpl
InetAddress
ServerSocket
Socket
SocketImpl
URL
URLconnection
URLEncoder
URLStreamHandler
MulticastSocket
HttpURLConnection
MalformedURLException
ProtocolException
SocketException
UnknownHostException
UnknownServiceException
BindException
ConnectException
NoRouteToHostException
java.net
Jour 2 56
java.net.ServerSocket
• Accès au réseau
• Méthodes:
ServerSocket(int port) // port spécifique
int getLocalPort() // port local
accept() // accepter une connection
Jour 2 57
java.net.Socket
• Client socket
• Méthodes:
Socket( String host, int port) // nouvelle socket
close() // fermer le socket
int getPort() // avoir le port
Jour 2 58
java.net.HttpURLConnection
• Connection URL
• Constantes:
int HTTP_BAD_GATEWAY = 502
int HTTP_NOT_FOUND = 404
String[ ] methods = { "GET", "POST", "PUT", "HEAD", "OPTIONS", "DELETE", "TRACE" }
Jour 2 59
java.net.HttpURLConnection
• Méthodes:
HttpURLConnection (URL u)
boolean usingProxy() // proxy ou non
void disconnect() // déconnexion
Sting getRequestMethod() // la méthode
Jour 2 60
java.text
• Format textuel
• Format des dates
Jour 2 61
Objectjava.lang
Throwablejava.lang
Exceptionjava.lang
BreakIterator
CollationElementIterator
CollationKey
Collator
DateFormatSymbols
DecimalFormatSymbols
FieldPosition
Format
ParsePosition
StringCharacterIterator
SimpleDateFormat
ChoiceFormat
DecimalFormat
DateFormat
MessageFormat
NumberFormat
ParseException
RuntimeExceptionjava.lang
IllegalArgumentExceptionjava.lang FormatException
RuleBasedCollator
java.text
Jour 2 62
java.text.DateFormatSymbols
• Formatage des dates locales
• Constantes:millisPerHour=60*60*1000 // timezone
• Méthodes:
DateFormatSymbols() // format par défautgetAmPmStrings()getMonths
Jour 2 63
java.text.NumberFormat
• Formatage des nombres
• Constantes:CURRENCYSTYLE=1 // style de format
• Méthodes:
getMaximumFractionDigits()
parse(String text)
Jour 2 64
java.util
• Le package des utilitaires
• Random, Vector, Hashtable, etc.
Jour 2 65
Objectjava.lang
Throwablejava.lang
Exceptionjava.lang
RuntimeExceptionjava.lang
BitSet
Calendar
Date
Dictionary
EventObject
Locale
Observable
Random
ResourceBundle
StringTokenizer
TimeZone
ThreadVector
GregorianCalendar
Hashtable Properties
ListResourceBundle
PropertyResourceBundle
SimpleTimeZone
Stack
EmptyStackException
MissingResourceException
NoSuchElementException
TooManyListnersException
java.util
Jour 2 66
java.util.Hashtable
• Correspondance entre des clés et des valeurs
• Méthodes:
Hashtable() // constructeur
size() // taille
put(Object key, Object value)
Jour 2 67
java.util.Random
• Générer des nombre aléatoires
• Méthodes:
Random() // générer une nouvelle classe
nextBoolean()
Jour 2 68
java.util.Vector
• Méthodes:
Vector(int initialCapacity)
add(int index, Object element)
elementAt(int index)
firstElement()
insertElementAt(Object obj, int index)
Jour 2 69
Amélioration Java2
• JFC (Java Foundation Classes)
• RMI
• Java IDL
• JNI
• JDBC-ODBC
Jour 2 70
JFC
• swing: amélioration de AWT
• Java 2D: outils pour dessins 2D
• Accès: tous les types d’écran
• Drag-and-Drop
Jour 2 71
RMI
• Remote Methode Invocation
• Invocation de méthodes à distance
• Programmation client serveur
Jour 2 72
Client
Stub
Transport
Couche de référencedistante
Serveur
Squelette
Transport
Couche de référencedistante
RMI
Jour 2 73
Java IDL
• Interface Definition Language
• Communication avec d’autres environnements
• C++, SmallTalk, Cobol, etc.
Jour 2 74
C CC++ C++SmallTalk
SmallTalkAda AdaCOBOL COBOLJ ava
IDL IDLIDL IDLIDL IDLIDL IDLIDL IDL
Client Serveur
ORB
J ava
IDL IDL
CORBA
Jour 2 75
JNI
• Java Native Interface
• Avoir un code spécifique à une plate-forme
• Permet de lier d’autres applications (C++)
Jour 2 76
JDBC-ODBC
• Accès aux BD relationnels
• Accès à ODBC par JDBC
• Accès multi-thread
Jour 2 77
Documentation
Jour 2 78
Développement GUI
• Éléments graphiques
• Programmation par événement
• Interfaces événements
• Composantes et containers
• Composantes graphiques
Jour 2 79
Éléments graphiques
• Pièces de l’interface graphique
• Héritage de la classe Component
• Éléments graphiques regroupés dans des containers
• Arrangement: LayoutManager
• Saisie des événements
Jour 2 80
Eléments graphiques
• Label: afficher une zone de texte
• TextArea: afficher des lignes de texte
• List: afficher une liste d’items pour sélection
• PushButton: un bouton d’action
Jour 2 81
Eléments graphiques
• Evénements:
Mouse: les différentes actions de la souris
Key: action au clavier
Window: action sur une fenêtre
Item: la sélection d’un item
Jour 2 82
Programmation par événement
• Différencer le programme en trois parties
Saisir lesévénements
Ajouterlistener
GUI
Listeners
ProgrammeEffets des
événements
Jour 2 83
Interface événements
• Chaque type d’événement: une Interface
• Un événement possède des classes qui l’utilisent
• Exemple:
WindowEvent: WindowMouseEvent: ComponentActionEvent: Button, List, TextField et MenuItem
Jour 2 84
Composantes et containers
• Des ensembles de composantes
• Gérer des composantes et affichage
• Dérivé de la classe Container
• Ils peuvent être attachés à des surfaces graphiques
• Ils peuvent être indépendants (window)
Jour 2 85
Composantes et containers
Component
Applet Frame
Container
Dialog
WindowPanel
Jour 2 86
Composantes et containers
• Container: Non instantiable
• Panel: organiser et grouper des composantes
• Applet: panel sur le navigateur web
Jour 2 87
Composantes et containers
• Window: ne contient ni titre, ni menu, ni bordure
• Frame: une bordure et un titre, supporte les menus
• Dialog: Il traite avec un situation particulère
Jour 2 88
Les composantes graphiques
• Labels
• Text Fields et Text Area
• List
• Scrollbar
• Layout Managers
Jour 2 89
Lables
• Spécifier une ligne de texte dans un GUI
• Classe: Label
• Ne peuvent être sélectionnés par l’utilisateur
• Ne peuvent être modifiés par l’utilisateur
Jour 2 90
Lables
• Label (String label)
• void setText (String label)
• String getText ()
• int getAlignement ()
Jour 2 91
Text Fields et Text Area
• Text Field:
Écrire une ligne de texte
Spécifier si l’user peut modifier ou non
Classe: TextField
TextField (String text)
Jour 2 92
• Text Area:
Ecrire plusieurs lignes
Spécifier la taille
Classe: TextArea
TextArea (String text, int rows, int columns)
Text Fields et Text Area
Jour 2 93
• Méthodes communes:
void setText(String text)
String getText()
Sting getSelectedText()
void setEditable (boolean b)
Text Fields et Text Area
Jour 2 94
List
• Afficher une liste de chaîne à sélectionner
• Un élément de la liste peut être sélectionné par clic
• List (int rows, boolean multipleSelections)
Jour 2 95
• void addItem (String item, int index)
• void setMultipleMode (boolean b)
• String getitem (int index)
• String getSelectedItem ()
List
Jour 2 96
Scrollbar
• Il se crée de lui même ou bien par le contructeur
• Scrollbar (int orientation): orientation (V/H)
• void setUnitIncrement (int increment)
• int getOrientation ()
Jour 2 97
Layout Managers
• Flow Layout
• Grid Layout
• Border Layout
• Card Layout
• Grid Bag Layout
Jour 2 98
Flow Layout
• Par défaut dans un panel ou une applet
• Place les éléments dans l’ordre d’ajout
• Placement de gauche à droite
• FlowLayout (int align)
Jour 2 99
Grid Layout
• Place des composantes dans une grille
• Nombre spécifique de lignes et de colonnes
• GridLayout (int rows, int colums)
Jour 2 100
Border Layout
• Définie cinq emplacements
• NORTH, SOUTH, WEST, EAST, CENTER
• À l’ajout d’un élément: spécifier l’emplacement
• Taille emplacement: dépend de celle du composant
• BorderLayout ()
Jour 2 101
Card Layout
• Afficher un composant à la fois
• Ordonner dans l’ordre d’ajout
• CardLayout ()
• void first (Container cont)
• void show (Container cont, String name)
Jour 2 102
Grid Bag Layout
• Un composant peut avoir plusieurs cellules
• Taille variable des cellules
• Les cellules sont ajoutées au fur et à mesure
• Contraintes pour la composante: GridBagConstaint
Jour 2 103
Outils de développement
• Java Workshop 2.0
• Jbuilder 3.0 de Borland
• Visual Café for Java de Symantec
• Visual Age for Java 2.0 de IBM
Jour 2 104
Java Workshop 2.0
• Éditeur syntaxique
• Débogueur intéractif
• Plusieurs bogues
Jour 2 105
JBuilder 3.0
• Excellent produit
• Très puissant
• Plutôt lent
Jour 2 106
Visual Café for Java 4.0
• Excellent produit
• Rapide
• Facile à utiliser
Jour 2 107
Visual Age for Java 2.0
• Fabriqué par IBM
• Supporte Java 1.2
Jour 2 108
L’environnement Visual Café
Jour 2 109
UML: Unified Modeling Language
• Méthodologie de conception O.O
• Neuf diagrammes
• Use case
• Diagramme des classes
• Diagramme de séquence
Jour 2 110
UML
• Use case: première étape
• Description des fonctionnalités du système
• Supporté par un texte descriptif
• Exemple:
Jour 2 111
Use Case
• Use Case de gestion des Commandes
Commercial
Accepter Commande client
Verifier Commande client
Annuler Commande client
Imprimer Commande client
Jour 2 112
UML
• Diagramme des classes• Relations entre les classes• Héritage: simple ou multiple• Associations• Aggrégation• Exemple:
Jour 2 113
Heritage
Manuel
nom editeur@editeurdate publication
vérifierStock()
Ouvrage
titreISBNauteuréditeur
majStock()
Jour 2 114
UML:Diagramme de class
Manuel Ouvrage
Commande c l ient
numCde;dateCde;
majEtat();imprimerCde();
1..*
0..*
Jour 2 115
UML
• Diagramme de séquences
• Les appels entre les fonctions
• Pour chaque use-case un diagramme
• Exemple:
Jour 2 116
Diagramme Séquence:Vérifier Commande Client
imprimerCommandeClient()imprimer()
retournerCommandeClient()
sélectionnerCommandeClient()
FenêtreC.C.
CommandeClient
imprimer()
Fenêtre C.C.()
Trouver C.C.()
I mp