Niveau: 2ème Année GL
Email:
Chapitre1: Introduction à la programmation orientée objet
Chapitre2: Notions de base Java
Chapitre3: Classes et Objets Java
Chapitre4: Héritage, Polymorphisme et Classes Abstraites
Chapitre5: Les Interfaces
Chapitre6: Les Exceptions
2
CHAPITRE2
3
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
4
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
5
Un programme java simple qui ne contient que la fonction principale main() doit être défini sous
forme d’une classe:
La fonction main( ) est la première méthode exécutée dans un programme java. Elle doit avoir
obligatoirement la signature suivante:
public static void main (String args[]) ou static public void main (String args[])
Le nom args peut être quelconque. C’est un tableau de chaînes de caractères représentant les
arguments de la ligne de commandes.
6
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
7
// commentaire sur une seule ligne
/* commentaire sur une ou plusieurs lignes */
/** commentaire d ’explication */
8
Dans Java, les instructions se terminent par un point virgule (;)
Un bloc d’ instructions est délimité par des accolades { et }
Les blancs sont autorisés entre les éléments du code source
(espaces, tabulations et sauts de ligne)
{
int x;
x= 5*8;
}
9
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
10
• Les identificateurs permettent de nommer les différents éléments des programmes
Java (variables, constantes, classe, méthodes, packages,…)
• Un identificateur commence par une lettre, un trait de soulignement (_) ou un
signe dollar ($)
• Après le premier caractère, il peut contenir n’importe quelle combinaison de
lettres, dollar "$", caractère de soulignement "_", ou des chiffres.
• les caractères Unicode supérieurs à 0x00c0, permettent d’introduire dans les
identificateurs des caractères internationaux tels que ç, ü,…
11
Les identificateurs opèrent une distinction majuscules/minuscules et n’ont pas de
longueur maximale
On ne peut pas utiliser un mot-clé comme un identifiant dans vos programmes.
Exemple:
$valeur-système // identificateur valide
ça // identificateur non valide (ç premier caractère)
note# // identificateur non valide (contient # au dessous de 0x00c0)
12
Packages: doivent être écrits entièrement en minuscules (pack1)
Classes ou Interfaces: la première lettre de l’identificateur d’une classe doit
conventionnellement être en majuscule (MaClasse, UneJolieFenetre)
Méthodes ou Variables: la convention de nommage indique que la première lettre du mot
doit être en minuscule (setLongueur, i, uneFenetre)
Constantes: la convention de nommage indique que leur nom doit être en majuscule
(LONGUEUR_MAX, MIN)
Dans un attribut, si plusieurs mots sont accolés, mettre une majuscule à chacun des mots
sauf le premier (uneVariableEntiere)
13
Autres conventions
o Structure de contrôle: utilisez des ({ et }) autour des instructions, même s’il s ’agit
d’une seule, lorsqu’elles font partie d ’une structure de contrôle, telle que if-else
ou for.
o Placez une seule instruction par ligne, et utilisez une indentation pour que le
code soit plus lisible.
14
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
15
16
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
17
• Java est un langage fortement typé : chaque variable et chaque expression
possède un type bien défini.
• Les types de données de Java sont divisés en deux grands groupes:
o Les types primitifs (ou de base) : boolean, int, short, byte, float, long, double, char
o Le type référence : chaîne de caractères (String), tableau ou classe
18
Les entiers:
Type Signification Place occupée en Valeur par
primitif mémoire défaut
byte Entier très court allant de 1 octet 0
-128 à +127
short Entier court allant de 2 octets 0
-32768 à +32767
int Entier allant de 4 octets 0
-2 147 483 648 à +2 147 483 647
long Entier long allant de 18 octets 0L
-263 à +263
19
Les réels:
Type primitif Signification Place occupée Valeur par défaut
en mémoire
Nombre réel allant de 0f
float 4 octets
-3.4 * 10-45 à +3.4 * 1038
Nombre réel double 0d
double précision allant de 8 octets
4.9 * 10-324 à +1.7 * 10308
20
Caractères et booléens:
Type Signification Place occupée Valeur par
primitif en mémoire défaut
Caractère unicode (65536 '\u0000'
char caractères possibles) 2 octets
Entre '\u0000' et '\uffff'
variable booléenne false
boolean Non spécifiée
(valeurs : true ou false)
21
Une constante est déclarée final ne peut plus être modifiée une fois qu’elle a
été initialisée.
Une constante est par convention écrite en majuscules
Exemple :
final int MAX=15;
MAX = MAX+2 ; // erreur
22
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
23
Les opérateurs sont des symboles qui permettent de manipuler des
variables, c'est-à-dire effectuer des opérations, les évaluer, ...
On distingue plusieurs types d'opérateurs :
o les opérateurs de calcul
o les opérateurs d'assignation
o les opérateurs d'incrémentation
o les opérateurs de comparaison
o les opérateurs logiques
o les opérateurs bit-à-bit
o les opérateurs de rotation de bit
24
Ils permettent de modifier mathématiquement la valeur d'une variable.
Opérateur Dénomination Effet Exemple Résultat (int x=7)
+ opérateur Ajoute deux valeurs x+3 10
d'addition
- opérateur de Soustrait deux valeurs x-3 4
soustraction
* opérateur de Multiplie deux valeurs x*3 21
multiplication
/ opérateur de Calcul le quotient de la x/3 2
division division de deux valeurs
% opérateur de Calcul le reste de la x%3 1
congruence division de deux valeurs
= opérateur Affecte une valeur à une x=3 Met la valeur 3
d'affectation variable dans la variable x
25
Ces opérateurs permettent de simplifier des opérations telles que ajouter
une valeur dans une variable et stocker le résultat dans la variable.
Une telle opération s'écrirait habituellement de la façon suivante par
exemple: x=x+2.
Avec les opérateurs d'assignation, il est possible d'écrire cette opération
sous la forme suivante: x+=2. Ainsi, si la valeur de x était 7, elle sera 9.
Opérateur Effet
+= addition deux valeurs et stocke le résultat dans la variable
-= soustrait deux valeurs et stocke le résultat dans la variable
*= multiplie deux valeurs et stocke le résultat dans la variable
/= divise deux valeurs et stocke le quotient dans la variable
%= divise deux valeurs et stocke le reste dans la variable
26
Ce type d'opérateur permet de facilement augmenter ou diminuer d'une
unité une variable. Ces opérateurs sont très utiles pour des structures
telles que des boucles, qui ont besoin d'un compteur.
Un opérateur de type x++ permet de remplacer des notations lourdes
telles que x=x+1 ou bien x+=1
Exemple pour x=7
o int y=x++; y est initialisé à 7, puis x est incrémenté à 8
o int y=++x; x est incrémenté à 8, puis y est initialisé à 8
Opérateur Dénomination Effet Syntaxe Résultat
(Int x=7)
++ Incrémentation Augmente d'une x++ ou ++x 8
unité la variable
-- Décrémentation Diminue d'une x-- ou --x 6
unité la variable
27
Dénomination Effet Exemple Résultat
== opérateur Compare deux valeurs et vérifie x==3 Retourne true si x est égal
d'égalité leur égalité à 3, sinon false
< opérateur Vérifie qu'une variable est x<3 Retourne true si x est
d'infériorité strictement inférieure à une valeur inférieur à 3, sinon false
stricte
<= opérateur Vérifie qu'une variable est x<=3 Retourne true si x est
d'infériorité inférieure ou égale à une valeur inférieur ou égal à 3,
sinon false
> opérateur de Vérifie qu'une variable est x>3 Retourne true si x est
supériorité stricte strictement supérieure à une supérieur à 3, sinon false
valeur
>= opérateur de Vérifie qu'une variable est x>=3 Retourne true si x est
supériorité supérieure ou égale à une valeur supérieur ou égal à 3,
sinon false
!= opérateur de Vérifie qu'une variable est x!=3 Retourne true si x est
différence différente d'une valeur différent de 3, sinon false
28
Ce type d'opérateur permet de vérifier si plusieurs conditions sont vraies :
Dénomination Effet Syntaxe
|| OU logique Retourne true si au moins une des deux condition1 ||
conditions vaut true (ou false sinon) condition2
&& ET logique Retourne true si les deux conditions condition1 &&
valent true (ou false sinon) condition2
! NON logique Retourne true si la variable vaut false, !condition
et false si elle vaut true)
29
Ce type d'opérateur traite ses opérandes comme des données binaires, plutôt que des
données décimales, hexadécimales ou octales. Ils traitent ces données selon leur
représentation binaire mais retournent des valeurs numériques standards dans leur
format d'origine.
Dénomination Effet Syntaxe Résultat
& ET bit-à-bit Retourne 1 si les deux bits 9 & 12 (1001 & 1100) 8 (1000)
de même poids sont à 1
| OU inclusif Retourne 1 si l'un ou l'autre 9 | 12 (1001 | 1100) 13 (1101)
des deux bits de même
poids est à 1 (ou les deux)
^ OU exclusif Retourne 1 si l'un des deux 9 ^ 12 (1001 ^ 1100) 5 (0101)
bits de même poids est à 1
(mais pas les deux)
30
Ils effectuent des décalages sur les bits, c'est-à-dire qu'ils décalent chacun des bits d'un
nombre de bits vers la gauche ou vers la droite. La première opérande désigne la donnée
sur laquelle on va faire le décalage, la seconde désigne le nombre de bits duquel elle va
être décalée.
Dénomination Effet Syntaxe Résultat
<< Décalage à Décale les bits vers la gauche (multiplie par 6<< 1 12 (1100)
gauche 2 à chaque décalage). Les bits qui sortent à (00000110 << 1)
gauche sont perdus, tandis que des zéros
sont insérés à droite
>> Décalage à Décale les bits vers la droite (divise par 2 à 6 >> 1 3 (0011)
droite avec chaque décalage). Les bits qui sortent à (00000110 >> 1)
conservation du droite sont perdus, tandis que le bit non-nul
signe de poids plus fort est recopié à gauche
>>> Décalage à Décale les bits vers la droite. Les bits qui 3 >>> 1 1 (0001)
droite avec sortent à droite sont perdus, tandis que des (00000011 >>> 1)
remplissage de zéros sont insérés à gauche
zéros
31
L’opération peut diminuer la généralité (downcasting) du type avec un risque de
perte d’informations. Elle peut également augmenter la généralité (upcasting) du
type (sans aucun risque).
Du moins général au plus général (pour les types primitifs), on a :
Byteshort intlongfloat double
32
Lors d’une affectation, une opération de upcasting implicite peut avoir lieu
(lorsque la partie droite de l’affectation est d’un type moins général).
Par exemple, lors de l’évaluation de :
double x = 15;
la valeur entière 15 est transformée automatiquement en la valeur réelle (double)
15.0 avant d’être affectée à la variable x.
33
Lors de certaines opérations, il est parfois nécessaire d’utiliser explicitement une
opération de transtypage.
Par exemple, l’exécution de : int x=3, y=2;
double z = x/y;
affecte la valeur 1.0 à z
Pour que la valeur 1.5 soit affectée à z, il faut :
double z = (double) x/y;
afin de convertir x en double et que la division soit ainsi une division réelle.
34
Un bloc d'instructions est une séquence d'instructions délimitée par une paire
d'accolades.
Il est possible de déclarer des variables dans un bloc.
La portée (visibilité) d'une variable commence à sa déclaration jusqu'à la fin du
bloc.
35
{ Bloc externe
int i;
… i
{
int j=0; Bloc interne
…
double x = 3.5; j
…
} x
}
36
En Java, il n'est pas possible déclarer des variables homonymes dans deux
blocs imbriqués.
En C/C++, il est possible de le faire :
La variable interne cache la variable externe
Cela constitue une source d'erreur
37
{ Bloc externe
int i =5;
… conflit i
{
int i=0; Bloc interne
… conflit
double x = 3.5; i
…
} x
}
38
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
39
if (Expr1) S1;
else if (Expr2) S2;
else S3;
L’instruction S1 est exécutée si l’expression logique Expr1 est évaluée à vraie.
L’instruction S2 est exécutée si l’expression logique Expr2 est évaluée à vraie.
L’instruction S2 est exécutée si Expr1 et Expr2 sont évaluées à faux.
Exemple: int i=5; int y;
if (i<10) y= i* 100;
else y= i* 10;
//y= i<10 ? i*100:i*10
40
Syntaxe Exemple
int note = 10; //supposant quela note maximale est 20
switch (Expr1)
switch (note){
{
case constante_1: statements_1; case 0: System.out.println("Ouch !");
break; break;
case constante_2: statements_2 case 10: System.out.println(« juste la moyenne.");
break;
case 15: System.out.println(« bonne moyenne.");
…
break;
case constante_N: statements_N;
case 20: System.out.println("Parfait !");
break;
break;
default: statements_default;
default: System.out.println("Il faut travailler.");
}
} 41
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
42
Syntaxe Exemple While
public class WhileTest
while (condition) {
public static void main(String args[])
{
Bs; double r = 0;
while (r < 0.99)
{
une ou un bloc d’instructions r = Math.random();
System.out.println(r);
}
}
}
43
Exemple While
Syntaxe
public class WhileTest
do S1 while (condition); {
public static void main(String args[])
{
Exécuter S1 tant que l’expression int i = 100, j = 0, somme = 0 ;
do{
somme += j;
condition est vraie
j++;
}
while (j <= i);
}
}
44
Exemple
Syntaxe
/** * montre la boucle for" en listant tous les
caractères ASCII */
for (e1; e2; e3) public class ListCharacters
Bs; {
e1 : initialise l’itérateur (compteur), cette public static void main(String args[])
expression n’est exécutée qu’une seule {
fois;
e2 : exprime la condition de test (tant int somme = 0;
qu’elle est vraie on continue la boucle) ;
for (int i=0; i<=100; i++) //la portée de i est limitée au bloc for
elle est vérifiée à chaque itération
e3 : modifie l’itérateur, elle est exécutée à somme+= i;
chaque itération }
}
45
Etiquette : boucle1:
for (int i=0; i<10; i++){
Nom_etiquette: bloc d’instruction; for (int j=0; j<15 j++){
System.out.println(i+“/“+j);
Rupture }}
break ;
break label;
class TestBreak {
Continuation public static void main (String args[]){
continue; bloc1:
continue label; for (int i=0; i<10; i++){
for (int j=0; j<10; j++){
Retourner System.out.println(i+“/“+j);
return; if (j==1) break; // quitte la boucle j
return Expression; if (i==2) break bloc1; // quitte bloc1
}}}}
46
// BreakAndContinue.java
/** les clauses break et continue */
Résultat :
public class BreakAndContinue 0
{
public static void main(String args[]) 9
{
for(int i = 0; i < 100; i++) 18
{ 27
if(i == 74) break; // quitter boucle
if(i % 9 != 0) continue; // iter.suiv. 36
System.out.println(i);
} 45
int i = 0; 54
while(true) {
i++; 63
int j = i * 27;
if(j == 1269) break; // quitter boucle 72
if(i % 10 != 0) continue; // iter.suiv
System.out.println(i); 10
}
20
}
} 30
40
47
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
48
Tableau : est un objet référencé
• Une variable de type tableau n’est pas un type élémentaire (c’est une référence sur un
tableau)
• Déclaration
- type NomTableau[ ] \\ ou type [ ] NomTableau
- type NomTableau[ ][ ]
• Allocation et initialisation
- int T1[ ] = new int [12];
- int T2[ ]= {5,7,-12,8};
• L’attribut length : retourne la taille d’un tableau
49
Allocation et initialisation
int T1 [ ] = new int [12]; \\ allocation dynamique de 12 entiers pour T1
T1
0 0 0 0 0 0 0 0 0 0
50
Exemple Résultat d’exécution
Class Tableau1D
1
{
public static void main(String[] args){
2
int[] tabent={1,2,3}; 3
for (int i=0; i<tabent.length;i++){
System.out.println(tabent[i] + “ “ ); 0
}
System.out.println ();
0
int[] tab2ent= new int [5]; 20
boolean [] tbool= new boolean[3]; 0
tab2ent[2]=20; tab2ent[4]=50;
50
for (int i=0; i<tab2ent.length;i++){
System.out.println(tab2ent[i] + “ “ );
} false
for (int i=0; i<tbool.length;i++){ false
System.out.println(tbool[i] + “ “ );} false
}
}
51
Déclaration identique
Balle [ ] TabBalle = new Balle[6]; \\ un tableau d’éléments pouvant référencer 6 objets de type Balle
La déclaration du tableau ne crée pas les objets référencés
TabBalle
null null null null null null
Les références des objets crées doivent être affectés au tableau par la suite
TabBalle[0] = new Balle(4);
TabBalle[1] = new Balle(6);
…
52
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
53
Une chaine de caractères est définie par la classe String
déclaration:
String prenom = new String("Pierre");
String prenom = "Pierre";
Comparaison:
if (str1.equals(str2))
Concaténation:
String s3 = s1.concat(s2); ou
String mot = message + " et " + "puis s'en vont";
54
PLAN DU CHAPITRE 3
1. La structure d’un programme simple en java
2. Les commentaires
3. Les identificateurs
4. Les Mots réservés
5. Les types de données
6. Les opérateurs
7. Les structures conditionnelles
8. Les structures itératives
9. Les tableaux
10. Les chaînes de caractère
11. La classe Scanner
55
Elle simplifie la lecture de données sur l’entrée standard (clavier) ou dans un
fichier.
Pour utiliser la classe Scanner, il faut d’abord l’importer :
import java.util.Scanner;
Ensuite il faut créer un objet de la classe Scanner :
Scanner sc = new Scanner(System.in);
56
Pour récupérer les données, il faut faire appel sur l’objet sc aux méthodes
next<Type de variable commençant par une majuscule>
Ces méthodes parcourent la donnée suivante lue sur l’entrée et la retourne.
Exemple:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
double d = sc.nextDouble();
long l = sc.nextLong();
byte b = sc.nextByte(); // etc.
La méthode nextLine ( ) récupère le contenu de toute la ligne saisie
La méthode next ( ) récupère le premier mot de la ligne saisie
57
Le type primitif char, n’est pas pris en compte par la classe Scanner
Voici comment on pourrait récupérer un caractère :
System.out.println("Saisissez une lettre :");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char carac = str.charAt(0);
System.out.println("Vous avez saisi le caractère : " + carac);
58
Merci pour votre attention !