Beruflich Dokumente
Kultur Dokumente
Souheib Baarir
1
1
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
1 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
2 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
3 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
4 / 81
Java est devenu aujourd'hui l'un des langages de programmation les plus utiliss. Il est incontournable dans plusieurs domaines : Systmes dynamiques : Chargement dynamique de classes. Internet : Les Applets java. Systmes communicants : RMI, Corba, EJB...
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
6 / 81
Pour tous : Le 13 novembre 2006, Sun annonce le passage de Java, c'est--dire le JDK (JRE et outils de dveloppement) sous licence GPL. Pour vous : Cette UE sur Java servira de base l'ensemble des UE techniques du Master.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
7 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
8 / 81
Le langage Java :
extension du langage C, intgrant les concepts de la programmation oriente objet, n dans les laboratoires AT&T Bell, premire version oprationnelle date de 1983. mis au point en 1991 par la rme Sun Microsystems, le but de Java tait de constituer un langage de programmation pouvant tre intgr dans les appareils lectromnagers, an de pouvoir les contrler, de les rendre interactifs, et surtout de permettre une communication entre les appareils.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
9 / 81
Java est trs proche du langage C++ (et donc du langage C) tant donn qu'il a quasiment la mme syntaxe. Toutefois Java est plus simple que le langage C++, car les caractristiques critiques du langage C++ (celles qui sont l'origine des principales erreurs) ont t supprimes. Cela comprend :
Les pointeurs. La surcharge d'oprateurs. L'hritage multiple.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
10 / 81
Notes
gain de abilit (pas de dsallocation errone). a un cot (perte en rapidit par rapport au C++).
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 11 / 81
Une fois acheve la production du logiciel, un choix doit tre fait entre fournir le source ou le binaire pour la machine du client. Gnralement, une entreprise souhaite protger le code source et distribuer le code binaire. Le code binaire doit donc tre portable sur des architectures direntes (processeur, systme d'exploitation, etc.).
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
12 / 81
l'instar du compilateur C, le compilateur C++ produit du code natif, i.e., qu'il produit un excutable propre l'environnement de travail ou le code source est compil. On doit donc crer les excutables pour chaque type d'architecture potentielle des clients.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
13 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
14 / 81
Portabilit
Le bytecode gnr par le compilateur ne dpend pas de l'architecture de la machine o a t compil le code source, c'est--dire que les bytecodes produits sur une machine pourront s'excuter (au travers d'une machine virtuelle) sur des architectures direntes.
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 15 / 81
Excution du bytecode
Le bytecode doit tre excut par une Machine Virtuelle Java. Cette JVM n'existe pas. Elle est simule par un programme qui : 1. lit les instructions (en bytecode) du programme .class 2. fait une passe de vrication (type oprande, taille de pile, ot donnes, variable bien initialis,...) pour s'assurer qu'il n'y a aucune action dangereuse. 3. fait plusieurs passes d'optimisation du code 4. les traduit dans le langage natif du processeur de l'ordinateur 5. lance leur excution
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
16 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
17 / 81
Les vrications eectues sur le bytecode et la compilation du bytecode vers le langage natif du processeur, ralentissent l'excution des classes Java. Mais les techniques de compilation la vole "Just In Time (JIT)" ou "Hotspot" rduisent ce problme : elles permettent de ne traduire qu'une seule fois en code natif les instructions qui sont (souvent pour Hotspot) excutes.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
18 / 81
Note
Java
bilit.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
19 / 81
Outline
Java c'est quoi ? Comparatif : Java, C++ Le langage Java. Les classes Java. Les attributs Java Les constructeurs Les mthodes en Java Classes utiles : String, tableau et classes enveloppes
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
20 / 81
Le langage Java.
Java c'est quoi ? Comparatif : Java, C++ Le langage Java. Les classes Java. Les attributs Java Les constructeurs Les mthodes en Java Classes utiles : String, tableau et classes enveloppes
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
21 / 81
S. Baarir (Paris10/LIP6)
L3 Miage - 2010/2011
23 / 81
J2SE 1.2 (1998 - 1 524 classes et interfaces) Playground J2SE 1.3 (2000 - 1 840 classes et interfaces) Kestrel
rection, SWING, compilateur JIT (Just in Time), Java IDL pour Corba. HotSpot JVM, service de nomage (JNDI) et JavaSound.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
24 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
25 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
26 / 81
Classe : dclaration.
Pour dclarer une classe, on utilise le mot-cl class.
Exemple
Rgle
La premire lettre du nom d'une classe doit tre une lettre majuscule.
Remarque(s)
Dans le cadre de ce cours, nous ne parlerons que des classes dites publiques (i.e., dclares public class).
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 27 / 81
Classe : dnition.
Dnir une classe en Java, c'est dnir ses membres savoir :
(1) ses attributs, (2) le(s) constructeur(s), (3) et ses mthodes.
Il n'est pas ncessaire de spcier de mcanisme de destruction, transparente pour l'utilisateur, prise en charge par un gestionnaire appel garbage collector charg de dtecter les instances dtruire.
Consquences
gain de abilit (pas de dsallocation errone). a un cot (perte en rapidit).
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 28 / 81
Il existe d'autres types de visibilit pour un membre que nous n'voquerons pas dans l'immdiat.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
29 / 81
Important
Chaque instance d'une classe possde son propre exemplaire d'un attribut d'instance de la classe.
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 30 / 81
Les membres de classes d'une classe donne tant communs toutes les instances de la classe, l'accs un membre de classe se fait travers le nom de la classe au moyen de l'oprateur . , i.e., pour accder un membre de classe, nomm X, d'une classe A, on crit A.X.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
31 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
32 / 81
Il existe une rfrence particulire : la rfrence null qui ne rfre aucune instance. Une instance peut accder sa propre rfrence grce la variable this (variable en lecture seule).
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
33 / 81
public class P o i n t {
Attributs
classe )
p r i v a t e double x , y ;
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
34 / 81
public class P o i n t {
Attributs
classe )
p r i v a t e double x , y ;
(2) Constructeurs
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
34 / 81
public class P o i n t {
Attributs
classe )
p r i v a t e double x , y ;
(2) Constructeurs
//
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
34 / 81
public class P o i n t {
Attributs
classe )
p r i v a t e double x , y ;
(2) Constructeurs
//
//
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
34 / 81
public class P o i n t {
Attributs
classe )
p r i v a t e double x , y ;
(2) Constructeurs
//
// //
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
34 / 81
public class P o i n t {
Attributs
classe )
p r i v a t e double x , y ;
(2) Constructeurs
//
// //
//
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
34 / 81
public class P o i n t {
Attributs
classe )
p r i v a t e double x , y ;
(2) Constructeurs
//
// //
// //
public S t r i n g t o S t r i n g ( ) { . . . }
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
34 / 81
Outline
Java c'est quoi ? Comparatif : Java, C++ Le langage Java. Les classes Java. Les attributs Java Les constructeurs Les mthodes en Java Classes utiles : String, tableau et classes enveloppes
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
35 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
36 / 81
p r i v a t e double z ; public S t r i n g s t r ;
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 37 / 81
Le type d'une variable en Java peut tre : Types dits primitifs : int, double, boolean, etc. nom d'une classe : par exemple, les chanes de caractres sont des instances de la classe String.
Remarque(s)
Nous laissons de ct pour l'instant le cas des tableaux sur lesquels nous reviendrons plus tard.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
38 / 81
Attention
Un attribut de type primitif n'est pas un objet !
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 39 / 81
L'expression est calcule et ensuite la valeur calcule est aecte la variable Exemple :
x = 36.0 d ; y = x + 1; s t r = " Linus " ;
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
40 / 81
Le modicateur nal
On peut bloquer la modication de la valeur d'un attribut (en dehors de l'instanciation) l'aide du mot-cl nal.
f i n a l private int x ;
Remarque(s)
On utilise souvent un attribut de classe dclar nal pour dnir une constante :
f i n a l s t a t i c public double PI = 3 . 1 4 d ;
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
42 / 81
les
attributs
}
Remarque(s)
Traditionnellement, le nom d'un attribut ou d'une mthode commence par une lettre minuscule.
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 43 / 81
Outline
Java c'est quoi ? Comparatif : Java, C++ Le langage Java. Les classes Java. Les attributs Java Les constructeurs Les mthodes en Java Classes utiles : String, tableau et classes enveloppes
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
44 / 81
Les constructeurs
Java c'est quoi ? Comparatif : Java, C++ Le langage Java. Les classes Java. Les attributs Java Les constructeurs Les mthodes en Java Classes utiles : String, tableau et classes enveloppes
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
45 / 81
Instances
Classe Constructeur
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
46 / 81
Le constructeur est une mthode portant le mme nom que la classe. Toute classe comporte au moins un constructeur. Il peut y avoir plusieurs constructeurs ! Le constructeur permet d'initialiser les attributs de l'instance cre.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
47 / 81
public class Logement { public Logement ( double s u r f a c e , double p r i x ) { this . surface = surface ; t h i s . vendu = f a l s e ; this . p r i x = p r i x ; }
}
// constructeur
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
48 / 81
constructeur
}
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 49 / 81
retenir
Tout est dynamique : les instances d'une classe sont instancies dynamiquement.
Exemple
Outline
Java c'est quoi ? Comparatif : Java, C++ Le langage Java. Les classes Java. Les attributs Java Les constructeurs Les mthodes en Java Classes utiles : String, tableau et classes enveloppes
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
51 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
52 / 81
La syntaxe pour dnir le corps d'une mthode est identique celle utilise en C pour dnir une fonction. Notamment, les noms et la syntaxe des instructions (conditionnelles, itratives, etc.) et, des oprateurs (arithmtiques, de comparaison, logiques, etc.) sont les mmes qu'en C.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
53 / 81
public class Logement { public void c h a n g e r P r i x ( double p r i x ) { i f ( p r i x >= 0 ) { t h i s . p r i x = p r i x ; } } public void v e n d r e ( S t r i n g a c q u e r e u r ) { this . p r o p r i e t a i r e = acquereur ; t h i s . vendu = t r u e ; }
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
54 / 81
public class Logement { public S t r i n g annonce ( ) { S t r i n g s t r = " Logement ( " + t h i s . s u r f a c e + " ) " ; s t r = s t r + " : " + this . p r i x + " euros " ; i f ( t h i s . vendu ) { s t r = s t r + " vendu " ; } return s t r ; } }
Remarque(s)
Conseil
On ne doit pouvoir modier l'tat interne d'une instance (i.e., les valeurs de ses attributs) qu' travers des mthodes d'instance de la classe : les accesseures
Exemple
La dnition de la classe Logement permet n'importe quel utilisateur de modier les valeurs des attributs prix et proprietaire sans utiliser les mthodes changerPrix et vendre.
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 56 / 81
Introduction Java.
L3 Miage - 2010/2011
57 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
58 / 81
Une classe qui ne comporterait que des membres static ne sert pas crer des objets ! ! !
Exemple
La classe System est une classe ne possdant que des attributs et mthodes de classes. Elle permet d'acher des messages dans la console
System . o u t . p r i n t l n ( " H e l l o , World ! " ) ; System . o u t . p r i n t l n ( 5 ) ; System . o u t . p r i n t l n ( 1 . 1 d ) ;
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
59 / 81
ATTENTION
La mthode main ne peut pas retourner d'entier comme en C.
public s t a t i c int
main ( S t r i n g [ ] a r g s )
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
60 / 81
public class Logement { public s t a t i c void main ( S t r i n g [ ] a r g s ) { Logement a s n i e r e s 9 2 ; a s n i e r e s 9 2 = new Logement ( 8 0 . 0 d , 2 . 5 e +5," L i n u s " ) ; System . o u t . p r i n t l n ( a s n i e r e s 9 2 . annonce ( ) ) ; a s n i e r e s 9 2 . changerPrix (300000.0 d ) ; System . o u t . p r i n t l n ( a s n i e r e s 9 2 . s u r f a c e ) ; System . o u t . p r i n t l n ( a s n i e r e s 9 2 . p r i x ( ) ) ; asnieres92 . vendre (" D j i k s t r a " ) ; System . o u t . p r i n t l n ( a s n i e r e s 9 2 . p r o p r i e t a i r e ( ) ) ; }
// le programme principal
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
61 / 81
On peut 1. dclarer plusieurs fois la mme mthode avec la mme signature et des implmentations direntes dans plusieurs classes : rednition. 2. dclarer plusieurs fois la mme mthode avec des signatures direntes et des implmentations direntes dans la mme classe : surcharge.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
62 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
63 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
65 / 81
Important
Un chier ne peut contenir qu'une seule classe publique.
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
66 / 81
javac
HelloWorld.java
HelloWorld.class
0 3 5 8 getstatic #7 <Field java.io.PrintStream out> ldc #1 <String "Hello World!" > invokevirtual #8 <Method void println(java.lang.String)> return
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
67 / 81
java
HelloWorld
Interprtation
Excution
Systme d'exploitation
L3 Miage - 2010/2011
68 / 81
Important
PATH CLASSPATH
: doit contenir le rpertoire du compilateur et de la machine virtuelle. : indique le chemin ou se trouve les classes (par dfaut, le rpertoire courant) sinon vous aurez le message d'erreur
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
69 / 81
Outline
Java c'est quoi ? Comparatif : Java, C++ Le langage Java. Les classes Java. Les attributs Java Les constructeurs Les mthodes en Java Classes utiles : String, tableau et classes enveloppes
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
70 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
71 / 81
Attention
Pour comparer deux chanes de caractres, on utilise la mthode equals (ou equalsIgnoreCase) de la classe String.
String str1 = . . . . ; String str2 = . . . . ;
i f ( s t r 1 . e q u a l s ( s t r 2 ) ) { . . . } else { . . . }
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
72 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
73 / 81
Les tableaux
Important
Un tableau est un objet ! Deux tapes : 1. Dclaration : dterminer le type de ses lments. 2. Dimensionnement : dterminer la taille du tableau (c'est--dire le nombre d'lments).
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 74 / 81
t a b l e a u = new i n t [ 5 0 ] ;
cre
un
tableau
pouvant
contenir
50
entiers
La taille d'un tableau ne peut plus tre modie par la suite. Dimension du tableau : tableau.length
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
75 / 81
On peut aussi donner explicitement la liste des lments :d'un tableau au moment de son instanciation :
int [ ] tableau = {1 ,2 ,3}; S t r i n g [ ] mots = [ " L i c e n c e " , "MIAGE" , "POO" } ;
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
76 / 81
Si l'on dclare un tableau dont les lments sont des rfrences de type logement :
Logement [ ] ville ;
instancie un tableau de 100 rfrences initialises null. Si l'on veut qu'une case contienne une rfrence vers une instance de la classe Logement, on doit instancier une instance de la classe Logement et crire la rfrence de l'instance dans la case :
v i l l e [ 5 0 ] = new Logement ( 6 7 . 0 d , 5 e +5);
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
77 / 81
Si l'on crit
java Programme a 3 5.7 true
alors args est un tableau de dimension 4 contenant les rfrences vers les chanes de caractres "a", "3", "5.7" et "true". Les rfrences sont mises dans le mme ordre que sur la ligne de commande. Par exemple, args[1] est une rfrence vers la chane de caractres "3".
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 78 / 81
Chaque classe enveloppe d'un type primitif possde une mthode pour convertir une instance de la classe en une valeur du type primitif associ.
Exemple
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
79 / 81
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
80 / 81
Elles permettent notamment de convertir une chane de caractres en un entier, un ottant, un boolen, etc ...
Exemple
S. Baarir (Paris10/LIP6)
Introduction Java.
L3 Miage - 2010/2011
81 / 81