You are on page 1of 37

Universit Sidi Mohammed Ben Abdallah

Facult des Sciences Dhar El Mehrez Fs

Pr. MAHRAZ Med Adnane


ANNE UNIVERSITAIRE: 2016 - 2017

Java a t dvelopp partir de dcembre 1990

par une quipe de Sun Microsystems dirige par


James Gosling

Au dpart, il sagissait de dvelopper un langage

de programmation pour permettre le dialogue entre


de futurs ustensiles domestiques
Or, les langages existants tels que C++ ne sont pas la hauteur
: recompilation ds qu'une nouvelle puce arrive, complexit de
programmation pour l'criture de logiciels fiables...

Les dveloppeurs Java ont ralis un langage indpendant

de toute architecture de telle sorte que Java devienne idal


pour programmer des applications utilisables dans des
rseaux htrognes, notamment Internet.
Le dveloppement de Java devint alors un enjeu stratgique
pour Sun et l'quipe crivit un navigateur appel HotJava
capable dexcuter des programmes Java.
La version 2.0 du navigateur de Netscape a t dveloppe

pour supporter Java, suivi de prs par Microsoft (Internet


Explorer 3)

L'intrt pour la technologie Java sest accru rapidement:

IBM, Oracle et d'autres ont pris des licences Java.

Nous verrons
Caractristiques de Java et son environnement de dveloppement
Structures fondamentales

La programmation par objets en Java


Hritage
Polymorphisme
Les exceptions, les entres / sorties en Java
Les collections en Java

Les paquetages

Nous essaierons daborder les thmes suivants si nous en avons le

temps :

La programmation des interfaces graphiques en Java (AWT et Swing)


Laccs aux bases de donnes

Ncessit danalyser le problme pour

pouvoir le traduire en une solution


informatique
(cela semble vident, mais pourtant!)

avant de construire un btiment, on fait un

plan. Ce nest pas diffrent en informatique :


conception de lalgorithme, i.e. une rponse
(rationnelle) au problme pos
puis mise en uvre technique - le codage dans un langage de programmation, dans
notre cas Java.
5

Se poser les bonnes questions


Quelles sont les objets qui
interviennent dans le problme?
Quelles sont les donnes, les objets,
que le programme va manipuler?
Quelles vont tre les relations entre
ces objets? Quelles sont les
oprations que je vais pouvoir
effectuer sur ces objets?
6

Une suite dinstructions


Exemple:
1.
2.
3.
4.

Faire A (un calcul)


Faire B
Tester une condition: si satisfaite aller 2, sinon, aller 4
Faire C

Un programme est crit dans un langage

Langage machine (add 12, ): bas niveau


Langage haut niveau
Procdural
C, Basic, Cobol, Pascal, Fortran,
Orient Objet (OO):
Java, VB, C++,
IA (intelligence artificielle):
Prolog, Lisp
7

dition du
code

crire un programme dans und


langage (e.g. Java)

Compiler le
programme

Traduire le programme dans un


