Jour 21 Jour 2. 2 Environnement standard • Commandes de base • javac (compilateur) • java...

Post on 04-Apr-2015

114 views 1 download

Transcript of Jour 21 Jour 2. 2 Environnement standard • Commandes de base • javac (compilateur) • java...

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