Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1
Pr. MAHRAZ Med Adnane
ANNÉE UNIVERSITAIRE: 2016 - 2017
Java a été développé à partir de décembre 1990
par une équipe de Sun Microsystems dirigée par
James Gosling
Au départ, il s’agissait de développer 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 dès qu'une nouvelle puce arrive, complexité de
programmation pour l'écriture de logiciels fiables...
2
Les développeurs Java ont réalisé un langage indépendant
de toute architecture de telle sorte que Java devienne idéal
pour programmer des applications utilisables dans des
réseaux hétérogènes, notamment Internet.
Le développement de Java devint alors un enjeu stratégique
pour Sun et l'équipe écrivit un navigateur appelé HotJava
capable d’exécuter des programmes Java.
La version 2.0 du navigateur de Netscape a été développée
pour supporter Java, suivi de près par Microsoft (Internet
Explorer 3)
L'intérêt pour la technologie Java s’est accru rapidement:
IBM, Oracle et d'autres ont pris des licences Java.
3
Nous verrons
Caractéristiques de Java et son environnement de développement
Structures fondamentales
La programmation par objets en Java
Héritage
Polymorphisme
Les exceptions, les entrées / sorties en Java
Les collections en Java
Les paquetages
4
Nécessité d’analyser le problème pour
pouvoir le traduire en une solution
informatique
(cela semble évident, mais pourtant!)
avant de construire un bâtiment, on fait un
plan. Ce n’est pas différent en informatique :
conception de l’algorithme, i.e. une réponse
(rationnelle) au problème 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 problème?
Quelles sont les données, les objets,
que le programme va manipuler?
Quelles vont être les relations entre
ces objets? Quelles sont les
opérations que je vais pouvoir
effectuer sur ces objets?
6
Une suite d’instructions
Exemple:
1. Faire A (un calcul)
2. Faire B
3. Tester une condition: si satisfaite aller à 2, sinon, aller à 4
4. Faire C
Un programme est écrit dans un langage
Langage machine (add 12, …): bas niveau
Langage haut niveau
Procédural
C, Basic, Cobol, Pascal, Fortran, …
Orienté Objet (OO):
Java, VB, C++, …
IA (intelligence artificielle):
Prolog, Lisp
7
Édition du • Écrire un programme dans und
code
langage (e.g. Java)
Compiler le
• Traduire le programme dans un
programme langage de bas niveau (machine)
• Produire un programme (code)
exécutable
• Charger le programme en 8
mémoire (typiquement en
Programme source, code source
Programme écrit dans un langage
Code machine, code exécutable
Programme dans un langage de machine, directement
exécutable par la machine
Compilation (compilateur)
Traduire un code source en code exécutable
Interpréteur
Certains langages n’ont pas besoin d’être traduit en code
machine
La machine effectue la traduction sur la volée (on the fly),
instruction par instruction, et l’exécute
E.g. Prolog, JavaScript
9
Etapes qui ont lieu avant l'exécution pour un langage compilé
comme C++
Fichier
de Librairies
code
Programme
Compilation Code objet Edition de liens
exécutable
10
Cas de Java
Avant exécution Exécution
Fichier
Byte code Machine virtuelle
de code Compilation
Java (JVM)
Java
javac MaClasse.class java
MaClasse.java
11
Syntaxe d’un langage
Comment formuler une instruction correcte
(grammaire)
Sémantique
Ce que l’instruction réalise
Erreur
de compilation: typiquement reliée à la syntaxe
d’exécution: sémantique (souvent plus difficile à
détecter et corriger)
12
Langage orienté objet
Notions de classes, héritage, …
Historique
Sun Microsystems
1991: conception d'un langage indépendant du
hardware
1994: browser de HotJava, applets
1996: Microsoft et Netscape commencent à soutenir
1998: l‘édition Java 2: plus stable, énorme librairie
13
Compiler un programme en Byte Code
Byte code: indépendant de la machine
Interprété par la machine
javac programme.java
Génère programme.class
java programme
Lance le programme
14
Nom de la classe
15
Compilation
javac Salut.java
Ceci génère salut.class
Lancer l’exécution
java Salut
Résultat de l’exécution
Bonjour tout le monde!
16
mots réservés: public class static void
identificateurs: args Salut main String System out
println
main String System out println: ont une fonction prédéfinie
17
Un programme en Java est défini comme une classe
L'en-tête de Nom de la
la classe classe
Attributs
Le corps
Méthodes
18
L'en-tête de la classe
public class NomDeClasse
public = tout le monde peut utiliser cette classe
class = unité de base des programmes OO
19
Le corps
{
…
}
Contient les attributs et les méthodes
Attributs: pour stocker les informations de la classe
Méthodes: pour définir ses comportement, ses traitements, …
Conventions et habitudes
nom de classe: NomDeClasse
indentation de { }
indentation de ...
20
L'en-tête:
public static void main(String[] args)
main: nom de méthode
void: aucune sortie (ne retourne rien)
String[] args: le paramètre (entrée)
String[]: le type du paramètre
args: le nom du paramètre
Conventions
nomDeParametre
nomDeMethode
nomDAttributs
nomDObjet
21
Le corps:
{
// afficher une salutation
System.out.println("Bonjour tout le monde!");
}
contient une séquence d'instructions, délimitée par {
}
// afficher une salutation : commentaire
System.out.println("Bonjour tout le monde!"): appel de
méthode
les instructions sont terminées par le caractère ;
22
En général:
nomDObjet.nomDeMethode(<liste des paramètres>)
System.out: l'objet qui représente le terminal (l’écran)
println: la méthode qui imprime son paramètre (+ une fin de
ligne) sur un stream (écran)
System.out.println("Bonjour tout le monde!");
"Bonjour tout le monde!": le paramètre de println
La méthode main
“java Salut” exécute la méthode main dans la classe Salut
main est la méthode exécutée automatiquement à
l’invocation 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 méthodes
float: nombre réel avec point flottant, double: double précision
String: chaîne de caractères ("Hello, World!")
char: un caractère en Unicode (‘a’, ‘$’, ‘é’, …)
boolean: true/false
Définition générale
Type nomDeVariable; 0
Type: int
Exemple: int age; Nom: age
24
Affecter une valeur à une variable
E.g. age = 25;
Type: int 25
Nom: age
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 même valeur?
x > y, x >= y, x != y, …
Attention: (== != =)
27
args[0]: premier argument
après le nom
public class Salutation
{
public static void main(String[] args) Integer.parseInt(args[0]):
{ reconnaître et transmettre
int age; la valeur entière qu’il
age = Integer.parseInt(args[0]); représente
// afficher une salutation selon l’age
System.out.print(“Salut, le ");
if (age < 65) print: sans retour à la ligne
System.out.println(“jeune!");
println: avec retour à la ligne
else
System.out.println(“vieux!");
}
}
Utilisation:
java Salutation 20 // ici, args[0] = "20"
Salut le jeune!
java Salutation 70
28
Salut le vieux!
Pour traiter beaucoup de données en série Schéma d’exécution
Schémas
somme=0;
Boucle for
int somme = 0;
i=0;
for (int i = 0; i<10; i++) somme = somme + i;
Boucle while
i<10?
int somme = 0;
oui
int i = 0;
somme=somme+i;
while (i<10) { somme = somme + i; non
i++;
i++;
}
Que font ces deux boucles?
i: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
29
somme: 0 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, sortie
Schéma d’exécution
somme=0;
i=15;
i<10?
oui
int somme = 0;
int i = 15; somme=somme+i;
do { i++;
somme = somme + i; somme = 15
i++; oui
} while (i<10); i<10?
non 30
Calcul des intérêts
Étant donné le solde initial, le solde souhaité
et le taux d'intérêt, combien d'années seront
nécessaires 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. Incrémenter ans
4. Ajouter l'intérêt 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 = ans + 1;
interet= solde * taux;
solde += interet; solde = solde + interet;
}
System.out.println(ans + " ans sont nécessaire pour atteindre le solde
"+ solde_final);
}
}
Éxecution de la classe : java NombreAnnees 2000 20000 0.07
Résultat: 35 ans sont nécessaire pour atteindre le solde 20000.0 32
Calcul de la factorielle
Ecrivez une fonction (une méthode) qui calcul
la factoriel d’un entier donné.
Appelez cette fonction dans la fonction
principale « main ».
Algorithme (pseudocode):
1. fact= 1;
2. Tant que le nombre > 1
3. Fact=fact*nombre;
4. Décrémenter le nombre
5. Fin tant que
33
public class Factorielle {
public static double factorielle(int x) { Si une méthode (ou un
if (x < 0) return 0.0; attribut, une variable) de la
double fact = 1.0; classe est utilisée par la
while (x > 1) { méthode main (static), il
fact = fact * x; faut qu’il soit aussi
x = x - 1; « static ».
}
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 a.length
String a.length()
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
Réaliser une fonction « test » qui vérifier si un caractère est
un voyelle ou non. La fonction retourne un booléen.
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++;
}
System.out.println("le nombre de voyelle dans la phrase "+texte+" est: "+
cpt); 37
}}