Sie sind auf Seite 1von 87

Cours JAVA : Introduction Java.

Souheib Baarir
1
1

Universit Paris Ouest Nanterre La Dfense. Laboratoire d'informatique de Paris 6. Souheib.baarir@u-paris10.fr

Licence Miage - 2010/2011

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

1 / 81

Grandes lignes du cours


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

2 / 81

Java c'est quoi ?


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

3 / 81

Java c'est quoi ?


Un langage : Orient objet fortement typ avec classes. Un environnement d'excution (JRE) : Une machine virtuelle et un ensemble de bibliothques. Un environnement de dveloppement (JDK) : Une machine virtuelle et un ensemble d'outils. Une mascotte : Duke

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

4 / 81

Java c'est qui ?


La plate-forme et le langage Java sont issus d'un projet de Sun Microsystems datant de 1990. Gnralement, on attribut sa paternit a trois de ses ingnieurs : James Gosling Patrick Naughton Mike Sheridan

Figure: 1990 Barbecue chez James Gosling


S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 5 / 81

Java c'est pourquoi ?

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

Java c'est pour qui ?

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

Comparatif : Java, C++


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

8 / 81

Java versus C++ : Historique


Deux langages orients objets dominent : C++ et Java. Le langage C++ :

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 versus C++ : concepts (1)

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

Java versus C++ : concepts (2)


De plus,  Tout est dynamique : les instances d'une classe sont instancies dynamiquement.  La libration de mmoire est transparente pour l'utilisateur. Il n'est pas ncessaire de spcier de mcanisme de destruction. La libration de l'espace mmoire est prise en charge un gestionnaire appel garbage collector charg de dtecter les objets dtruire.

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

Java versus C++ : production du binaire

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

Java versus C++ : compilateur C++

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

Java versus C++ : chane de production du C


source.c compilation : gcc source.c -o monProg monProg Execution : ./monProg

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

14 / 81

Java versus C++ : compilateur Java


En Java, le code source n'est pas traduit directement dans le langage de l'ordinateur. Il est d'abord traduit dans un langage appel "bytecode", langage d'une machine virtuelle (JVM  Java Virtual Machine) dnie par Sun.

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

Java versus C++ : chane de production du Java


source.java Compilation : javac source.java source.class Machine virtuelle : java source.class

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

17 / 81

Cot de la JVM sur les performances.

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

Java versus C++ : en rsum...


Le langage Java est :  C-like  : Syntaxe familire aux programmeurs de C. Orient objet : Tout est objet, sauf les types primitifs (entiers, ottants, boolens, ...) ! Robuste : Typage fort, pas de pointeurs, etc ... Code intermdiaire : Le compilateur ne produit que du bytecode indpendant de l'architecture de la machine ou a t compil le code source.

Note
Java

bilit.

perd en ecacit par rapport C++ mais gagne en porta-

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

L'environnement actuel Java 2 Standard Edition J2SE


L'outil de base : le JDK (Java Development Kit) de SUN : http://java.sun.com. gratuit. Dernire version : 1.6. comprend de nombreux outils :
le le le le compilateur. compilateur la vol "JIT". dbogueur. gnrateur de documentation.

Des environnements de dveloppements gratuits NetBeans : http://www.netbeans.org/ Eclipse : http://www.eclipse.org/


S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 22 / 81

Java volue tout le temps


Java n'est pas un langage normalis et il continu d'voluer. Cette volution se fait en ajoutant de nouvelle API, mais aussi en modiant la machine virtuelle. L'ensemble de ces modications est gr par le JCP (Java Community Process ; http ://www.jcp.org/) dans lequel Sun continue de tenir une place prpondrante. Il peut alors tre ncessaire d'identier une version prcise du compilateur et/ou de la machine virtuelle : a n'est pas simple. La numrotation des versions : 1.0 1.1 1.2 1.3 1.4 5.0 6.0
Toutes ces versions : Java 2
Introduction Java.

S. Baarir (Paris10/LIP6)

