Bases de la programmation Java Plan

publicité
Bases de la programmation
Java
Introduction
Bases de la programmation Java
Plan
1
Informations utiles
3
Présentation du langage Java
2
4
5
6
Introduction
Langages de haut niveau
Syntaxe de base
Un langage Objets / Valeurs
Les tableaux en Java
2
1
Bases de la programmation Java
Introduction
1. INFORMATIONS UTILES
Enseignement
l
l
l
Cours → 9 séances de 2 heures
Travaux dirigés → 11 séances de 2 heures
Projet → à faire en groupe
Enseignant (pour le cours)
l
l
l
l
l
Yann Viémont
Bt. Descartes — Bureau 304-a — Poste 54046
Laboratoire PRiSM — CNRS UMR 8144
Http://www.prism.uvsq.fr/~viemont
GSM : 06 19 14 32 57 (pour les cas d ’urgence)
3
Bases de la programmation Java
Introduction
Programme de l’ UE7-Info
Bases de la programmation Java
l
Syntaxe de base (rappels)
l
Tableaux complexes en Java
l
Notions d ’objets (rappels)
La programmation objet en Java
l
l
Interfaces et polymorphisme
Héritage
l
Classes abstraites
l
Listes
Structures de données abstraites et implémentations Java
l
l
Piles
Files
4
2
Bases de la programmation Java
2.
Introduction
LANGAGES DE HAUT NIVEAU
Avantages
l
l
l
l
l
l
Compréhensible par l’homme (non binaire)
Indépendant des matériels
Manipulation des données complexes (entiers, réels,
tableaux, objets : dessins, livres, …)
Manipulation des expressions complexes (A*B)/C
Mécanismes élaborés d’enchaînement des instructions
Organisation des programmes (modularité, visibilité,
protection, …)
Nécessite un traducteur (compilateur / interpréteur)
5
Bases de la programmation Java
Compilateur
Le code source est indépendant de la
machine
La compilation est faite une fois pour toutes
Le code objet est du binaire dépendant du
codage et des instructions de la machine
cible
Le chargeur adapte le code objet aux
adresses mémoires réellement utilisées pour
chaque exécution demandée
L’objet devient une suite de 0 et de 1 en
mémoire
Introduction
Code
source
(fichier)
Compilateur
Objet
(fichier)
Chargeur
Machine cible
Objet
(mémoire)
6
3
Bases de la programmation Java
Introduction
Interpréteur
L’interpréteur est lui-même un
programme source qui a été
compilé puis chargé sur la
machine
Le programme a interpréter
correspond aux données de
l’interpréteur qui s’exécute
L’exécution est plus lente car la
traduction est faite à chaque
lancement du programme
Code
source
(fichier)
Machine cible
Interpréteur
(objet en
mémoire)
Source
(données en
mémoire)
7
Bases de la programmation Java
Introduction
Cas des boucles
Boucle
Chaque instruction du
programme source est traduite
(interprétée) au fur et à mesure
En cas d’itération (boucle), la
même instruction est
réinterprétée à chaque passage
Interprétation
Exécution
La pénalité de performance est
importante
8
4
Bases de la programmation Java
Et le langage Java ?
Introduction
Le source Java est « compilé »en code-octet (byte code)
correspondant aux instructions d ’une machine virtuelle
A
La machine virtuelle est un programme source compilé
pour chaque type de couple
(machine physique + système d’exploitation)
La machine virtuelle fournit un environnement de programmation
standard
l
l
l
Gestion de la mémoire (ramasse-miette)
Gestion des entrées / sorties (disque, écran, clavier, …)
Interface avec le système d’exploitation
9
Bases de la programmation Java
Introduction
Interprétation optimisée
toto.java
javac
Code
source
(fichier)
Compilateur
toto.class
Machine cible
Code
-octet
(fichier)
java toto.class
Machine virtuelle
(objet en
mémoire)
Code-octet
(données en
mémoire)
La pénalité de performance est très fortement réduite
10
5
Bases de la programmation Java
Introduction
Beaucoup plus qu’un langage
Java est un langage orienté-objet récemment introduit par
SUN et rendu disponible dans le domaine public.
Java est un :
l
l
Langage complet à tout faire
Environnement de programmation très développé
comprenant de nombreuses bibliothèques standards
l
Véritable système d ’objets distribués
l
Interagir simplement avec le Web
Java permet d’ :
l
Accéder et fournir des services simplement au travers
du réseau
11
Bases de la programmation Java
Historique
Introduction
Java a commencé avec le projet Green en 1991
l
Langage Oak est destiné au logiciel intégré aux
appareils électroménagers et audio / vidéo
Adaptation à la technologie Web
l
l
l
l
Intégration à un navigateur Web (HotJava 1994)
Création des applets
Extension du langage renommé Java (version 1)
Définition du « byte code » en 1995
l
Premier JDK (atelier de développement) en 1996
l
Environnement complet de développement
Nouvelle plate-forme Java2
l
l
Déploiement d’applications distribuées
Services Web
12
6
Bases de la programmation Java
Introduction
Logiciel pour appareillage électronique
Machine
de
développement
Code
source
Problèmes :
Plusieurs versions de source
selon les systèmes
d ’exploitation
l
Compilation spécifique pour
chaque plate-forme
l
Machine
à laver
Micro-onde
Objet 1
Gestion des versions
l
Coûts de développement
prohibitifs
l
Objet 3
Magnétoscope
Objet 2
13
Bases de la programmation Java
Solution Oak
Machine
de
développement
Machine
à laver
Machine
virtuelle
Objet
Introduction
Code
source
Micro-onde
Magnétoscope
Machine
virtuelle
Objet
Machine
virtuelle
Objet
14
7
Bases de la programmation Java
Transposition au Web
Poste
client
Browser + JVM
Web
Applet
Introduction
Poste
serveur
Application
Java
téléchargeable
Chargement
Chargementdynamique
dynamiqued’une
d’uneapplication
application
15
Bases de la programmation Java
Introduction
3. PRÉSENTATION DU LANGAGE
Points forts de Java :
l
l
l
l
l
l
Simplicité
Orientation objets
Grande sécurité
Portabilité
Performances
Parallélisme
16
8
Bases de la programmation Java
Simplicité
Introduction
Le langage Java :
l
l
l
l
l
Reprend la syntaxe de base de C
Possède une grande cohérence de conception
Offre un nombre limité de constructions non
redondantes
Rend la gestion de la mémoire transparente
Ne demande aucun précompilateur
17
Bases de la programmation Java
Orientation objets
Introduction
Java reprend le meilleur des concepts objets les plus simples
l
l
l
l
l
l
Langage de programmation inspiré d’Objective C et de
C++
La définition d’interfaces est supportée en natif
Tout est une classe, un objet, une variable d’instance
ou une méthode
Le modèle soujascent est un modèle objet / valeur
L ’encapsulation est complètement contrôlable par le
programmeur
Les librairies systèmes sont des classes qui rendent
le langage extensible à l’infini
18
9
Bases de la programmation Java
Sécurité
Introduction
La grande majorité des erreurs de programmation courantes
sont décelées par l ’interpréteur
l
l
l
Java est fortement typé
Les indices de tableau ne peuvent déborder
Pas de calcul d ’adresse
l
Toutes les variables sont initialisées
l
Modèle Bac-A-Sable (Sand box)
La machine virtuelle contrôle les actions de l’application
l
Permissions définies dans un fichier
19
Bases de la programmation Java
Portabilité
Introduction
Java comporte une spécification très stricte de la JVM
l
l
l
l
Java est interprété
Le code-octet est indépendant de la plate-forme
Pas de comportement spécifique à une implémentation
L ’API est constituée de librairies standards extensives
20
10
Bases de la programmation Java
Performance
Introduction
Grâce au code-octet, l’interpréteur ne conduit qu’à une faible
perte de performance
De plus on dispose maintenant de :
l
l
Compilateurs « juste-à-temps » (JIT : just in time)
Compilateurs natifs
La gestion de l ’interface homme/machine est fortement
optimisée dans les bibliothèques de l’API
Les JVM disponibles savent utiliser les bibliothèques
performantes pour le graphisme, l’audio, la vidéo
l
l
Open GL
MPEG-4
21
Bases de la programmation Java
Introduction
4. SYNTAXE DE BASE (rappels)
La syntaxe de base comprend :
l
Les expressions
– Types de base
– Constantes
– Variables
– Opérateurs
l
Les instructions
– Instructions simples (déclarations, affectations, …)
– Instructions conditionnelles
– Instructions itératives
l
l
Les tableaux
Les méthodes
22
11
Bases de la programmation Java
Types de base
Introduction
Java est un langage fortement typé :
toute donnée manipulée est typée et ne peut échapper à
son type que par conversion implicite ou explicite.
Conversions implicites :
l
l
l
Augmentation de la précision (p.e. int --> long)
En maths les entiers sont des réels (p.e. int --> float)
Les expressions sont calculées dans le type le plus général
de ses composants
23
Bases de la programmation Java
Types numériques
Entiers
l
l
l
byte
(complément à deux sur 8 bits)
int
(complément à deux sur 32 bits)
short
l
long
l
float
Introduction
(complément à deux sur 16 bits)
(complément à deux sur 64 bits)
Réels (mantisse + exposant)
l
(standard IEEE 754 sur 32 bits)
double (standard IEEE 754 sur 64 bits)
24
12
Bases de la programmation Java
Types non numériques
Booléens
l
boolean
(true ou false)
l
Caractères
Introduction
char
byte
(codage Unicode sur 16 bits)
l
l
String
(en fait une classe prédéfinie
mais munie d'une syntaxe spéciale)
(peut être utilisé pour stocker de l'ascii)
25
Bases de la programmation Java
Constantes
Introduction
l
byte, short ou int en décimal, octal ou hexadécimal :
l
long (idem avec un "l" ou un "L" à la fin)
l
double en décimal ou en scientifique
l
simple (idem avec un "f" ou un "F" à la fin)
l
char
l
boolean
– 0, 104, -1098, 0777, 0xAF
– 0L, -47652913476L, 0x3FFFFFFFFFFFL
– 35.99, -0.0007, 2., 1.628E6, -0.7803E-3
– 3.14159F
– 'c', '\t', '\u0x61'('a')
– true ou false
26
13
Bases de la programmation Java
Variables
Introduction
Une variable est une donnée manipulée par son nom (identificateur)
i, j, x, var1, delta, périmêtre,
primeDeTransport, DENSITÉ_DU_PLOMB
Les variables sont déclarée
l
int i, j ;
double x ;
l
Affectée
l
Initialisée
i = 12 ;
j = 3*i + delta ;
int i = 12 ;
final float DENSITÉ_DU_PLOMB = 11.35F ;
27
Bases de la programmation Java
Introduction
Expressions numériques
int i, j ; float a, b ; double x, y ;
l
Expressions entières :
long m = 3 * i * (j + 6) ;
int k1 = (int) m % 1000 ;
int k2 = (int) (m % 1000) ;
long p = (long) c + m / -27 ;
l
Expressions réelles :
double z = 3.53 * i + (a - b) / x ;
float c = (float) (-2*i*y + 4.54749E8*a) ;
double s = java.lang.Math (c) ;
28
14
Bases de la programmation Java
Introduction
Expressions booléennes
l
Comparaisons numériques
l
Comparaison de référence d'objets
l
Expressions logiques (avec simplification)
l
Expressions logiques (sans simplification)
Exemples :
==
!= <
==
!= instanceof
&&
||
&
|
>
<=
>=
!
~
((a >= 1E10) || ((b != 0d) && (a/b > 0.2)))
(monObjet == null) || !(monObjet instanceof MaClasse)
(--i > 0) & (--j > 0) // dangereux !
29
Bases de la programmation Java
Expressions binaires
Introduction
Les expressions binaires permettent de manipuler des valeurs
entières comme des chaînes de bits en effectuant
l
l
Exemple :
Décalages :
Masquages :
<<
&
>
|
>>>
^
~
final int VU = 1 ;
final int PRIS = 1 << 1 ;
int état = … ;
boolean pasVuPasPris =
(état & (VU | PRIS)) == 0 ;
30
15
Bases de la programmation Java
Introduction
Expressions chaînes de caractères
Bien que le type String soit en fait une classe, il est muni d'une
syntaxe particulière
l
Constante chaîne
l
Opération de concaténation
String s1 = "exemple de conca" ;
String s2 = s1 + "ténation" ;
31
Bases de la programmation Java
Affectations
Introduction
L'affectation permet d'initialiser et de modifier des variables
int i = 12 ;
périmètre = 2 * PI * rayon ;
l
On peut utiliser des raccourcis : (var1 op= var2) est
équivalent à (var1 = var1 op var2) pour += -= *=
/= %= &= |= ^= <<= >>= >>>=
i *= 3 ;
// comme i = 3*i ;
l
Une affectation est une expression qui vaut sa partie droite
l
Les opérateurs d'incrémentation / décrémentation ++
modifient directement la valeur d'une variable entière
i = j = k = 0 ;
// comme i = (j = (k = 0))
--
i++ ; // comme i += 1 ; ou encore i = i + 1 ;
(i-- > 0) & (++j < max)
32
16
Bases de la programmation Java
Introduction
Expression conditionnelle
Prend une valeur parmi deux selon une condition
l
l
l
Pour les habitués de C et C++
Peu lisible — sauf dans les cas les plus simples
Syntaxe
expr_bool ? expr_vrai : expr_faux
Exemple :
int maxAB = (a>b) ? a : b ;
33
Bases de la programmation Java
Résumé des opérateurs
Arithmétique :
Comparaison :
Logique booléenne :
Décalage :
Logique binaire :
Affectation :
Incrémentation :
Conditionnel :
Autre :
+
==
-
&
/
!= <
&&
<<
*
||
>>
|
^
!
~
= += -=
>>= >>>=
++
--
[]
.
?:
>
%
<=
>=
Introduction
instanceof
>>>
*=
() new
/=
%=
&=
|=
^=
<<=
(type)
34
17
Bases de la programmation Java
Précédences
Opérateurs post-fixés
Opérateurs unaires
Création ou conversion
Multiplicatifs
Aditifs
Décalage
Comparaison
Egalité
ET binaire
OU exclusif binaire
OU inclusif binaire
ET logique
OU logique
Conditionnel
Affectation
Introduction
[] . (params) expr++ expr-++expr --expr +expr -expr ~ !
new (type)expr
* / %
+ << >> >>>
< > <= >= instanceof
== !=
&
^
|
&&
||
? :
= += -= *= /= %= &= ^= |= <<=
>>= >>>=
35
Bases de la programmation Java
Parenthésage
Introduction
Un opérande peut être remplacé par une expression
l
l
De même type
Entre parenthèses
Les règles de précédences induisent un parenthésage implicite
ex1 = a * b + c / d ;
// = (a * b) + (c / d)
ex2 = a > b && cond || a + c == 12 ;
// = (a>b) && (cond || ((a+c) == 12))
Les opérateurs de même précédence sont évalués de gauche à droite
ex3 = a / b * c ;
// = (a / b) * c ≠ a / (b * c)
Les affectations sont évaluées de droite à gauche
36
18
Bases de la programmation Java
Instructions
Introduction
Une instruction est une unité d'exécution du langage
Elle se termine par un ;
l
Certaines expressions forment des instructions valides
l
– Affectation
– Incrémentation / décrémentation
– Appel de méthode
– Création dynamique d'objet
Une déclaration de variable est une instruction
l
Les instructions sont normalement exécutées en séquence
l
Les instructions de contrôle permettent de modifier l'ordre
d'exécution
l
Les instructions peuvent être regroupées
l
37
Bases de la programmation Java
Organisation en blocs
Introduction
Plusieurs instructions peuvent être regroupées en bloc
l
l
l
l
Les blocs sont délimités par { … }
Un bloc est toujours admis à la place d'une instruction
On obtient une structure de blocs imbriqués
Cette structure définit des règles de visibilité
{ double droit = Math.PI / 2. ;
angle += droit ;
float cos = (float) Math.sin (angle) ;
}
…
38
19
Bases de la programmation Java
Portée des variables
Introduction
Une variable n'est pas définie hors du bloc où elle est déclarée
Un nom de variable peut être réutilisé dans une déclaration dans un
bloc imbriqué
Une nouvelle variable indépendante est crée
l
Cette variable masque la précédente (externe)
{ int x = 14 ;
int y = 0 ;
{ int x = 10 ;
y++ ; // = 1
x += y ; // = 11
}
y++ ; // = 2
x++ ; // = 15 et non 12
…
l
Bases de la programmation Java
39
Introduction
Instructions de contrôle
L'ordre d'exécution du programme est contrôlé par
l
Tests
– Condition
l
Exceptions
l
Branchements
– Alternative
– Aiguillage
l
Boucles
– Pré-condition
– Post-condition
– Itérateur
– Déclenchement
– Capture
– Appel
– Retour
– Rupture
40
20
Bases de la programmation Java
Introduction
Instructions conditionnelles
Condition simple : if (condition) instruction
max = a ;
if (a < b)
max = b ;
Alternative : if (condition) instruction else instruction
if (a > b)
max = a ;
else
max = b ;
41
Bases de la programmation Java
Aiguillages
switch (var) {
case val1 : instructions
case val2 : instructions
case val3 : …
default : instructions
}
Introduction
static final int NORD = 0 ;
static final int EST = 1 ;
static final int SUD = 2 ;
static final int OUEST = 3 ;
…
switch (orientation)
{ case NORD : y++ ; break ;
case EST : x++ ; break ;
case SUD : y-- ; break ;
case OUEST : x-- ; break ;
}
42
21
Bases de la programmation Java
Introduction
Enchaînement des voies
switch (mois)
{ case 2 :
if (bissextile (année)) nbJours = 29 ;
else nbJours = 28 ;
break ;
case 4 : case 6 : case 9 : case 11 :
nbJours = 30 ; break ;
}
default : nbJours = 31 ;
43
Bases de la programmation Java
Boucles
Introduction
Pré-condition : while (condition) instruction
boolean trouvé = false ;
while (!trouvé)
trouvé = anpe.rechercher (emploi) ;
Post-condition : do instruction while (condition)
boolean trouvé ;
Do // fait au moins 1 fois
trouvé = anpe.rechercher (emploi) ;
while (!trouvé)
44
22
Bases de la programmation Java
Itérateurs
Introduction
for (initialisation ; condition ; itération) instruction
La boucle "for" offre une syntaxe élégante pour écrire une itération
l
Contrôlée par une variable compteur
static final int N = 20 ;
factorielleN = 1 ;
for (int i = 1 ; i <= N ; i++)
factorielleN *= i ;
l
Contrôlée par une interface appropriée
for (Elément e = liste.premier () ;
e != null ; e = liste.suivant ())
e.afficher () ;
Bases de la programmation Java
Capture des exceptions
45
Introduction
Java fournit un mécanisme d'exception
l
l
Une exception peut être levée ou capturée
La capture suit une syntaxe de bloc
try { instructions dangeureuses }
catch (exception) { traitement d'erreur }
finally { instructions de fin }
46
23
Bases de la programmation Java
Ruptures
Introduction
Les ruptures sont utiles pour
l
Eviter de faire du travail inutile
l
Simplifier le code
l
D'un niveau de bloc par défaut
break permet de sortir d'un aiguillage ou d'une boucle
l
De plusieurs niveaux à l'aide d'une étiquette
l
D'un niveau de boucle par défaut
continue permet de passer à l'itération suivante
l
De plusieurs niveaux à l'aide d'une étiquette
l
Quel que soit le niveau de bloc où le return se trouve dans
la méthode
return permet de sortir d'une méthode
47
Bases de la programmation Java
Introduction
5. UN LANGAGE OBJETS / VALEURS
Java est construit sur deux concepts de base :
l
l
Les objets
Les valeurs
Cette distinction traverse tout le langage et toutes les
constructions.
La manipulation des valeurs se fait directement :
int i = 4 ;
int j = i * 1000 ;
La manipulation des objets de fait par référence :
Object o ; // référence nulle au départ
o = new Object () ; // o référence un nouvel
objet créé dynamiquement
48
24
Bases de la programmation Java
Introduction
Valeurs
Définition : une valeur est un élément d ’un type de base
(prédéfini) du langage
Les types prédéfinis sont :
char, byte, short, int, long
float, double, boolean, void
l
l
l
Les variables correspondantes peuvent être
directement affectées
Les paramètres de ces types sont transmis par valeur
Le typage est strict
49
Bases de la programmation Java
Introduction
Exemple
int x ;
x = 46 ;
float pi = 3.1416F ;
x
0
x
46
pi
3.1416
50
25
Bases de la programmation Java
Typage strict
Introduction
int a = 3 ;
float x = 1.25F ;
int b = a + x ;
// ERREUR !
Si le programmeur sait ce qu’il fait, il peut écrire :
int b = a + (int) x ;
// ce qui fait 4 !
float y = a + x ;
// dans ce sens c’est permis
// et on obtient bien 4.25
51
Bases de la programmation Java
Objets
Introduction
Définition : les objets sont des instances de classes
l
l
l
l
l
l
Ils sont crées et détruits dynamiquement par la JVM
Ils sont accédés par des références
La notation pointée permet le déréférencement
Une référence n’est pas un pointeur
Les références sont fortement typées
Les paramètres objets sont transmis par référence
52
26
Bases de la programmation Java
Introduction
Exemple
class Simplissime
{ int i = 0 ;
void incrémente ()
{ i++ ; }
}
…
Simplissime o1 ;
o1 = new Simplissime () ;
o1.i = 18 ;
o1.incrémente () ; // donc 19
o1 = new MonAutreClasse () ; // interdit !
53
Bases de la programmation Java
Introduction
Exemple (suite)
o1
o1
null
0
incrémente ()
o1
18
incrémente ()
o1
19
incrémente ()
54
27
Bases de la programmation Java
6. LES TABLEAUX
Introduction
Un tableau est une structure qui comporte plusieurs éléments de
même type
La taille du tableau est déterminée au moment de sa création
dynamique
Après sa création, un tableau est une structure de taille fixe
55
Bases de la programmation Java
Tableaux = objets
Introduction
Un tableau Java est un objet Java
l
l
l
Extension implicite de la classe Object
Créé par un new
Manipulé par référence
l
Intégré au langage avec une syntaxe particulière
l
La longueur
l
Le tableau proprement dit qui est encapsulé
Un tableau Java tab contient deux variables
l
tab.length
La notation indicée permet d'accéder aux éléments
tab [indice]
56
28
Bases de la programmation Java
Type des éléments
Introduction
Un tableau Java est typé : ses éléments sont uniformément typés
Les éléments d'un tableau sont soit des valeurs soit des objets
l
Valeurs d'un même type de base
l
Objets d'une même classe
l
Objets particuliers : tableaux de même type
char [], byte [], short [], int [], long [],
float [], double [], boolean []
Object [], String [], Frame [], Point [], …
==> Tableaux à plusieurs dimensions
int [] [], int [] [] []
57
Bases de la programmation Java
Représentation interne
Introduction
En interne, un tableau comporte deux variables d'instance
l
La longueur sur un int
l
La suite des éléments
l
Valeurs d'un même type de base
l
Objets d'une même classe
l
Tableaux de même type
Les éléments d'un tableau sont rangées en séquence
– Ces valeurs sont rangées en séquence
– Les références à ces objets sont rangées en séquence
– Les références aux tableaux sont rangées en séquence
L'accès à un élément particulier se fait par un calcul d'adresse à partir
de son indice
58
29
Bases de la programmation Java
Référence de tableau
Introduction
Une référence de tableau est typée
l
Par le type du tableau (de ses éléments)
l
Le type du tableau ne détermine pas sa taille
l
Le tableau doit ensuite être créé dynamiquement d'une
taille donnée
Une référence de tableau est déclarée et initialisée à null par défaut
l
Une même référence peut être utilisée successivement
– Pour des tableaux différents
– Pour des tableaux de tailles différentes
59
Bases de la programmation Java
Tableau de valeurs
tab
int [] tab ;
tab
tab = new int [n] ;
tab [3] = 10 ;
A l'initialisation, le tableau d'entiers est
un tableau de valeurs 0
Introduction
null
taille = n
0
1
2
3
4
n-1
0
0
…
…
0
…
0
…/ 10
…
0
…
…
…
…
0
60
30
Bases de la programmation Java
Introduction
La variable tableau est une référence
taille = n
tab
0
1
tab = {7, 8, 9} ;
2
3
taille = 3
La variable tab référence un
nouveau tableau
Le premier tableau est récupéré par
le ramasse-miette
0
7
2
9
1
4
8
n-1
0
0
…
…
0
…
0
…/ 10
…
0
…
…
…
…
0
61
Bases de la programmation Java
Syntaxe
l
Déclaration
l
Création
l
Déclaration + création
l
Création des éléments
Introduction
int [] tab ;
tab = new int [N] ;
int [] tab = new int [N] ;
// les int sont crées avec le tableau
// ils valent 0 au départ
l
Initialisation à l'aide d'une constante tableau
int [] tab = {12, 0, 23, 1, -2, 0, 10} ;
62
31
Bases de la programmation Java
Itération sur un tableau
Introduction
La boucle for est utilisée de façon "canonique" pour parcourir les
éléments d'un tableau
Ex :
int [] tab = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ;
int somme = 0 ;
for (int i = 0 ; i < tab.length ; i++)
somme += tab [i] ;
63
Bases de la programmation Java
Introduction
Tableau d'objets
tab
Simplissime [] tab ;
tab
tab = new Simplissime [n] ;
tab [3] = new Simplissime
() ;
tab [3].incrémente () ;
A l'initialisation, le tableau d'objets est
un tableau de références nulles
null
taille = n
0
1
2
3
4
n-1
null
null
…
…
null
…
null
/…
…
null
…
…
…
…
0/ 1
incrémente ()
null
64
32
Bases de la programmation Java
Syntaxe
l
Déclaration
l
Création
l
Déclaration + création
l
Création des éléments
Introduction
MaClasse [] tab ;
tab = new MaClasse [N] ;
MaClasse [] tab = new MaClasse [N] ;
for (int i = 0 ; i < tab.length ; i++)
tab [i] = new MaClasse (…) ;
65
Bases de la programmation Java
Syntaxe (suite)
l
Introduction
Initialisation à l'aide d'une constante tableau
MaClasse unObjet = new MaClasse (…) ;
MaClasse [] tab =
{ new MaClasse (…),
unObjet,
new MaClasse (…),
unObjet
} ; // soit 4 éléments pour 3 objets
66
33
Bases de la programmation Java
Références multiples
tab
taille = n
0
1
2
3
4
n-1
…
…
null
…
…
…
…
…
…
…
null
Introduction
0
incrémente ()
1
incrémente ()
14
incrémente ()
67
Bases de la programmation Java
Introduction
Tableaux multidimensionnels
Un élément de tableau peut lui même être un tableau
l
Le tableau peut être N-dimensionnel régulier
double [][] matrice = new double [3][3] ;
float [][][] valeurChamp =
new float [100][100][100] ;
l
Le tableau peut être N-dimensionnel irrégulier
l
Le "tableau" peut former une hiérarchie de hauteur variable
int [][] triangle5 =
{ {1},
{1, 1},
{1, 2, 1},
{1, 3, 3, 1},
{1, 4, 6, 4, 1} } ;
68
34
Bases de la programmation Java
Tableau 2D de valeurs
tab
Introduction
taille = 5
taille = 3
0
1
2
3
4
0
1
2
int [][] tab ;
tab = new int [3][5] ;
tab [1][1] = 10 ;
taille = 5
taille = 5
0
1
2
3
4
0
0
0
0
0
0
1
2
3
4
0
0
0
0
0
0
0
0
0
0
69
Bases de la programmation Java
Introduction
Triangle de Pascal
1
1
1
1
3
1
Le triangle est définit par les équations
suivantes :
Ci,j = 1
Ci,j = C i-1,j-1 + Ci-1,j
si j=1 ou j=i
si 1<j<i
1
1
1
1
2
1
4
6
3
1
4
1
5 10 10 5
1
6 15 20 15 6
1
7 21 35 35 21 7
1
… … … … … … … … …
70
35
Bases de la programmation Java
Tableau 2D irrégulier
Introduction
class TriangleDePascal
{
int [][] triangle ;
TriangleDePascal (int nbl)
{ if (nbl < 0) return ;
triangle = new int [nbl][] ;
for (int i = 0 ; i < nbl ; i++)
{ triangle [i] = new int [i + 1] ;
triangle [i][0] = 1 ;
for (int j = 1 ; j < i ; j++)
triangle [i][j] =
triangle [i - 1][j - 1] +
triangle [i - 1][j] ;
triangle [i][i] = 1 ;
}
}
71
Bases de la programmation Java
Introduction
Tableau 2D irrégulier — Figure
Triangle5
taille = 1
taille = 5
0
0
1
2
3
4
taille = 2
taille = 3
taille = 5
0
1
2
3
4
1
4
6
4
1
taille = 4
0
1
2
3
1
3
3
1
1
0
1
2
0
1
1
1
1
2
1
72
36
Bases de la programmation Java
Introduction
Itération sur un tableau irrégulier
public String toString ()
{ String s = "" ;
for (int i = 0 ; i < triangle.length ; i++)
{ s += "(" + triangle [i][0] ;
for (int j = 1 ; j < triangle [i].length ; j++)
s += ", " + triangle [i][j] ;
s += ")\n" ;
}
return s ;
}
} // fin classe TriangleDePascal
73
Bases de la programmation Java
Tableaux dangereux
Introduction
Un élément de tableau peut lui même être un tableau
l
l
l
Le tableau peut être N-dimensionnel régulier
Le tableau peut être N-dimensionnel irrégulier
Le "tableau" peut former une hiérarchie de hauteur variable
Object [] bizarre =
{valeurChamp, matrice, new Simplissime (),
unObjet, triangle} ;
74
37
Téléchargement