CCI - Initiation à Java

chuckleelephantbutteSoftware and s/w Development

Jun 9, 2012 (5 years and 5 months ago)

438 views

CCI - Initiation`a Java
CCI - Initiation`a Java
E.Coquery
emmanuel.coquery@liris.cnrs.fr
CCI - Initiation`a Java
Pr´esentation du langage
Outline
1
Pr´esentation du langage
2
Types de donn´ees primitifs
3
Objets
CCI - Initiation`a Java
Pr´esentation du langage
Un langage orient´e objet
La notion d’objets et de classes centrale en Java
Un fichier Java correspond normalement`a une classe.
Une application Java est consitu´ee d’un ensemble de classes.
Lancer une application Java consiste`a appeler une m´ethode
particuli`ere de la classe correspondant au programme`a
ex´ecuter.
CCI - Initiation`a Java
Pr´esentation du langage
Une syntaxe proche du C
D´eclarations de variables similaire au C:
type
nom
;ou
type
nom
=
val
;
Structures de contrˆole du C:
if (
condition
) {...} else {...}
switch (
expr
) {
case
cas1
:...;
break;
case
cas2
:...;
break;
...
default:...
}
while (
condition
) do {...}
for (
init
;
test
;
modif
) {...}
Commentaires C/C++:
//
commentaire jusqu’`a la fin de la ligne
/*
commentaire pouvant tenir
sur plusieurs lignes
*/
CCI - Initiation`a Java
Pr´esentation du langage
Des application portables
“Write Once,Run Everywhere”
Compilation d’une application Java:
Un fichier.class par classe de l’application.
Contient du bytecode ind´ependant de la plateforme.
Ex´ecution d’une application:
Java Virtual Machine (JVM)
⇒ Ex´ecution sur toute plateforme poss´edant une JVM.
Performance:recompilation`a la vol´ee du bytecode vers du
code natif (Hotspot).
CCI - Initiation`a Java
Pr´esentation du langage
Gestion de la m´emoire automatis´ee
Pas de pointeurs explicites en Java
La notion de r´ef´erence reste pr´esente
Les JVM int`egrent un ramasse-miettes (Garbage Collector)
Lib`ere automatiquement la m´emoire occup´ee par les
structures de donn´ees qui ne sont plus utilis´ees.
CCI - Initiation`a Java
Pr´esentation du langage
Un langage r´epandu
JVM sur Windows,Mac OS,Linux et d’autres
Biblioth`eque standard Java tr`es fournie:
Structures de donn´ees
Entr´ees sorties
R´eseau
Bases de donn´ees,XML
Interfaces graphiques
Nombreuses autres biblioth`eques disponibles
IDEs ´evolu´ees:Netbeans,Eclipse,JBuilder,...
Pages Web dynamiques et serveurs d’applications en Java
CCI - Initiation`a Java
Types de donn´ees primitifs
Outline
1
Pr´esentation du langage
2
Types de donn´ees primitifs
3
Objets
CCI - Initiation`a Java
Types de donn´ees primitifs
Types de base
En plus des objets,Java inclus des types de base:
Types num´eriques (sign´es):
byte (8 bits),short (16 bits),int (32 bits),long (64 bits)
float (32 bits),double (64 bits)
Caract`eres:type char
cod´e sur 16 bits en utilisant le standard unicode.
Peuvent ˆetre manipul´es comme des entiers non sign´es
Bool´eens:type boolean (true et false)
Les bool´eens ne sont pas des entiers en Java
L’impl´ementation des types est standard
ne d´epend pas de la JVM (ni de la plateforme)
⇒ meilleure portabilit´e
CCI - Initiation`a Java
Types de donn´ees primitifs
Tableaux
D´eclaration:
type
[]
nom
;
int [] monTableau;
Cr´eation:new
type
[
taille
]
monTableau = new int [10];
Cr´eation avec valeurs:{
val
1
,
val
2
,...,
val
n
}
ou new
type
[] {
val
1
,
val
2
,...,
val
n
}
int [] autreTableau = {3,5,1,3,8};
Acc`es:
nom
[
index
]
int unNombre = monTableau[3] + 1;
monTableau[7] = unNombre * 5;
Une erreur survient si on acc`ede hors des cases du tableau
CCI - Initiation`a Java
Types de donn´ees primitifs
Tableaux (2)
Taille:
nom
.length
int tailleDuTableau = monTableau.length;
Tableaux multidimensionnels (tableaux de tableaux):
int [][] tableauDeuxDimensions;
tableauDeuxDimensions = new int [10][20];
tableauDeuxDimensions = new int [10] [];
tableauDeuxDimensions[0] = new int[5];
CCI - Initiation`a Java
Types de donn´ees primitifs
Tableaux et r´ef´erences
Une variable tableau est une r´ef´erence vers le tableau:
int [] tab1 = {0,1,2,3};
int [] tab2 = new int [tab1.length];
for (int i = 0;i < tab1.length;i++)
{ tab2[i] = tab1[i];}
tab1[2] = 9;tab2[2] vaut toujours 2.
int [] tab1 = {0,1,2,3};
int [] tab2 = tab1;
tab1[2] = 9;tab2[2] vaut 9.
CCI - Initiation`a Java
Objets
Outline
1
Pr´esentation du langage
2
Types de donn´ees primitifs
3
Objets
CCI - Initiation`a Java
Objets
Qu’est qu’une classe Java?
Pas un objet,plutˆot un type:
on peut le voir comme un struct C am´elior´e.
Mais surtout un sch´ema pour cr´eer des objets.
Dans une classe,on d´efini:
Des variables d’instance (ou champs,ou attributs)
type
nom
;
´eventuellement avec une valeur par d´efaut:
type
nom
=
val
;
ex:double x = 3.0;
Des m´ethodes:fonctions qui sont li´ees`a un objet.
Des m´ethodes particuli`eres servant`a l’initialisation des objets
cr´e´es:les constructeurs
CCI - Initiation`a Java
Objets
Exemple de classe
public class Point {
double x;//attribut
double y;//attribut
public Point() {//constructeur
x = 0.0;//initialisation de x
y = 0.0;//initialisation de y
}
public Point(double abscisse,double ordonnee) {//constructeur
x = abscisse;
y = ordonnee;
}
public double getDistanceOrigine() {//methode
double sommeCarres = x*x+y*y;
return Math.sqrt(sommeCarres);
}
public void afficheDistance() {//methode
System.out.println(getDistanceOrigine());
}
}
CCI - Initiation`a Java
Objets
Qu’est qu’une instance d’une classe?
C’est un objet cr´e´e en utilisant cette classe comme sch´ema de
construction.
Tout objet est une instance d’une certaine classe.
Cet objet poss`ede tous les champs et m´ethodes d´efinis dans
cette classe.
CCI - Initiation`a Java
Objets
Utilisation des objets
Variable contenant un objet:
Classe
nom
;
Point monPoint;
Comme pour les tableaux,la variable contient une r´ef´erence
vers l’objet.
Cr´eation d’un objet:new
Classe
(
arg
1
,
...
,
arg
n
)
monPoint = new Point(2.0,3.0);
Appel au constructeur Point`a deux arguments
Acc`es`a un champ:
objet
.
champ
monPoint.x = monPoint.y * 2;
Utilisation d’une m´ethode:
objet
.
methode
(
arg
1
,
...
,
arg
n
)
monPoint.afficheDistance();
CCI - Initiation`a Java
Objets
Le mot clef static
Normalement les m´ethodes et les champs sont li´es`a des
objets.
L’utilisation de static permet d’attacher un champ ou une
m´ethode`a une classe.
L’utilisation est similaire au champ et m´ethodes non
statiques:
on remplace simplement l’objet par la classe:
Classe
.
champ
System.out
Classe
.
methode
(
arg
1
,
...
,
arg
n
)
Math.sqrt(4.0);
Attention:une m´ethode statique ne peut pas utiliser
directement une m´ethode non statique.
CCI - Initiation`a Java
Objets
Exemple
public class Bonjour {
int nombreFois;
public Bonjour(int nbFois) {
nombreFois = nbFois;
}
public void ditBonjour() {
for(int i = 0;i < nombreFois;i++) {
System.out.println("Bonjour");
}
}
public static void main(String [] args) {
Bonjour bj = new Bonjour(3);
bj.ditBonjour();
}
}
CCI - Initiation`a Java
Objets
Les packages
Groupes de classes
Bas´ee sur une organisation de r´epertoires
un paquet correspond`a un sous-r´epertoire
dans le nom du paquet,les/sont remplac´es par des.
java.lang,java.io,javax.swing,javax.xml,
org.xml.sax,etc
Lorsqu’une classe est dans paquet,son nom complet est de la
forme:
nom
.
du
.
paquet
.
LaClasse
ex:java.lang.Math
CCI - Initiation`a Java
Objets
Les packages (2)
Lorsqu’une classe est dans paquet,le fichier dans lequel elle
est d´efinie doit d´ebuter par:
package
nom
.
du
.
paquet
;
Il n’est pas n´ecessaire d’utiliser le nom complet des classes qui
sont dans le mˆeme paquet que la classe que l’on est en train
de d´efinir.
Pour ´eviter de r´ep´eter le nom du paquet d’une classe,on peut
utiliser les d´eclarations:
pour une classe:
import
nom
.
du
.
paquet
.
LaClasse
;
pour toutes les classes du paquet d’un coup:
import
nom
.
du
.
paquet
.*;
CCI - Initiation`a Java
Objets
Autres modificateurs de d´eclaration
Il existe des modificateurs pour la visibilit´e
public:visible partout
protected:visible dans le paquet courant et dans les classes
qui h´eritent de la classe courante
quand on ne dit rien:visible dans le paquet courant
private:visible uniquement dans la classe courante
modificateur final:
interdit les changements pour les variables et les champs
(combin´e avec static,on obtient des constantes)
interdit la surcharge pour les m´ethodes
CCI - Initiation`a Java
Objets
Une classe particuli`ere:String
Chaˆınes de caract`eres en Java
Ce ne sont pas des tableaux de caract`eres
Non modifiables
Valeurs entre"".
String coucou ="bonjour";
Concat´enation:op´erateur +
Nombreuses m´ethodes:
char charAt(int)
boolean equalsTo(Object)
boolean startsWith(String)
boolean endsWith(String)
String substring(int,int)
et bien d’autres...
CCI - Initiation`a Java
Objets
Les StringBuffers
Chaˆınes de caract`eres modifiables
y compris au niveau de leur taille
Utilis´ees pour g´en´erer des chaˆınes de caract`eres
Exemple:
StringBuffer sb = new StringBuffer();
for (int i = 0;i < 10;i++) {
sb.append("Bonjour\n");
}
String dixFoisBonjour = sb.toString();