L3 Miage - 2010/2011

23 / 81

Les versions de Java


JDK 1.0 (1996 - 211 classes et interfaces) JDK 1.1 (1997 - 477 classes et interfaces)
Ajoute : Ajoute : Ajoute : Version initiale.
classes internes, JavaBeans, JDBC, Java Remote Invocation (RMI).

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

Les versions de Java (suite)


J2SE 1.4 (2002 - 2 723 classes et interfaces)  Merlin Ajoute : mot-cl assert, expressions rationnelles, chanage dexception, parser XML et du moteur XSLT (JAXP), extensions de scurit JCE (Java Cryptography Extension) et Java Web Start. J2SE 5.0 (2004 - 3 270 classes et interfaces)  Tiger Ajoute : syntaxe la foreach, enumerations (enum), classe Integer, autoboxing/unboxing Java SE 6 (2006 - 3 777 classes et interfaces)  Mustang Ajoute : covariance (rednition avec modication du type de retour), @overhiding. Java SE 7  Nom de code Dolphin Ajoutera : des closures (en cours de spcications). Ce sera la premire Version 100% open source.

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

25 / 81

Les classes 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

26 / 81

Classe : dclaration.
Pour dclarer une classe, on utilise le mot-cl class.
Exemple

public class Logement {


}
// dclaration d e s membres

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

Classe : visibilit d'un membre


Pour chaque membre, on doit prciser sa visibilit, c'est--dire s'il est un membre priv (dclar private), s'il est un public (dclar public), etc. public : membre visible par l'ensemble des instances de l'ensemble des classes. private : membre visible seulement par les instances de la classe.
Remarque(s)

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

Classe : membres d'instance et de classes


Dnition
Un membre de classe est un membre commun toutes les instances de la classe et existe ds que la classe est dnie en dehors et indpendamment de toute instanciation. Les membres de classe sont dclars l'aide du mot-cl static. Un membre qui n'est pas de classe est dit d'instance.

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

Classe : l'accs aux membres de classe

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

Classe : l'accs aux membres d'instance


Pour accder un membre d'instance d'une instance donne, on utilise une variable contenant une rfrence vers l'instance ( son adresse ). Si la variable a contient une rfrence vers une instance d'une classe A, on accde un membre d'instance x de cette instance en crivant a.x.
Exemple

asniere92 . surface a s n i e r e s 9 2 . changerPrix (210000.0 d) paris14 . vendre (" D j i k s t r a ")

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

32 / 81

Classe : rfrences Null et this

 

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

Classe java type


// Type + nom ( d e // (1)

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

Classe java type


// Type + nom ( d e // // (1)

public class P o i n t {
Attributs

classe )

p r i v a t e double x , y ;
(2) Constructeurs

public P o i n t ( double x , double y ) { . . . }

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

34 / 81

Classe java type


// Type + nom ( d e // // (1)

public class P o i n t {
Attributs

classe )

p r i v a t e double x , y ;
(2) Constructeurs

public P o i n t ( double x , double y ) { . . . } s t a t i c d i s t a n c e E n t r e ( P o i n t p1 , p2 ) { . . . }


(3) Methodes de classe

//

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

34 / 81

Classe java type


// Type + nom ( d e // // (1)

public class P o i n t {
Attributs

classe )

p r i v a t e double x , y ;
(2) Constructeurs

public P o i n t ( double x , double y ) { . . . } s t a t i c d i s t a n c e E n t r e ( P o i n t p1 , p2 ) { . . . }


(4) Accesseurs (3) Methodes de classe

//

//

public double getX ( ) { . . . }

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

34 / 81

Classe java type


// Type + nom ( d e // // (1)

public class P o i n t {
Attributs

classe )

p r i v a t e double x , y ;
(2) Constructeurs

public P o i n t ( double x , double y ) { . . . } s t a t i c d i s t a n c e E n t r e ( P o i n t p1 , p2 ) { . . . }


(4) (5) Accesseurs (3) Methodes de classe

//

// //