langage de bas niveau (machine)
Produire un programme (code)
excutable
Charger le programme en
mmoire (typiquement en

Programme source, code source


Programme crit dans un langage
Code machine, code excutable
Programme dans un langage de machine, directement
excutable par la machine
Compilation (compilateur)
Traduire un code source en code excutable

Interprteur
Certains langages nont pas besoin dtre traduit en code
machine
La machine effectue la traduction sur la vole (on the fly),
instruction par instruction, et lexcute
E.g. Prolog, JavaScript
9

Etapes qui ont lieu avant l'excution pour un langage compil


comme C++
Fichier
de
code

Compilation

Librairies

Code objet

Edition de liens

Programme
excutable

Autres code objet


Fichier
d'entte

10

Cas de Java

Avant excution

Excution

Autres byte code

Fichier
de code
Java
MaClasse.java

Compilation

Byte code

javac

MaClasse.class

Machine virtuelle
Java (JVM)
java

11

Syntaxe dun langage


Comment formuler une instruction correcte
(grammaire)
Smantique
Ce que linstruction ralise
Erreur
de compilation: typiquement relie la syntaxe
dexcution: smantique (souvent plus difficile
dtecter et corriger)
12

Langage orient objet


Notions de classes, hritage,

Beaucoup doutils disponibles (packages)


JDK (Java Development Kit)
Historique
Sun Microsystems
1991: conception d'un langage indpendant du
hardware
1994: browser de HotJava, applets
1996: Microsoft et Netscape commencent soutenir
1998: ldition Java 2: plus stable, norme librairie
13

Compiler un programme en Byte Code


Byte code: indpendant de la machine
Interprt par la machine
javac programme.java
Gnre programme.class
java programme
Lance le programme

14

Nom de la classe

public class Salut


{
public static void main(String[] args)
{
// afficher une salutation

Une mthode
commentaire
Une instruction

System.out.println(Bonjour tout le monde!");

}
}
Stocker ce programme dans le fichier Salut.java
15

Compilation
javac Salut.java
Ceci gnre salut.class

Lancer lexcution
java Salut

Rsultat de lexcution

Bonjour tout le monde!

16

mots rservs: public class static void


identificateurs: args Salut main String System out

println

main String System out println: ont une fonction prdfinie

littral: "Bonjour tout le monde!"

ponctuation: { accolade } [ crochet ] ( parenthse )


Commentaires
// note importante pour comprendre cette partie du code
/* commentaires sur plusieurs lignes

*/
17

Un programme en Java est dfini comme une classe

L'en-tte de
la classe

Le corps

Nom de la
classe
Attributs
Mthodes

18

L'en-tte de la classe

public class NomDeClasse

public = tout le monde peut utiliser cette classe


class = unit de base des programmes OO

Une classe par fichier


La classe NomDeClasse doit tre dans le fichier

NomDeClasse.java
Si plus dune classe dans un fichier .java, javac
gnre des fichiers .class spars pour chaque
classe

19

Le corps

}
Contient les attributs et les mthodes
Attributs: pour stocker les informations de la classe

Mthodes: pour dfinir ses comportement, ses traitements,

Conventions et habitudes
nom de classe: NomDeClasse
indentation de { }
indentation de ...

20

L'en-tte:

public static void main(String[] args)


main: nom de mthode
void: aucune sortie (ne retourne rien)
String[] args: le paramtre (entre)
String[]: le type du paramtre
args: le nom du paramtre

Conventions
nomDeParametre
nomDeMethode
nomDAttributs
nomDObjet
21

Le corps:

// afficher une salutation


System.out.println("Bonjour tout le monde!");
}
contient une squence d'instructions, dlimite par {
}
// afficher une salutation : commentaire
System.out.println("Bonjour tout le monde!"): appel de

mthode

les instructions sont termines par le caractre ;


22

En gnral:
nomDObjet.nomDeMethode(<liste des paramtres>)

System.out: l'objet qui reprsente le terminal (lcran)


println: la mthode qui imprime son paramtre (+ une fin de

ligne) sur un stream (cran)


System.out.println("Bonjour tout le monde!");
"Bonjour tout le monde!": le paramtre de println

La mthode main
java Salut excute la mthode main dans la classe Salut
main est la mthode excute automatiquement
linvocation du programme (avec le nom de la classe) qui la
contient
23

Variable: contient une valeur


Nom de variable
Valeur contenue dans la variable
Type de valeur contenue

int: entier, long: entier avec plus de capacit


Integer: classe entier, avec des mthodes
float: nombre rel avec point flottant, double: double prcision
String: chane de caractres ("Hello, World!")
char: un caractre en Unicode (a, $, , )
boolean: true/false

Dfinition gnrale
Type nomDeVariable;
Type: int

Exemple: int age;

Nom: age
24

Affecter une valeur une variable


E.g. age = 25;

Type: int

25

Nom: age
Erreur si: age = "vingt cinq";
Type de valeur incompatible avec la variable

25

Une condition correspond vrai ou faux


E.g. (age < 50)
Tester une condition:
if condition A; else B;
si condition est satisfaite, alors on fait A;
sinon, on fait B
E.g. if (age < 65)
System.out.println("jeune");
else
System.out.println("vieux");
26

