Java Cours1
Java Cours1
Java Cours1
LANGAGE JAVA
SONIA KEFI
2 ÈME LI
• 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
HISTORIQUE DE JAVA (2)
6
ORGANISATION DU COURS
• Nous verrons :
• Caractéristiques de Java et son environnement de développement
• Structures fondamentales
• La programmation par objets en Java
• Héritage
• Polymorphisme
• Encapsulation
• Les exceptions, les entrées / sorties en Java
• Les collections en Java
• Les paquetages
• Bibliographie
• Au cœur de Java 2 : Volume I - Notions fondamentales.
C. Hortsmann et G. Cornell. The Sun Microsystems Press.
Java Series. CampusPress.
• Au cœur de Java 2 : Volume II - Fonctions avancées.
C. Hortsmann et G. Cornell. The Sun Microsystems Press.
Java Series. CampusPress.
• Passeport pour l’algorithmique objet. Jean-Pierre Fournier.
Thomsom Publishing International.
8
RÉFÉRENCES (2)
• Webographie
• Pour récupérer le kit de développement de Sun
• http://java.sun.com/ (racine du site)
• Outils de développement
• Eclipse : http://www.eclipse.org
• Des exemples de programmes commentés
• http://www.technobuff.com/javatips/ (en anglais)
• http://developer.java.sun.com/developer/JDCTechT
ips/ (en anglais)
9
DU PROBLÈME AU PROGRAMME
• Simple
• Apprentissage facile:
• faible nombre de mots-clés,
• simplification des fonctionnalités
essentielles.
• Développeurs opérationnels rapidement.
• Familier
• Syntaxe proche de celle de C/C++. 13
CARACTÉRISTIQUES DU LANGAGE JAVA (2)
• Orienté objet
14
CARACTÉRISTIQUES DU LANGAGE JAVA (3)
• Fiable
• Gestion automatique de la mémoire ("garbage
collector")
• Gestion des exceptions
• Sources d'erreurs limitées
• typage fort,
• pas d'héritage multiple,
• pas de manipulations de pointeurs, etc.
• Vérifications faites par le compilateur
facilitant une plus grande rigueur du code
15
CARACTÉRISTIQUES DU LANGAGE JAVA (4)
• Inconvénients :
• Nécessite l’installation d’un interpréteur pour pouvoir
exécuter un programme Java.
• L'interprétation du code ralentit l'exécution.
• Gestion gourmande de la mémoire.
• Impossibilité d’opérations de « bas niveau » liées au
matériel.
19
LANGAGE COMPILÉ
Fichier
de Librairies
code
Programme
Compilation Code objet Edition de liens
exécutable
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
21
L’API DE JAVA (1)
• Java fournit de nombreuses librairies de classes
remplissant des fonctionnalités très diverses : c'est
l'API Java.
• API (Application and Programming Interface /Interface
pour la programmation d'applications) : Ensemble de
bibliothèques permettant une programmation plus aisée
car les fonctions deviennent indépendantes du matériel.
30
EXEMPLE (1)
}
} Les instructions se terminent
par des ;
32
EXEMPLE (3)
33
COMPILATION ET EXÉCUTION (1)
43
LES TYPES DE BASES (6) : LES RÉELS
• Les opérateurs
• opérateurs classiques +, -, *, /
• attention pour la division :
• 15 / 4 donne 3 division entière
• 15 % 2 donne 1
• 11.0 / 4 donne 2.75
(si l’un des termes de la division est un
réel, la division retournera un réel).
• puissance : utilisation de la méthode pow de la
classe Math.
• double y = Math.pow(x, a) équivalent à
x^a, x et a étant de type double.
44
LES TYPES DE BASES (7) : LES BOOLÉENS
• Les booléens
• Boolean :
contient soit vrai (true) soit faux (false)
• Les opérateurs logiques de comparaisons
• Egalité : opérateur ==
• Différence : opérateur !=
• supérieur et inférieur strictement à :
opérateurs > et <
• supérieur et inférieur ou égal :
opérateurs >= et <=
45
LES TYPES DE BASES (8) : LES BOOLÉENS
• Notation
boolean x;
x= true;
x= false;
x= (5==5); // l ’expression (5==5) est évaluée et la valeur est
affectée à x qui vaut alors vrai
x= (5!=4); // x vaut vrai, ici on obtient vrai si 5 est différent de
4
x= (5>5); // x vaut faux, 5 n'est pas supérieur strictement à 5
x= (5<=5); // x vaut vrai, 5 est bien inférieur ou égal à 5
46
LES TYPES DE BASES (9) : LES BOOLÉENS
• Les autres opérateurs logiques
• ET LOGIQUE : &&
• OU LOGIQUE : ||
• NON LOGIQUE : !
• Exemples : si a et b sont 2 variables booléennes
boolean a,b, c;
a= true;
b= false;
c= (a && b); // c vaut false
c= (a || b); // c vaut true
c= !(a && b); // c vaut true
c=!a; // c vaut false 47
LES TYPES DE BASES (10) : LES
CARACTÈRES
• Les caractères
• char : contient une seule lettre.
• Le type char désigne des caractères en
représentation Unicode.
• Codage sur 2 octets contrairement à
ASCII/ANSI codé sur 1 octet. Le codage
ASCII/ANSI est un sous-ensemble d’Unicode.
• Notation hexadécimale des caractères Unicode
de ‘ \u0000 ’ à ‘ \uFFFF ’.
• Plus d’information sur Unicode à :
www.unicode.org 48
LES TYPES DE BASES (11) : LES
CARACTÈRES
• Notation
char a,b,c; // a,b et c sont des variables du type char
a='a'; // a contient la lettre 'a'
b= '\u0022’; //b contient le caractère guillemet : "
c=97; // x contient le caractère de rang 97 : 'a'
49
LES TYPES DE BASES (12)
EXEMPLE ET REMARQUE
int x = 0, y = 0;
float z = 3.1415F;
double w = 3.1415;
long T = 99L;
boolean test = true;
char c = 'a';
• Remarque importante :
• Java exige que toutes les variables soient définies et
initialisées. Le compilateur sait déterminer si une
variable est susceptible d'être utilisée avant 50
51
LES STRUCTURES DE CONTRÔLES (1)
52
LES STRUCTURES DE CONTRÔLES (2) :
IF / ELSE
• Instructions conditionnelles :
• Effectuer une ou plusieurs instructions seulement si une
certaine condition est vraie
if (condition) instruction;
et plus généralement : if (condition)
{ bloc d’instructions}
condition doit être un booléen ou renvoyer une valeur
booléenne.
• Effectuer une ou plusieurs instructions si une certaine
condition est vérifiée sinon effectuer d’autres instructions :
if (condition) instruction1; else instruction2;
et plus généralement
if (condition) { 1er bloc d’instructions}
53
else {2ème bloc d’instruction}
LES STRUCTURES DE CONTRÔLES (3) :
IF / ELSE
Max.java
import java.io.*;
54
LES STRUCTURES DE CONTRÔLES (4) :
WHILE
• Boucles indéterminées
• On veut répéter une ou plusieurs instructions un nombre
indéterminés de fois : on répète l’instruction ou le bloc
d’instruction tant que une certaine condition reste vraie.
• En Java, il y a une première boucle while (tant que)
• while (condition) {bloc d’instructions}
• Les instructions dans le bloc sont répétées tant que
la condition reste vraie.
• On ne rentre jamais dans la boucle si la condition est
fausse dès le départ
55
LES STRUCTURES DE CONTRÔLES (5) :
WHILE
• Boucles indéterminées
• un autre type de boucle avec le while:
do {bloc d’instructions}
while (condition)
• Les instructions dans le bloc sont répétées tant que la
condition reste vraie.
• On rentre toujours au moins une fois dans la boucle :
la condition est testée en fin de boucle.
56
LES STRUCTURES DE CONTRÔLES (6) :
WHILE
Facto.java
import java.io.*;
58
LES STRUCTURES DE CONTRÔLES (8) :
FOR
Facto2.java
import java.io.*;
63
LECTURE D’UNE DONNÉE (2)
64
65
LES TABLEAUX EN JAVA
LES TABLEAUX (1)
68
LES TABLEAUX (3)
• Initialisation
tab[0]=1;
tab[1]=2; //etc.
noms[0] = new String( "Boule");
noms[1] = new String( "Bill");//etc
• Création et initialisation simultanées
String noms [ ] = {"Boule","Bill"};
Point pts[ ] = { new Point (0, 0), new Point (10, -1)};
69
LES TABLEAUX (4)
Tab1.java
public class Tab1
{
public static void main (String args[])
{
int tab[ ] ; Pour déclarer une variable tableau
tab = new int[4]; on indique le type des éléments du tableau
tab[0]=5; et le nom de la variable tableau suivi de [ ]
tab[1]=3;
tab[2]=7;
tab[3]=tab[0]+tab[1]; on utilise new <type> [taille]; pour
} initialiser le tableau
}
On peut ensuite affecter des
valeurs au différentes cases
Les indices vont toujours de 0 du tableau :
à (taille-1) <nom_tableau>[indice] 70
LES TABLEAUX (5)
Tab1.java Mémoire
public class Tab1
{
public static void main (String args[])
{
int tab[ ] ; 0x0000
0x258
tab = new int[4];
tab[0]=5; 0
tab[1]=3; 0
tab[2]=7; 0
tab[3]=tab[0]+tab[1]; 0
}
}
71
LES TABLEAUX (6)
Tab1.java
Mémoire
public class Tab1
{
public static void main (String args[])
{ 0x258
int tab[ ] ;
tab = new int[4];
tab[0]=5; 5
0
tab[1]=3; 0
3
tab[2]=7; 0
7
tab[3]=tab[0]+tab[1]; 0
8
}
}
72
LES TABLEAUX (7)
Tab2.java Mémoire
public class Tab2
{
0x0258
public static void main (String args[])
{
String tab[ ] ; 0x0106
tab = new String[4]; 0x0116
tab[0]=new String("Pierre"); 0x0126
tab[1]=new String("Paul"); 0x0136
tab[2]=new String("Jacques");
tab[3]=new String("Philippe");
}
"Pierre"
}
"Paul"
"Jacques"
"Philippe"
73
LA CLASSE STRING (1)
0x768
0x852
• Sous-chaînes :
• méthode String substring(int debut, int fin)
• extraction de la sous-chaine depuis la position debut jusqu’à la
position fin non-comprise.
String str2 = str1.substring(0,3); // str2 contient la valeur "bon"
• le premier caractère d’une chaîne occupe la position 0.
• le deuxième paramètre de substring indique la position du premier
76
caractère que l’on ne souhaite pas copier.
LA CLASSE STRING (3)
Plus d’informations
dans les
documentations
de l’API dans le
Package :
java.lang
80
LA CLASSE MATH