public double getX ( ) { . . . } public double d i s t a n c e A v e c ( P o i n t p2 ) { . . . }


Mthodes publique

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

34 / 81

Classe java type


// Type + nom ( d e // // (1)

public class P o i n t {
Attributs

classe )

p r i v a t e double x , y ;
(2) Constructeurs

public P o i n t ( double x , double y ) { . . . } s t a t i c d i s t a n c e E n t r e ( P o i n t p1 , p2 ) { . . . }


(4) (5) Accesseurs (3) Methodes de classe

//

// //

public double getX ( ) { . . . } public double d i s t a n c e A v e c ( P o i n t p2 ) { . . . } p r i v a t e void d e p l a c e ( double nx , double ny ) { . . . }


(6) Mthodes prives Mthodes publique

//

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

34 / 81

Classe java type


// Type + nom ( d e // // (1)

public class P o i n t {
Attributs

classe )

p r i v a t e double x , y ;
(2) Constructeurs

public P o i n t ( double x , double y ) { . . . } s t a t i c d i s t a n c e E n t r e ( P o i n t p1 , p2 ) { . . . }


(4) (5) Accesseurs (3) Methodes de classe

//

// //

public double getX ( ) { . . . } public double d i s t a n c e A v e c ( P o i n t p2 ) { . . . } p r i v a t e void d e p l a c e ( double nx , double ny ) { . . . }


(7) Mthodes standards (6) Mthodes prives Mthodes publique

// //

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

Les attributs 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

36 / 81

Dclaration d'un attributs


En Java, toutes les variables doivent tre dclares avant d'tre utilises (les attributs comme les variable locales des mthodes). La dclaration des attributs ce fait de prfrence en debut de classe. On indique au compilateur : 1. Un ensemble de modicateurs (facultatif ). 2. Le type de la variable. 3. Le nom de la variable.
Exemple

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

Les types en Java

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

Les types primitifs


Type
byte short int long oat double boolean char

Taille (en bits) 8 16 32 64 32 64 1 16

Exemple 1 345 -2 2L 3.14f, 2.5e+5 0.2d, 1.567e-5 true ou false 'a'

Attention
Un attribut de type primitif n'est pas un objet !
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 39 / 81

Aecter une valeur un attribut


L'aectation d'une valeur une variable est eectue par l'instruction
variable = expression ;

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

Initialisation d'un attribut


En Java, une variable doit tre initialise (recevoir une valeur) avant d'tre utilise dans une expression. S'ils ne sont pas initialiss expressement par le programmeur, les attributs automatiquement initialiss par le compilateur. Ils recoivent alors une valeur par dfaut de leur type : 0 pout les int, 0.0d pour les double, false pour les boolean, null pour les String, etc.
Remarque(s)

On peut initialiser un attribut lors de sa dclaration.


Exemple

p r i v a t e i n t x = 1; public S t r i n g s t r = " L i c e n c e MIAGE" ;


S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 41 / 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 types en Java : dclarer les attributs


Exemple

public class Logement {


//

f i n a l public double s u r f a c e ; public double p r i x ; public S t r i n g p r o p r i e t a i r e ; p r i v a t e boolean vendu ;

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

Constructeur en Java : dnition


Les instances d'une classe sont cres (construits) par une mthode particulire de la classe appele constructeur.

Instances

Classe Constructeur

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

46 / 81

Constructeur en Java : dnition (suite)

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

Constructeur en Java : exemple de constructeur


Exemple

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 en Java : dnition imbrique


On peut utiliser un constructeur pour dnir un autre constructeur. L'utilisation d'un autre constructeur se fait au moyen du mot-cl this. L'invocation d'un autre constructeur doit tre la premire instruction.
Exemple

public class Logement {


// un d e u x i m e

public Logement ( double double String { this ( surface , p r i x ) ; this . p r o p r i e t a i r e = }

constructeur

surface , prix , proprietaire ) proprietaire ;

}
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 49 / 81

Constructeur en Java : invocation


Pour crer une instance d'une classe A, on utilise l'oprateur new avec un des constructeurs de la classe. Cela alloue l'espace mmoire ncessaire pour stocker les proprits de l'objet, cre une rfrence sur cet espace mmoire et retourne la rfrence ainsi cre.

retenir
Tout est dynamique : les instances d'une classe sont instancies dynamiquement.
Exemple

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 0 0 0 0 . 0 d , " L i n u s " ) ;