Pour les valeurs primitives (int, double,

x == y : x et y ont la mme valeur?


x > y, x >= y, x != y,
Attention: (== != =)

27

public class Salutation


{

public static void main(String[] args)


{
int age;
age = Integer.parseInt(args[0]);
// afficher une salutation selon lage
System.out.print(Salut, le ");
if (age < 65)
System.out.println(jeune!");
else
System.out.println(vieux!");
}

}
Utilisation:
java Salutation 20

args[0]: premier argument


aprs le nom
Integer.parseInt(args[0]):
reconnatre et transmettre
la valeur entire quil
reprsente
print: sans retour la ligne
println: avec retour la ligne

// ici, args[0] = "20"

Salut le jeune!
java Salutation 70

Salut le vieux!

28

Pour traiter beaucoup de donnes en srie

Schma dexcution

Schmas

somme=0;

Boucle for

int somme = 0;
for (int i = 0; i<10; i++) somme = somme + i;
Boucle while
int somme = 0;
int i = 0;
while (i<10) { somme = somme + i;
i++;
}

i=0;
i<10?
oui
non

somme=somme+i;
i++;

Que font ces deux boucles?

i:
somme: 0

0,

1,

2,

3,

4,

5,

6,

7,

8,

0,

1,

3,

6, 10, 15, 21, 28, 36,

9, 10
45, sortie

29

Schma dexcution
somme=0;
i=15;
i<10?
oui

do A while (condition)

non

Faire A au moins une fois

somme=somme+i;
i++;

Tester la condition pour savoir sil faut refaire A


int somme = 0;
int i = 15;
while (i<10) {
somme = somme + i;
i++;}
int somme = 0;
int i = 15;
do {
somme = somme + i;
i++;
} while (i<10);

Schma dexcution
somme=0;

somme = 0
i=15;

somme = 15

somme=somme+i;
i++;
i<10?

non

oui
30

Calcul des intrts


tant donn le solde initial, le solde souhait
et le taux d'intrt, combien d'annes seront
ncessaires pour atteindre le solde souhait

au lieu d'utiliser une formule, on simule le calcul

Algorithme (pseudocode):
1. ans = 0;
2. Tant que le solde n'atteint pas le solde souhait
3. Incrmenter ans
4. Ajouter l'intrt au solde
31

public class NombreAnnees{


public static void main(String[] arg){

double solde=Double.parseDouble(arg[0]);
double solde_final=Double.parseDouble(arg[1]);
double taux=Double.parseDouble(arg[2]);
int ans= 0;
double interet=0;
while (solde < solde_final) {
ans = ans + 1;
ans++;
interet= solde * taux;
solde = solde + interet;
solde += interet;
}
System.out.println(ans + " ans sont ncessaire pour atteindre le solde
"+ solde_final);

}
xecution de la classe : java NombreAnnees 2000 20000 0.07
Rsultat: 35 ans sont ncessaire pour atteindre le solde 20000.0

32

Calcul de la factorielle
Ecrivez une fonction (une mthode) qui calcul
la factoriel dun entier donn.
Appelez cette fonction dans la fonction
principale main .
Algorithme (pseudocode):
1.
2.
3.
4.
5.

fact= 1;
Tant que le nombre > 1
Fact=fact*nombre;
Dcrmenter le nombre
Fin tant que

33

public class Factorielle {


Si une mthode (ou un
public static double factorielle(int x) {
attribut, une variable) de la
if (x < 0) return 0.0;
classe est utilise par la
double fact = 1.0;
mthode main (static), il
while (x > 1) {
faut quil soit aussi
fact = fact * x;
static .
x = x - 1;
}
return fact;
}
public static void main(String[] args) {
int entree = Integer.parseInt(args[0]);
double resultat = factorielle(entree);
System.out.println(Integer.parseInt(resultat));
}
}

34

Attention:
Array
String

a.length
a.length()

Pour stocker une srie de donnes de mme nature


Dclaration

int [] nombre; // une srie de valeurs int dans le tableau nomm nombre
String [][] etiquette; // un tableau deux dimensions de valeurs String

Cration

nombre = new int[10]; // cre les cases nombre[0] nombre[9]


etiquette = new String[3][5]; // cre etiquette[0][0] etiquette[2][4]
int[] primes = {1, 2, 3, 5, 7, 7+4}; // dclare, cre de la bonne taille et
initialise

Utilisation

nombre[0] = 4;
for (int i=1; i<nombre.length; i++) nombre[i]=nombre[i-1]+1;
etiquette[2][3] = "un texte";
String texte = etiquette[2][3];
35

Nombre de voyelles
Ecrivez un programme JAVA permettant de

calculer le nombre de voyelles dans un texte.


tapes suivre:
Initialiser un tableau de voyelles
Raliser une fonction test qui vrifier si un caractre est
un voyelle ou non. La fonction retourne un boolen.
Calculer dans la fonction main , le nombre de voyelle
existant dans un texte pass en argument
36

public class Chaine{


private static char[] voyelle={'a','e','i','o','u'};

public static boolean test(char c){


for(int i=0;i<voyelle.length;i++){
if (voyelle[i]==c) return true;}
return false;

}
public static void main(String[] args){
String texte=args[0]; int cpt=0;
for(int i=0;i<texte.length();i++){

char c=(char)texte.charAt(i);
if (test(c)==true) cpt++;
}

cpt);
}}

System.out.println("le nombre de voyelle dans la phrase "+texte+" est: "+


37

You might also like