Vous êtes sur la page 1sur 41

La programmation JAVA

Anne Universitaire 2012-2013 DUTDUT-ENS

Sommaire
Le langage Java: prsentation et syntaxe de base La Programmation Oriente Objet La gestion des exceptions Les entres-sorties Interface graphique (awt et swing) Les applets Threads (ou processus lgers) Accs aux bases de donnes (JDBC) Rseau

(expos) (expos) (expos)


DUTDUT-ENS
2

Syntaxe et lments de base de java

DUTDUT-ENS
3

Syntaxe et lments de bases de Java

Constitution dun programme


Un programme Java utilise un ensemble de classes Les classes sont regroupes par package Une classe regroupe un ensemble dattributs et de mthodes

Package

Classes

Attributs Mthodes DUTDUT-ENS


4

Syntaxe et lments de bases de Java

Dclaration dune classe


Le nom de la classe est spcifi derrire le mot cl class Le corps de la classe est dlimit par des accolades On dfinit dans le corps les attributs et les mthodes qui constituent la classe

class Test { corps de la classe: attributs et mthodes

}
DUTDUT-ENS
5

Syntaxe et lments de bases de Java

Dfinition dune mthode


Une mthode possde : un nom un type de retour des paramtres (ventuellement aucun) un bloc dinstructions class Test { int calculer (int taux, float delta){ < corps de la mthode > } } Un paramtre possde : un type un identifiant Si le type de retour est void => la mthode ne renvoie pas de valeur DUTDUT-ENS
6

Syntaxe et lments de bases de Java

Corps dune mthode


Le corps dune mthode est un bloc dinstructions Le mot cl return permet de renvoyer une valeur lappelant de la mthode Il doit renvoyer une valeur du mme type que le type de retour de la mthode

class Test { int calculer (int taux,float delta){ (int return taux * delta; } }
DUTDUT-ENS
7

Syntaxe et lments de bases de Java

Point dentre
Une application possde un point dentre fourni par la mthode main (sauf les applets) Attention la casse, Java est sensible aux majuscules/minuscules

class Test { public static void main (String[] args)) { args )) ... // corps de la mthode main } }

DUTDUT-ENS
8

Syntaxe et lments de bases de Java

Exemple :
Comme on a donn le nom DUT notre classe, il faut sauver le fichier sous le nom DUT.java (un autre nom provoquera une erreur lors de la compilation)

class DUT { int k = 5; attribut Point public static void main (String argv[]) dentre { DUT Salam = new DUT(); for (int I = 0; I < Salam.k; I++) Salam.Tahiat(); } mthode public void Tahiat() { System.out.println("Bonjour DUT !!! "); } }

objet

fichier DUT.java

DUTDUT-ENS
9

Syntaxe et lments de bases de Java

Quelques rgles de base


Java est sensible la casse. Les blocs de code sont encadrs par des accolades. Chaque instruction se termine par un caractre ';' (point virgule). Chaque objet, classe, programme ou variable doit avoir un identificateur Un identificateur ne peut pas appartenir la liste des mots rserv du langage Java:
const if else char int float double long short boolean byte null true false switch case default for do while break continue

class public private return void extends static new protected package this abstract final native goto strictfp import throw assert try finally interface throws transient enum implements volatile super catch

synchronized instanceof

DUTDUT-ENS
10

Syntaxe et lments de bases de Java

Bloc dinstructions
Un bloc dinstructions est dlimit par des accolades Il contient un ensemble dinstructions Toute instruction est termine par un point virgule Un bloc dinstructions peut contenir dautres blocs dinstructions