S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 50 / 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

51 / 81

Les mthodes en 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

52 / 81

Les mthodes en Java : syntaxe et dnition

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

Les mthodes en Java : exemple de dnition


Exemple

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

Les mthodes en Java : exemple de dnition (suite)


Exemple (suite)

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)

L'oprateur + permet de concatner deux chanes de caractres (instances de la classe String).


S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 55 / 81

Les mthodes en java : les accesseurs

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

Les mthodes en java : les accesseurs (suite)


Une meilleure conception de la classe Logement est de dclarer ces attributs comme suit
p r i v a t e double p r i x ; private S t r i n g p r o p r i e t a i r e ;
Exemple (suite)

et de lui ajouter les mthodes


public double { return this . } public S t r i n g { return this . }
S. Baarir (Paris10/LIP6)

prix () prix ; p r o p r i e t a i r e () proprietaire ;

Introduction Java.

L3 Miage - 2010/2011

57 / 81

Les mthodes static en java


Comme les attributs de classe, une mthode de classe existe ds que la classe est dnie en dehors et indpendamment de toute instantiation. Une mthode static ne peut utiliser directement aucun attribut ni aucune mthode d'instance de la classe ; une erreur surviendrait la compilation. Une mthode qui manipule, en lecture ou en criture des attributs d'instance de la classe doit tre d'instance.

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

58 / 81

Les mthodes static en java (suite)


Remarque(s)

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 ) ;

Elle permet d'arrter brutalement un programme.


System . e x i t ( 0 ) ;

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

59 / 81

La mthode main de Java : concept


Il ne sut pas de dnir les attributs, constructeurs et mthodes des direntes classes, il faut pouvoir excuter un programme, les concepteurs de Java ont choisi pour cela de particulariser une mthode : la mthode main. La mthode main est une mthode de classe publique, qui contient le  programme principal  excuter et qui a pour signature :
public s t a t i c void main ( S t r i n g [ ] a r g s )

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

La mthode main de java : exemple


Exemple

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

Le polymorphisme en Java : dnition

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

Le polymorphisme en Java : exemple


Exemple

public class F o u r E l e c t r i q u e { public void d e m a r r e r ( ) { System . o u t . p r i n t l n ( " Monte en t e m p r a t u r e " ) ; }

public class O r d i n a t e u r { public void d e m a r r e r ( ) { System . o u t . p r i n t l n ( " Dmarrage de L i n u x " ) ; }

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

63 / 81

Le polymorphisme en Java : exemple (suite)


public class R e c t a n g l e { public f l o a t l a r g e u r ; public f l o a t l o n g u e u r ;
Rectangle ( float largeur , float longueur ) { t h i s . l a r g e u r=l a r g e u r ; t h i s . l o n g u e u r=l o n g u e u r ; } public void r e d i m e n s i o n n e r ( i n t f a c t e u r ) { largeur = largeur facteur ; longueur = longueur facteur ; } public void r e d i m e n s i o n n e r ( f l o a t a , f l o a t b ) { largeur = largeur + a ; l o n g u e u r = l o n g u e u r +b ; }}
S. Baarir (Paris10/LIP6) Introduction Java. L3 Miage - 2010/2011 64 / 81

Le polymorphisme en Java : important Important


On peut dnir autant de signatures que l'on veut de la mme mthode (faire varier le nombre d'arguments, changer le type des arguments, changer le type de retour). Il y a nanmoins une restriction : si l'on dnit plusieurs fois la mme mthode dans une classe, la dirence entre deux signatures ne doit pas seulement tre le type de retour, i.e., par exemple, on ne peut pas crire dans la mme classe :
public i n t f ( i n t a ) { . . . } public f l o a t f ( i n t a ) { . . . }

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

65 / 81

Compilation et excution (1)


Etape 1 : on cre un chier texte dont le nom est le nom de la classe auquel on rajoute l'extension .java.
Exemple

On crit la dnition de la classe Logement dans un chier texte nomm Logement.java.

Important
Un chier ne peut contenir qu'une seule classe publique.

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

66 / 81

Compilation et excution (2)


Etape 2 : on compile le programme Java l'aide de la commande javac. HelloWorld.java
public class HelloWorld { public static void main (String args[]) System.out.println("Hello World!");
}} {

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

Compilation et excution (3)


Etape 3 : le JIT de la machine virtuelle compile la vole le bytecode produit (c'est--dire on xecute la mthode main) l'aide la commande 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

java

HelloWorld

Interprtation

Machine virtuelle Java : JVM/


Interprteur java
S. Baarir (Paris10/LIP6) Introduction Java.

Excution

Systme d'exploitation

L3 Miage - 2010/2011

68 / 81

Compilation et interprtation (4)

Important
PATH CLASSPATH

Bien positionner les variables d'environnement

: 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

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld

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

Classes utiles : String, tableau et classes enveloppes


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

71 / 81

Les chanes de caractres : le type String (1)


Les chanes de caractres sont des instances de la classe String. L'oprateur de concatnation des chanes de caractres est l'oprateur +.

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

Les chanes de caractres : le type String (2)


La classe String ore de nombreuses autres possibilits : length() renvoie la longueur de la chane de caractres. toUpperCase et toLowerCase permettent, respectivement, de mettre la chane de caractres en lettres majuscules et minuscules. int indexOf (char ch) renvoie l'indice de la premire occurence du caractre ch dans la chane de caractres. String substring(int beginIndex,int endIndex) qui retourne la sous-chane constitu des caractres d'indice beginIndex endIndex - 1. etc ...

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

Les tableaux unidimensionnels


La dclaration d'un tableau prcise simplement le type des lments du tableau :
int [ ] tableau ;

La dimension du tableau est prcis lors de son instanciation


//

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

Les tableaux unidimensionnels


On accde l'lment d'indice i du tableau en crivant tableau[i]. Les indices commencent 0. Java vrie automatiquement l'indice lors de l'accs.
Remarque(s)

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

Les tableaux unidimensionnels


Remarque(s)

Si l'on dclare un tableau dont les lments sont des rfrences de type logement :
Logement [ ] ville ;

Alors, la ligne de commande


v i l l e = new Logement [ 1 0 0 ] ;

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

Les tableaux unidimensionnels


L'argument args de la mthode main est un tableau dont les lments sont des rfrences vers des chanes de caractres. Il permet de passer la mthode main des paramtres en ligne de commande
Exemple

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

Les classes enveloppes des types primitifs


A chaque type primitif est associ une classe qu'on appelle classe enveloppe de ce type primitif.
Exemple

La classe enveloppe du type int est la classe Integer.


I n t e g e r e n t i e r = new I n t e g e r ( 5 6 ) ;

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

int i = entier . intValue ();

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

79 / 81

Les classes enveloppes des types primitifs


Pour les autres types primitifs, les noms des classes enveloppes sont : Type primitif classe enveloppe short Short long Long byte Byte oat Float double Double boolean Boolean char Character

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

80 / 81

Les classes enveloppes des types primitifs

Elles permettent notamment de convertir une chane de caractres en un entier, un ottant, un boolen, etc ...
Exemple

I n t e g e r . p a r s e I n t ( "6" ) ; Double . p a r s e D o u b l e ( " 6 . 8 9 " ) ; Boolean . parseBoolean ( " f a l s e " ) ;

S. Baarir (Paris10/LIP6)

Introduction Java.

L3 Miage - 2010/2011

81 / 81

Das könnte Ihnen auch gefallen