{ int i = 0; if (i==0) System.out.println("Valeur System.out.println("Valeur de i:"+ i); }


DUTDUT-ENS
11

Syntaxe et lments de bases de Java

Instructions possibles
Dclaration dune variable Appel de mthode Affectation Instruction de boucle (while, for) Instruction de test (if, switch)

DUTDUT-ENS
12

Syntaxe et lments de bases de Java

Dclaration et utilisation de variables


Une variable possde un type et un nom Le type peut tre soit un type de base soit une classe: variable de type lmentaire (ou primitif) :

type_lmentaire nom_variable;
soit une classe dclare sous la forme classe variable ;

{ int compteur; int indice = 0; Voiture golf; Voiture twingo = new Voiture(); }
Linitialisation dune variable peut se faire au moment de la dclaration DUTDUT-ENS
13

Syntaxe et lments de bases de Java

Porte dune variable


La porte dune variable stend jusqu la fin du bloc dans lequel elle est dfinie

{ { int A; // compteur est accessible } // A nest plus accessible }


DUTDUT-ENS
14

Syntaxe et lments de bases de Java

Porte dune variable


La porte dune variable stend jusqu la fin du bloc dans lequel elle est dfinie public class Portee { int a; public void test(int b) { if (a > b) { int c = b; b = a; a = b; } afficher(b); } }

l'entier a est visible dans toute la classe b nest visible qu l'intrieur de la mthode test c est visible dans le bloc du if
DUTDUT-ENS
15

Syntaxe et lments de bases de Java

Nom de classes, de variables et de mthodes


Un nom peut tre constitu de lettres, de chiffres et du caractre soulign ( _ ) Il ne peut pas commencer par un chiffre Le caractre $ est utilisable mais viter Les mots rservs (if, class, int) ne peuvent pas tre utiliss Les dveloppeurs ont dfini un consensus de nommage :
Les mots du langage sont en minuscule Les noms de classe commencent par une majuscule Les noms de mthodes et de variables commencent par une minuscule Chaque mot qui compose le nom commence par une majuscule

DUTDUT-ENS
16

Syntaxe et lments de bases de Java

Les diffrents types de base


Mme types qu'en C: int float double short long char void Plus deux nouveaux types : boolean byte Plus la classe : String Dclaration : int monEntier; String chaine; boolean test;

DUTDUT-ENS
17

Syntaxe et lments de bases de Java

Les diffrents types de base


Les types de base scrivent en minuscules (int, float..) Le type int est cod sur 4 octets Le type char est cod sur 2 octets pour supporter les jeux de caractres Unicode Une chane de caractres est dclare avec le mot-cl String

String s = " Salam DUT "


Ce nest pas un type de base Il se manipule comme un type de base Ce nest pas quivalent un tableaux de caractres DUTDUT-ENS
18

Syntaxe et lments de bases de Java

Laffectation
Loprateur = permet daffecter la valeur de lexpression qui est droite la variable qui est gauche Elle est associative de droite gauche

class Test { int calculer () { int i = 0, j = 6, k; i = (j + 5) * 3; k=i=j; return i + j; } }


DUTDUT-ENS
19

Syntaxe et lments de bases de Java

Les oprateurs arithmtiques


Sappliquent sur les types entiers ou rels

+ , - , * , / , % (modulo) , += , -= , *= , /=

int x, y, z; y = 2; z = 3; x = y * z ; x += 2 ; y = x / 4 ; y =x % 2 ;

// x vaut 6 // x vaut 8 // y vaut 2 // y vaut 0

Les oprateurs = et += peuvent tre utiliss sur des variables de type String Il est recommand dutiliser la notion raccourcie => plus performante DUTDUT-ENS
20

Syntaxe et lments de bases de Java

Les oprateurs daffectation


Pour simplifier l'criture d'une opration d'affectation associe un oprateur mathmatique: var1 op= var2
Oprateur += -= *= /= %= ^= <<= >>= Exemple a+=10 a-= a*= a/=10 a%=10 a^=10 a<<=6 a>>=6

var1=var1 op var2

Signification quivalent : a = a + 10 quivalent : a = a - 10 quivalent : a = a * 10 quivalent : a = a / 10 reste de la division quivalent : a = a ^ 10 quivalent : a = a << 6 a est complt par des zros droite. ( 6<<1 = > 00000110 = 12) (dcalage gauche 2 ) ) quivalent : a = a >> 6 a est complt par des zros gauche ( 6<<1 = > 00000011 = 3 ) (/2)

DUTDUT-ENS
21

Syntaxe et lments de bases de Java

Les oprateurs unaires


Sappliquent un seul oprande de type entier ou rel

- , -- , + , ++
Si l'oprateur est plac avant la variable (prfix), la modification de la valeur est immdiate sinon la modification n'a lieu qu' l'issu de l'excution de la ligne d'instruction (postfix)

int x, y; x = 3; y = -x ; y = ++x ; y = x-- ; x-// x vaut 4, y vaut 4 // y vaut 4, x vaut 3


DUTDUT-ENS
22

Syntaxe et lments de bases de Java

Les oprateurs unaires


Exemple:
public class incrementation { public static void main(String[ ] args) { int x=3; System.out.println(x++); System.out.println(x); x=3; System.out.println(++x); System.out.println(x); } } DUTDUT-ENS
23

AFFICHE : 3 // quivalent System.out.println(x) puis x = x + 1 AFFICHE : 4 AFFICHE : 4 AFFICHE : 4

// quivalent x = x + 1 puis System.out.println(x);

Syntaxe et lments de bases de Java

Les oprateurs unaires


Exemple:
public class incrementation { public static void main(String[ ] args) { int n1=0, n2=1; System.out.println("n1 = " + n1 + " n2 = " + n2); n1=n2++; System.out.println("n1 = " + n1 + " n2 = " + n2); n1=++n2; System.out.println("n1 = " + n1 + " n2 = " + n2); n1=n1++; } } DUTDUT-ENS
24

n1=0 n2=1

n1=1 n2=2

n1=3 n2=3

// attention n1=3 n2=3

System.out.println("n1 = " + n1 + " n2 = " + n2);

Syntaxe et lments de bases de Java

Les oprateurs de comparaison


Sappliquent sur des entiers, boolens, rels

== , != , <= , > , >=


Ces oprateurs retournent une valeur du type boolean

{ boolean PlusGrand; int N=9 ; PlusGrand = (N >= 18) ; }

donne false
DUTDUT-ENS
25

Syntaxe et lments de bases de Java

Les oprateurs logiques


Sappliquent au type boolean ! (not) , && (and) , II (or) & , I Retournent un type boolean
- & renvoie true si les deux expressions renvoient true - && a le mme comportement mais nvalue pas le seconde expression si la premire est false - | renvoie true si lune des deux expressions renvoie true - || a le mme comportement mais nvalue pas le seconde expression si la premire est true
DUTDUT-ENS
26

Syntaxe et lments de bases de Java

La concatnation (+)
On peut utiliser l'oprateur + sur les objets de classe String String s1 = "Bienvenue", s2 = " Ttouan"; String s3 = s1 + s2; s3 vaut "Bienvenue Ttouan " La variable length donne la taille d'un tableau; char[] tab = new char[25]; int a = tab.length; a vaut 25

DUTDUT-ENS
27

Syntaxe et lments de bases de Java

Les conversions de type ou transtypage

Java est un langage typage rigoureux qui ne possde pas de transtypage automatique lorsque ce transtypage risque de conduire une perte d'information.

DUTDUT-ENS
28

Syntaxe et lments de bases de Java

Les conversions de type ou transtypage


Pour les types numriques entiers : Java met en uvre un mcanisme de conversion implicite vers le type int. Ce mcanisme fait partie des rgles mise en place pour renforcer la scurit du code. Exemple : short x= 5 , y = 15; x = x + y ; // erreur la compilation
Exception in thread "main" java.lang.Error: Problme de compilation non rsolu : Non concordance de types : impossible de convertir de int en short at DEshortVERSint.main(DEshortVERSint.java:18)

Les oprandes et le rsultat de l'opration (x+y) sont convertis en type int. Le rsultat est affect dans un type short : il y a risque de perte d'informations et donc une "erreur la compilation" est mise. Cette conversion vite un dbordement de capacit sans que le programmeur soit pleinement conscient du risque. DUTDUT-ENS
29

Syntaxe et lments de bases de Java

Les conversions de type ou transtypage


Exemple : short x= 5 , y = 15; x=x+y; // erreur la compilation
// car x+y est converti en int et le rsultat affect une variable short

Pour rgler ce problme de conversion, il est ncessaire d'utiliser une conversion explicite ou cast x = (short) ( x + y ); Il est ncessaire de mettre l'opration entre parenthse pour que ce soit son rsultat qui soit converti car le cast a une priorit plus forte que les oprateurs arithmtiques.
DUTDUT-ENS
30

Syntaxe et lments de bases de Java

Les conversions de type ou transtypage


Il y a 4 contextes possibles de conversion (cast) : Conversion explicite Affectation Appel de mthode Promotion arithmtique Certaines conversions provoquent une perte de valeur float en int , int en short , short en byte Le type boolean ne peut pas tre converti en entier

DUTDUT-ENS
31

Syntaxe et lments de bases de Java

Les conversions de type ou transtypage


Soit les dclarations de variables suivantes: double f =3.14 ; int i , j ; short s ; * i = (int)f ; float ff = (float)3.14 ; *i=s; // float int (conversion explicite)

// short

int (affectation)

* // appel de la mthode int obj.m(int i) obj.m(s) ; // short

int (appel de mthode)

* // division dun entier et dun flottant : lentier i est converti en flottant, // puis la division flottante est calcule f = i / (double)j; // f vaut 0.3333 DUTDUT-ENS
32

Syntaxe et lments de bases de Java

Les objets
Pour les objets :
- Pour utiliser un objet, il faut le dclarer puis le crer avec new - La rservation de la mmoire pour la cration d'un objet se fait avec l'instruction new. - La libration de la mmoire se fait automatiquement grce au garbage collector.

Exemple :
// dclaration de l'objet MaClasse instance; // cration de l'objet instance = new MaClasse();
// ou dclaration et cration de l'objet en mme temps

MaClasse instance = new MaClasse(); DUTDUT-ENS


33

Syntaxe et lments de bases de Java

Les structures conditionnelles


class Test { public static void main (String args[]) { args[]) int compteur = 0; boolean debut; debut; if (compteur == 0) { 0) debut = true; true; System.out.println("Dbut System.out.println("Dbut de la partie"); } else if (compteur ==10) System.out.println("Fin System.out.println("Fin de la partie"); else System.out.println("Partie System.out.println("Partie en cours"); } } DUTDUT-ENS
34

Syntaxe et lments de bases de Java

La structure choix multiple: switch


class Test { public static void main (String args[]) { args[]) char c = (char)System.in.read(); switch(c) { (c) case o: case O: System.out.println("Oui"); System.out.println("Oui"); break; case n: case N: System.out.println("Non"); System.out.println("Non"); break; default: : System.out.println("Mauvaise System.out.println("Mauvaise rponse"); break; } } }

Le switch ne sapplique quau type entier ou caractre.


DUTDUT-ENS
35

Syntaxe et lments de bases de Java

Les structures itratives: boucle while


class Test { public static void main (String args[]) { args[]) int i; do { System.out.println("Entrez System.out.println("Entrez un nombre < 10"); c= lireUnInt(); lireUnInt(); } while (c>10); while (c>0) Afficher(c--); Afficher(c--) } public static int lireUnInt() {} lireUnInt() public static void Afficher(char c) {} } DUTDUT-ENS
36

Syntaxe et lments de bases de Java

Les structures itratives: boucle for


class Test { public static void main (String args[]) { args[]) int i; for (i=0 ; i <=5 ; i++) { System.out.println(i); } } }

DUTDUT-ENS
37

Syntaxe et lments de bases de Java

Commentaires
Lutilisation de commentaires est fortement recommande /* Pour un commentaire sur plusieurs lignes */

//

Pour un commentaire sur une ligne

DUTDUT-ENS
38

Syntaxe et lments de bases de Java

Les tableaux : description


Nombre fixe dlments. Taille fixe la construction Les lments sont de mme type (type de base ou classe) Les tableaux sont des objets, ils allous dynamiquement par new Un tableau est dtruit lorsquil nest plus rfrenc Les tableaux multi-dimensionnels sont des tableaux de tableaux

DUTDUT-ENS
39

Syntaxe et lments de bases de Java

Les tableaux : syntaxe


2 syntaxes pour lallocation : int[] monTableau = new int[10]; int monTableau[] = new int[10]; Une mthode peut renvoyer un tableau
classe Test { int[] construireTableau (int dimension){ int tab[ ] = new int[dimension]; return tab; } } DUTDUT-ENS
40

Syntaxe et lments de bases de Java

Les tableaux : initialisation


Lattribut length renvoie la dimension du tableau Lindice des lments du tableaux varie de 0 tableau.length 1 Initialisation statique : int[] monTableau = {1, 2, 3}; Initialisation dynamique : int[] param = new int[10]; for (int i = 0; i < param.lenght ; i++) param[i]= i;
DUTDUT-ENS
41