Vous êtes sur la page 1sur 163

Cours JAVA :

Le bases du langage Java.


Version 3.02
Julien Sopena1
1 julien.sopena@lip6.fr
quipe REGAL - INRIA Rocquencourt
LIP6 - Universit Pierre et Marie Curie

Licence professionnelle DANT - 2013/2014

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

1 / 151

Grandes lignes du cours


Java en quelques mots
Comparatif Java et C++
Programmation oriente
objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
J. Sopena (INRIA/UPMC)

La surcharge.
Les constructeurs.
Le mcanisme
dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

Le bases du langage Java.

2 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

3 / 151

Java cest quoi ?


I

Un langage : Orient objet fortement typ avec classes

Un environnement dexcution (JRE) : Une machine virtuelle


et un ensemble de bibliothques

Un environnement de dveloppement (JDK) : Une machine


virtuelle et un ensemble doutils

Une mascotte : Duke

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

4 / 151

Java cest qui ?


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

Figure : 1990 Barbecue chez James Gosling


J. Sopena (INRIA/UPMC)

Le bases du langage Java.

5 / 151

Java pourquoi ?

Java est devenu aujourdhui lun des langages de programmation


les plus utiliss.
Il est incontournable dans plusieurs domaines :
I

Systmes dynamiques : Chargement dynamique de classes

Internet : Les Applets java

Systmes communicants : RMI, Corba, EJB, etc.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

6 / 151

Java pour qui ?

Pour tous : Le 13 novembre 2006, Sun annonce le passage de


Java, cest--dire le JDK (JRE et outils de
dveloppement) sous licence GPL.
Pour vous : Cette UE sur Java servira de base lensemble des
UE techniques du deuxime semestre.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

7 / 151

Lenvironnement actuel Java 2 Standard Edition


J2SE
Loutil de base : le JDK (Java Development Kit) de SUN :
I

http://java.sun.com.

gratuit.

Dernire version : 1.6.


comprend de nombreux outils :

I
I
I
I

le
le
le
le

compilateur.
compilateur la vol "JIT".
dbogueur.
gnrateur de documentation.

Des environnements de dveloppements gratuits


I

NetBeans : http://www.netbeans.org/

Eclipse : http://www.eclipse.org/

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

8 / 151

Java volue tout le temps


Java nest pas un langage normalis et il continu dvoluer. Cette
volution se fait en ajoutant de nouvelle API, mais aussi en
modifiant la machine virtuelle.
Lensemble de ces modifications 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 didentifier une version prcise du
compilateur et/ou de la machine virtuelle : a nest pas simple.
La numrotation des versions :
1.0 1.1 |1.2 1.3
{z 1.4 5.0} 6.0
Toutes ces versions : Java 2

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

9 / 151

Tout se complique
Attention, avec larrive de la GPL tout se complique :

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

10 / 151

Les versions de Java

JDK 1.0 (1996 - 211 classes et interfaces)


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

J2SE 1.2 (1998 - 1 524 classes et interfaces) Playground


Ajoute : rflection, SWING, compilateur JIT (Just in
Time), Java IDL pour Corba.

J2SE 1.3 (2000 - 1 840 classes et interfaces) Kestrel


Ajoute : HotSpot JVM, service de nomage (JNDI) et
JavaSound.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

11 / 151

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 (redfinition avec modification du
type de retour), @overhiding.
Java SE 7 Nom de code Dolphin
Ajoutera : des closures (en cours de spcifications).
Ce sera la premire Version 100% open source.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

12 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

13 / 151

Java versus C++

Filiation historique :
I
I

1983 (AT&T Bell) : C++


1991 (Sun Microsystems) : Java

Java est trs proche du langage C++ (et donc du langage C).

Toutefois Java est plus simple que le langage C++, car les
points "critiques" du langage C++ (ceux qui sont lorigine
des principales erreurs) ont t supprims.

Cela comprend :
I
I
I

Les pointeurs
La surcharge doprateurs
Lhritage multiple

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

14 / 151

Java versus C++ : concepts (2)


De plus,
- Tout est dynamique : les instances dune classe sont
instancies dynamiquement.
- La libration de mmoire est transparente pour lutilisateur. Il
nest pas ncessaire de spcifier de mcanisme de destruction.
La libration de lespace mmoire est prise en charge un
gestionnaire appel garbage collector charg de dtecter les
objets dtruire.

Notes
I

gain de fiabilit (pas de dsallocation errone).

a un cot (perte en rapidit par rapport au C++).

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

15 / 151

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
diffrentes (processeur, systme dexploitation, etc.).

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

16 / 151

Java versus C++ : compilateur C++

linstar du compilateur C, le compilateur C++ produit du code


natif, i.e., quil produit un excutable propre lenvironnement de
travail ou le code source est compil.
On doit donc crer les excutables pour chaque type darchitecture
potentielle des clients.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

17 / 151

Java versus C++ : chane de production du C


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

Execution : ./monProg

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

18 / 151

Java versus C++ : compilateur Java


En Java, le code source nest pas traduit directement dans le
langage de lordinateur.
Il est dabord traduit dans un langage appel "bytecode", langage
dune machine virtuelle (JVM Java Virtual Machine) dfinie par
Sun.

Portabilit
Le bytecode gnr par le compilateur ne dpend pas de larchitecture de la machine o a t compil le code source, cest--dire
que les bytecodes produits sur une machine pourront sexcuter
(au travers dune machine virtuelle) sur des architectures diffrentes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

19 / 151

Excution du bytecode

Le bytecode doit tre excut par une Machine Virtuelle Java.


Cette JVM nexiste pas. Elle est simule par un programme qui :
1. lit les instructions (en bytecode) du programme .class
2. fait une passe de vrification (type oprande, taille de pile, flot
donnes, variable bien initialis,...) pour sassurer quil ny a
aucune action dangereuse.
3. fait plusieurs passes doptimisation du code
4. les traduit dans le langage natif du processeur de lordinateur
5. lance leur excution

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

20 / 151

Java versus C++ : chane de production du Java


source.java

Compilation : javac source.java


source.class
Machine virtuelle : java source.class

svgFigures/LOGO-Apple

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

21 / 151

Cot de la JVM sur les performances.

Les vrifications effectues sur le bytecode et la compilation du


bytecode vers le langage natif du processeur, ralentissent
lexcution des classes Java.
Mais les techniques de compilation la vole "Just In Time (JIT)"
ou "Hotspot" rduisent ce problme : elles permettent de ne
traduire quune seule fois en code natif les instructions qui sont
(souvent pour Hotspot) excutes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

22 / 151

Java versus C++ : en rsum...


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

Note
Java perd (un peu) en efficacit par rapport C++// mais gagne
(beaucoup) en portabilit.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

23 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

24 / 151

Problmatique de la programmation
Le schma simplifi dun systme informatique peut se rsumer par
la formule :
Systme informatique = Structures de donnes + Traitements

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

25 / 151

Problmatique de la programmation
Le schma simplifi dun systme informatique peut se rsumer par
la formule :
Systme informatique = Structures de donnes + Traitements
Le cycle de vie dun systme peut tre dcompos en deux grandes
phases :
I

Une phase de production qui consiste raliser le logiciel.

Une phase de maintenance qui consiste corriger et faire


voluer le logiciel.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

25 / 151

Problmatique de la programmation
Le schma simplifi dun systme informatique peut se rsumer par
la formule :
Systme informatique = Structures de donnes + Traitements
Le cycle de vie dun systme peut tre dcompos en deux grandes
phases :
I

Une phase de production qui consiste raliser le logiciel.

Une phase de maintenance qui consiste corriger et faire


voluer le logiciel.

Lors de la production du systme (au sens industriel du terme), le


concepteur a deux grandes options :
+ soit orienter sa conception sur les traitements.
+ soit orienter sa conception sur les donnes.
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

25 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

26 / 151

Conception par traitements.


Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

27 / 151

Conception par traitements : principe


Principe : On spare les donnes des moyens de traitement de ces
donnes.

P ROGRAMME
Structures de donnes

Algorithmes

Variable

Procdure

Variable

Fonction

Variable

Procdure

Variable

Fonction

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

28 / 151

Conception par traitements : +/I

Les premiers concepteurs de systme informatique ont adopt


cette approche : systmes dexp., gestionnaires de fentres,
logiciels de gestion, logiciels de bureautique, logiciels de calcul
scientifique, etc.

De nombreux systmes informatiques sont encore dvelopps


selon cette approche.

+ Systmes ad-hoc, i.e., adapts au problme de dpart, mais


dont la maintenance est difficile.
+ Les traitements sont gnralement beaucoup moins stables que
les donnes : changement de spcification, ajout de nouvelles
fonctionnalits, etc.
+ Les structures de donnes sous-jacentes sont choisies en
relation troite avec les traitements effectuer.
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

29 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

30 / 151

Conception par objets.


Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

31 / 151

Conception par objets : principe


Principe : afin dtablir de faon stable et robuste larchitecture
dun systme, il semble raisonnable de sorganiser autour des
donnes manipules.

P ROGRAMME
Objet

Objet

Variable

Variable

Variable

Variable

Procdure

Procdure

Fonction

Fonction

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

32 / 151

Conception par objets : points cls

La construction dun systme va saxer principalement sur la


dtermination des donnes dans un premier temps et la
ralisation les traitements (de haut-niveau) agissant sur ces
donnes dans un second temps.

Cette approche permet de btir des systmes plus simples


maintenir et faire voluer.

On regroupe dans une mme entit informatique, appel objet,


les structures de donnes et les moyens de traitement de ces
donnes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

33 / 151

Le concept dobjet : dfinition


Dfinition
Un objet est une entit autonome, qui regroupe un ensemble de
proprits (donnes) cohrentes et de traitements associs.

retenir
Ne commencez pas par vous demander ce que fait lapplication
mais ce quelle manipule.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

34 / 151

Le concept dobjet : vocabulaire

Les structures de donnes dfinies dans lobjet


sont appels ses attributs (proprits).
Les procdures et fonctions dfinies dans lobjet
sont appels ses mthodes (oprations).
Les attributs et mthodes dun objet sont appels
ses membres.
Lensemble des valeurs des attributs dun objet
un instant donn est appel tat interne.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

35 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

36 / 151

Le concept dencapsulation.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Conception par traitements.
Conception par objets.
Le concept dencapsulation.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

37 / 151

Protection de linformation : encapsulation.


Interface

Capsule

ensemble des
services publics
offerts

Demande
de service

nautorisant que les


demandes de service
public

Accs aux donnes

Lucky

Luke

123

Rgle
Les donnes dun objet (son tat) peuvent tre lues ou modifies
uniquement par les services proposs par lobjet lui-mme (ses
mthodes)
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

38 / 151

Encapsulation : dfinition
Dfinition
Le terme encapsulation dsigne le principe consistant cacher
linformation contenue dans un objet et de ne proposer que des
mthodes de modification/accs ces proprits (attributs).

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

39 / 151

Encapsulation : dfinition
Dfinition
Le terme encapsulation dsigne le principe consistant cacher
linformation contenue dans un objet et de ne proposer que des
mthodes de modification/accs ces proprits (attributs).
I
I

Lobjet est vu de lextrieur comme une bote noire ayant


certaines proprits et ayant un comportement spcifi.
La manire dont le comportement a t implment est cache
aux utilisateurs de lobjet.

Intrt
Protger la structure interne de lobjet contre toute manipulation
non contrle, produisant une incohrence.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

39 / 151

Encapsulation : en pratique

Lencapsulation ncessite la spcification de parties publics et prives de lobjet.


lments publics : correspond la partie visible de lobjet depuis
lextrieur. cest un ensemble de mthodes utilisables
par dautres objets (environnement).
lments prives : correspond la partie non visible de lobjet. Il
est constitu des lments de lobjet visibles
uniquement de lintrieur de lobjet et de la dfinition
des mthodes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

40 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

41 / 151

Le concept dobjet : notion de classe

Pour tre vritablement intressante, la notion dobjet doit


permettre un certain degr dabstraction notion de classe.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

42 / 151

Le concept dobjet : notion de classe

Pour tre vritablement intressante, la notion dobjet doit


permettre un certain degr dabstraction notion de classe.
Dfinition
On appelle classe la structure dun objet, i.e., la dclaration de
lensemble des membres qui composeront un objet.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

42 / 151

Le concept dobjet : notion de classe

Pour tre vritablement intressante, la notion dobjet doit


permettre un certain degr dabstraction notion de classe.
Dfinition
On appelle classe la structure dun objet, i.e., la dclaration de
lensemble des membres qui composeront un objet.

Dfinition
La classe peut tre vue comme un moule pour la cration des
objets, quon appelle alors des instances de la classe.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

42 / 151

Classe = Modle dobjets

Classe dcrivant les


caractristiques des
instances

Signature et code du
service (mthode)

prnom

nom
mdailles

Nom et type
de lattribut

Instanciation (new)

Lucky
Luke

Joe
Dalton

123

Averell

Dalton

Instances de la classe

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

43 / 151

Diffrences entre classe et objet.


Il est important de saisir les diffrences entre les notions de classe
et instance de la classe :
classe = attributs + mthodes + mcanismes dinstanciation +
mcanismes de destruction

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

44 / 151

Diffrences entre classe et objet.


Il est important de saisir les diffrences entre les notions de classe
et instance de la classe :
classe = attributs + mthodes + mcanismes dinstanciation +
mcanismes de destruction
instance de la classe = valeurs des attributs + accs aux mthodes

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

44 / 151

Diffrences entre classe et objet.


Il est important de saisir les diffrences entre les notions de classe
et instance de la classe :
classe = attributs + mthodes + mcanismes dinstanciation +
mcanismes de destruction
instance de la classe = valeurs des attributs + accs aux mthodes
Linstanciation est le mcanisme qui permet de crer des instances
dont les traits sont dcrits par la classe.
La destruction est le mcanisme qui permet de dtruire une
instance de la classe.
Lensemble des instances dune classe constitue lextension de la
classe .
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

44 / 151

Exemple : Un QCM.

On veut produire une application permettant des tudiants de


rpondre des QCM. Comme un QCM est form dune suite de
questions, on sintresse dfinir la classe Question. Elle doit
permettre de
1. Poser une question (laffichage ou, mieux, la production dune
chane de caractres reprsentant la question sera employ
cet effet)
2. Enregistrer la rponse fournie par un tudiant
3. Dterminer si la rponse fournie est la bonne

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

45 / 151

Conception de la classe Question


Les services offerts par la classe :
Savoir si la rponse est correcte
Enregistrer
une rponse

rponseCorrecte

Obtenir une chane de


caractres reprsentant
la question

?
Aucune hypothse sur la structure interne
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

46 / 151

Diagramme UML correspondant

Question
+repondre(r: int): void
+reponseCorrecte(): boolean
+toString(): String

Du point de vue de lutilisateur de la classe, seuls les services


publics sont pertinents

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

47 / 151

Classe : dclaration.
En Java, pour dclarer une classe on utilise le mot-cl class suivi
du nom de la classe.
p u b l i c class P o i n t {
...
}

Rgles
1. La premire lettre du nom dune classe doit toujours tre
une lettre majuscule (ex : Chat).
2. Mlange de minuscule, majuscule avec la premire lettre de
chaque mot en majuscule (ex : ChatGris).
3. Une classe se trouve dans un fichier portant son nom
suivi lextention .java (ex : ChatGris.java)

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

48 / 151

Classe : visibilit dun membre


En Java, lencapsulation est assure par un ensemble de
modificateurs daccs permettant de prciser la visibilit des
membres de la classe :
Dfinition
Un membre dont la dclaration est prcde par le mot cl public
est visible depuis toutes instances de toutes classes.
Dfinition
Un membre dont la dclaration est prcde par le mot cl private
nest visible que dans les instances de la classe.
Remarque(s)
Il existe dautres types de visibilit pour un membre que nous
nvoquerons pas dans limmdiat.
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

49 / 151

Dfinition Java du squelette de la classe Question


Le mot cl public permet dindiquer les services qui sont
accessibles lutilisateur.
public class Q u e s t i o n {
...
public void r e p o n d r e ( i n t r e p o n s e ) {
...
}
public boolean r e p o n s e C o r r e c t e ( ) {
...
}
public S t r i n g t o S t r i n g ( ) {
...
}
...
}
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

50 / 151

Dfinition Java du squelette de la classe Question


Le mot cl private assure lencapsulation
p u b l i c class Q u e s t i o n {
// i n t i t u l de l a q u e s t i o n
private S t r i n g q u e s t i o n ;
// t a b l e a u d e s c h o i x p o s s i b l e s
private S t r i n g [ ] c h o i x ;
// numro de l a r p o n s e de l t u d i a n t
private i n t r e p o n s e ;
// numro de l a bonne r p o n s e
private i n t bonneReponse ;
p u b l i c void r e p o n d r e ( i n t r e p o n s e ) {
...
}
...
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

51 / 151

Diagramme UML complet

Question
+Question(q: String, c: String[], b :int)
+repondre(r: int): void
+reponseCorrecte(): boolean
+toString(): String
-question: String
-choix: String[]
-bonneReponse: int
-reponse(): int

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

52 / 151

Accs aux membres dune classe.


Dfinition
Lensemble des mthodes dun objet accessibles de lextrieur
(depuis un autre objet) est appel interface. Elle caractrise le
comportement de lobjet.
Dfinition
Laccs un membre dune classe se fait au moyen de loprateur
. .
Dfinition
Linvocation dune mthode dinterface est appel appel de
mthode. Il peut tre vu comme un envoi de message entre objet.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

53 / 151

Accs aux membres.


p u b l i c class P o i n t {
p u b l i c double x , y ;
}
p u b l i c class R e c t a n g l e {
p u b l i c double l o n g e u r , l a r g e u r ;
public Point c o i n ;
public Point c a l c u l e r C e n t r e ( ) ;
}
p u b l i c class T e s t F i g u r e {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
Rectangle rect ;
P o i n t c o i n D u R e c t = rect.coin ;
double xDuCoinDuRect = coinDuRect.x ;
P o i n t c e n t r e D u R e c t = rect.calculerCentre() ;
double yDuCentreDuRect = centreDuRect.y ;
}
}
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

54 / 151

Accs rcursifs aux membres.


p u b l i c class P o i n t {
p u b l i c double x , y ;
}
p u b l i c class R e c t a n g l e {
p u b l i c double l o n g e u r , l a r g e u r ;
public Point c o i n ;
public Point c a l c u l e r C e n t r e ( ) ;
}
p u b l i c class T e s t F i g u r e {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
Rectangle rect ;
double xDuCoinDuRect = rect.coin.x ;
double yDuCentreDuRect = rect.calculerCentre().y
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

55 / 151

Classe : membres dinstance et de classes


Quelque soit le niveau de visibilit, on distingue deux types de
membres :
Dfinition
Un membre de classe est un membre commun toutes les
instances de la classe et existe ds que la classe est dfinie en
dehors et indpendamment de toute instanciation. Les membres de
classe sont dclars laide du mot-cl static.
Dfinition
Un membre qui nest pas de classe, i.e. dont la dclaration nest pas
prcde du mot-cl static est dit membre dinstance. Chaque
instance dune classe possde son propre exemplaire dun attribut
dinstance de la classe.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

56 / 151

Variable de classe
On veut introduire des choix par dfaut
p u b l i c class Q u e s t i o n {
...
private S t r i n g [ ] c h o i x D f a u t = {" v r a i " , " faux " } ;
...
}

Problme : chaque instance dispose de son propre tableau


choixDfaut alors quil devrait tre commun tous les objets
p u b l i c class Q u e s t i o n {
...
p r i v a t e static S t r i n g [ ] c h o i x D f a u t
= {" v r a i " , " faux " } ;
...
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

57 / 151

Variable de classe
Classe Question

rponseCorrecte
question

choix

rponse

bonneRponse

choixDfaut
"vrai"
"faux"

Instance q1

Instance q2

rponseCorrecte

rponseCorrecte

question

question
"Vous tes"

"Vous avez"

choix

choix
"beau"

"5 ans"

"moche"

"10 ans"

rponse

bonneRponse

rponse

bonneRponse

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

58 / 151

Classe : laccs aux membres de classe


Les membres de classes dune classe donne tant communs
toutes les instances de la classe, laccs un membre de classe se
fait en appliquant loprateur . sur le nom de la classe.
System . o u t . p r i n t l n ( Question. c h o i x D e f a u t [ 1 ] ) ;

Laccs aux membres de classe peut aussi se faire avec une instance
de la classe suivie de loprateur . . Mais ceci est peu lisible et
nutiliser que pour le polymorphisme (voir cours suivant).
Q u e s t i o n q1 = new Q u e s t i o n ( ) ;
System . o u t . p r i n t l n ( q1. c h o i x D e f a u t [ 1 ] ) ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

59 / 151

Classe java type


Une classe java types contient trois grands types de membres :
p u b l i c class P o i n t {

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

60 / 151

Classe java type


Une classe java types contient trois grands types de membres :
p u b l i c class P o i n t {
// ( 1 ) A t t r i b u t s
p r i v a t e double x , y ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

60 / 151

Classe java type


Une classe java types contient trois grands types de membres :
p u b l i c class P o i n t {
// ( 1 ) A t t r i b u t s
p r i v a t e double x , y ;
// ( 2 ) C o n s t r u c t e u r s
p u b l i c P o i n t ( double x , double y ) { . . . }

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

60 / 151

Classe java type


Une classe java types contient trois grands types de membres :
p u b l i c class P o i n t {
// ( 1 ) A t t r i b u t s
p r i v a t e double x , y ;
// ( 2 ) C o n s t r u c t e u r s
p u b l i c P o i n t ( double x , double y ) { . . . }
// ( 3 ) Mthodes
p u b l i c double d i s t a n c e A v e c ( P o i n t p2 ) { . . . }
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

60 / 151

Classe java type


Une classe java types contient trois grands types de membres :
p u b l i c class P o i n t {
// ( 1 ) A t t r i b u t s
p r i v a t e double x , y ;
// ( 2 ) C o n s t r u c t e u r s
p u b l i c P o i n t ( double x , double y ) { . . . }
// ( 3 ) Mthodes
p u b l i c double d i s t a n c e A v e c ( P o i n t p2 ) { . . . }
}

Remarque(s)
Les constructeurs sont des mthodes particulires, ils seront donc
introduits aprs celles-ci dans ce cours. Cependant, vous devez
toujours dclarer les constructeurs aprs les attributs et
avant les autres mthodes (voir ci-dessus).
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

60 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

61 / 151

Dclaration dun attributs


En Java, toutes les variables doivent tre dclares avant dtre
utilises (les attributs comme les variable locales des mthodes).
La dclaration des attributs se fait de prfrence en dbut de classe
et leurs noms commencent par des minuscules.
On indique au compilateur :
1. Un ensemble de modificateurs (facultatif ).
2. Le type de la variable.
3. Le nom de la variable.
p r i v a t e double z ;
public S t r i n g s t r ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

62 / 151

Les types en Java

Le type dune variable en Java peut tre :


I

Types dits primitifs : int, double, boolean, etc.

nom dune classe : par exemple, les chanes de caractres


sont des instances de la classe String.

Remarque(s)
Nous laissons de ct pour linstant le cas des tableaux sur lesquels
nous reviendrons plus tard.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

63 / 151

Les types primitifs


Type
byte
short
int
long
float
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 nest pas un objet !

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

64 / 151

Affecter une valeur un attribut


Laffectation dune valeur une variable est effectue par
linstruction
variable = expression ;

Laffectation se fait en deux temps :


1. lexpression est calcule ;
2. la valeur calcule est affecte la variable.
Exemple
x = 36.0 d ;
y = x + 1;
s t r = " Linus " ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

65 / 151

Initialisation dun attribut


En Java, une variable doit tre initialise (recevoir une valeur)
avant dtre utilise dans une expression.
Sils ne sont pas initialiss expressment par le programmeur, les
attributs seront automatiquement initialiss par le compilateur. Ils
reoivent alors une valeur par dfaut de leur type : 0 pour 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.
p r i v a t e i n t x = 1;
p u b l i c S t r i n g s t r = " L i c e n c e MIAGE" ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

66 / 151

Les constantes

On peut bloquer la modification de la valeur dun attribut (en


dehors de linstanciation) laide du mot-cl final.
final p r i v a t e i n t x ;

Remarque(s)
On utilise souvent un attribut de classe dclar final pour dfinir
une constante :
final s t a t i c p u b l i c double PI = 3 . 1 4 d ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

67 / 151

Les types en Java : dclarer les attributs

p u b l i c class Logement {
// l e s a t t r i b u t s
f i n a l p u b l i c double s u r f a c e ;
p u b l i c 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 ;
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

68 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

69 / 151

Les mthodes en Java : syntaxe et dfinition

La syntaxe pour dfinir le corps dune mthode est identique celle


utilise en C pour dfinir une fonction. Notamment, les noms et la
syntaxe
I

des instructions (conditionnelles, itratives, etc.) et,

des oprateurs (arithmtiques, de comparaison, logiques, etc.)

sont les mmes quen C.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

70 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

71 / 151

Le mot cl this.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

72 / 151

Dfinition du mot cl this.

Dfinition
Dans le corps dune mthode, le mot cl this dsigne linstance sur
laquelle est invoque la mthode. Ce mot cl est utilis dans 3
circonstances :
1. pour accder aux attributs de lobjets
2. pour comparer la rfrence de lobjet invoquant la mthode
une autre rfrence
3. pour passer la reference de lobjets invoquant la mthode en
paramtre dune autre mthode

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

73 / 151

Utilisation du this : accs un attribut.


Dans le corps dune mthode, this permet daccder aux attributs
de lobjet lorsque ceux-ci sont masqus par un paramtre ou par
une variable locale.
p u b l i c class Q u e s t i o n {
int reponse ;
...
p u b l i c void r e p o n d r e ( i n t r e p o n s e ) {
this . r e p o n s e = r e p o n s e ;
}
p u b l i c boolean r e p o n s e C o r r e c t e ( ) {
r e t u r n r e p o n s e == bonneReponse ;
}
...
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

74 / 151

Utilisation du this : comparer la rfrence.

Dans le corps dune mthode, this permet de comparer la rfrence


de lobjet sur lequel est invoqu la mthode une autre rfrence.
p u b l i c class Animal {
Estomac e s t o m a c ;
...
p u b l i c void manger ( Animal v i c t i m e ) {
// On ne p e u t p a s s e manger c o m p l t e m e n t s o i mme
i f ( this != victime ) {
estomac . a d d N o u r i t u r e ( v i c t i m e ) ;
}
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

75 / 151

Utilisation du this : rfrence en paramtre


Dans le corps dune mthode, this permet de passer la rfrence de
lobjet sur lequel est invoqu une autre mthode.
p u b l i c class E n t r e p r i s e {
public i n t c a l c u l e r S a l a i r e ( I n d i v i d u x ) { . . . }
}
p u b l i c class I n d i v i d u {
i n t compte ;
Entreprise entreprise ;
...
p u b l i c void d e m i s s i o n n e r ( ) {
compte += e n t r e p r i s e . c a l c u l e r S a l a i r e ( this ) ;
e n t r e p r i s e = null ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

76 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

77 / 151

Les accesseurs.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

78 / 151

Respect de lencapsulation

Rgle
Les attributs doivent :
I

toujours tre dclars privs :


private int longeur ;

tre accd en lecture par un accesseurs en lecture :


public int getLongeur() ;

tre accd en criture par un accesseurs en criture :


public void setLongeur(int l) ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

79 / 151

Pourquoi cacher les attributs ?

p u b l i c class P o i n t {
public i n t x , y ;
}
p u b l i c class F i g u r e {
public Point c ;
p u b l i c void t r a n s l a t e r ( i n t x , i n t y ) {
t h i s . c . x += x ;
t h i s . c . y += y ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

80 / 151

Pourquoi cacher les attributs ?

p u b l i c class P o i n t {
p u b l i c int[] t u p l e ;
}
p u b l i c class F i g u r e {
public Point c ;
p u b l i c void t r a n s l a t e r ( i n t x , i n t y ) {
t h i s . c . x += x ;
t h i s . c . y += y ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

81 / 151

Pourquoi cacher les attributs ?

p u b l i c class P o i n t {
p u b l i c int[] t u p l e ;
}
p u b l i c class F i g u r e {
public Point c ;
p u b l i c void t r a n s l a t e r ( i n t x , i n t y ) {
this.c.x += x;
this.c.y += y;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

82 / 151

Pourquoi cacher les attributs ?


p u b l i c class P o i n t {
private i n t x , y ;
p u b l i c i n t getX() { . . . }
p u b l i c void setX(int x) { . . . }
p u b l i c i n t getY() { . . . }
p u b l i c void setY(int y) { . . . }
}
p u b l i c class F i g u r e {
public Point c ;
p u b l i c void t r a n s l a t e r ( i n t x , i n t y ) {
t h i s . c . s e t X ( t h i s . c . getX ()+ x ) ;
t h i s . c . s e t Y ( t h i s . c . getY ()+ y ) ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

83 / 151

Pourquoi cacher les attributs ?

p u b l i c class P o i n t {
p r i v a t e int[] t u p l e ;
p u b l i c i n t getX ( ) { . . . }
p u b l i c void s e t X ( i n t x ) { . . . }
p u b l i c i n t getY ( ) { . . . }
p u b l i c void s e t Y ( i n t y ) { . . . }
}
p u b l i c class F i g u r e {
public Point c ;
p u b l i c void t r a n s l a t e r ( i n t x , i n t y ) {
t h i s . c . s e t X ( t h i s . c . getX ()+ x ) ;
t h i s . c . s e t Y ( t h i s . c . getY ()+ y ) ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

84 / 151

Rappel

Une classe implmente un concept associant


I des donnes manipules exclusivement par les instances de la
classe
I

les attributs : mode daccs private pour garantir la


protection de linformation

les traitements que lon souhaite effectuer


I

les mthodes publiques : mode daccs public visibles depuis


lextrieur de la classe = vision client
les mthodes prives : mode daccs private visibles
uniquement depuis lintrieur de la classe (autres mthodes)
= vision fournisseur

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

85 / 151

Accesseurs : bonne et mauvaise pratique

Mauvaise pratique La cration des mthodes publiques ou


prives doit se faire en fonction des besoins et non -priori. On
ne dfinit pas des accesseurs ou (pire) des accesseurs publics
systmatiquement

Bonne pratique Si on a besoin dun accesseur en lecture et/ou


en criture, alors on le/les cre :
I

si le besoin est lintrieur de la classe (fournisseur) =


accesseur priv
si le besoin est lextrieur de la classe (client) = accesseur
public mais attention, danger ! Il faut assurer lindpendance
de la reprsentation

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

86 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

87 / 151

Les mthodes de classe.


Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

88 / 151

Les mthodes static en java.


Dfinition
Comme pour les attributs, une mthode de classe est une
mthode dont la dclaration est prcde du modificateur static.
Elle ne sexcute pas relativement une instance de classe et ne
peut donc pas utiliser "directement" :
I

des attributs instances

des methodes instances

le mot cle this

Les mthodes de classe peuvent tre utilses pour :


1. Manipuler les attributs de classe (lecture ou affectation) ;
2. Dfinir une mthode gnrique sur la classe.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

89 / 151

Mthode de classe (1) : Utilisation des attributs


de classe.
Une mthode de classe peut tre utilise pour manipuler des
attributs de classe.
p u b l i c class I n d i v i d u {
static int ageRetraite ;
s t a t i c void m o d i f i e r A g e R e t r a i t e ( i n t a g e R e t r a i t e ) {
Individu . ageRetraite = ageRetraite ;
}
}

Attention
Ici, on ne peut pas utiliser le mot cl this pour accder lattribut
de classe ageRetraitre.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

90 / 151

Mthode de classe (2) : Les mthodes gnrique.


Une mthode de classe nutilise pas toujours des attributs de classe.
Elle peut tre introduite pour effectuer des actions gnriques sur
des ensembles dinstances de la classe.
p u b l i c class P o i n t {
public f l o a t d i s t a n c e ( Point p ) { . . . }
static f l o a t d i s t a n c e E n t r e ( P o i n t p1 , P o i n t p2 ) { . . . }
}
p u b l i c class T e s t P o i n t {
p u b l i c void main ( S t r i n g [ ] a r g s ) {
Point a , b ;
...
dist = a . distance (b );
d i s t = Point . d i s t a n c e E n t r e ( a , b ) ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

91 / 151

Classes nayant que des mthodes static.


Remarque(s)
Une classe peut ne contenir que des membres static. Dans ce cas
elle ne sert pas a creer des objets ! ! !
Exemple 1 - La classe Math est une classe bote outils ne
possdant que des constantes (E et PI) et mthodes de classes.
i n t r a y o n = 30 ;
double s u r f a c e =

Math . PI Math . pow ( r a y o n , 2 ) ;

Exemple 2 - La classe System qui reprsente la VM ne possdant


que des attributs et mthodes de classes : il ny a pas de raison
den avoir plusieurs instances.
// Permet d a f f i c h e r d e s m e s s a g e s d a n s l a c o n s o l e
System . o u t . p r i n t l n ( " H e l l o , World ! " ) ;
// Permet d a r r t e r b r u t a l e m e n t un programme .
System . e x i t ( 0 ) ;
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

92 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

93 / 151

La surcharge.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Le mot cl this.
Les accesseurs.
Les mthodes de classe.
La surcharge.
Les constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

94 / 151

La signature dune mthode Java


Dfinition
On appelle signature dune mthode, lensemble compos de :
I

son nom

des types de ses arguments

Elle permet didentifier de manire unique une mthode au sein


dune classe.

ATTENTION
En java, ne font pas partie de la signature dune mthode :
1. le nom de ses arguments (comme en C)
2. son type de retour de la mthode (void ou non)
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

95 / 151

La signature dune mthode Java


Dfinition
On appelle surcharge (en anglais overloading ) dune mthode,
la possibilit de dfinir des comportements diffrents pour la mme
mthode selon les arguments passs en paramtres. Dans ce cas,
deux mthodes dune mme classe peuvent porter le mme "nom"
mais nont pas la mme signature.
p u b l i c class R e c t a n g l e {
p u b l i c void r e d i m e n s i o n n e r ( int f a c t e u r ) {
largeur = largeur facteur ;
longueur = longueur facteur ;
}
p u b l i c void r e d i m e n s i o n n e r ( float a , float b ) {
largeur = largeur + a ;
l o n g u e u r = l o n g u e u r +b ;
}
}
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

96 / 151

La signature dune mthode Java

p u b l i c class R e c t a n g l e {
p u b l i c void r e d i m e n s i o n n e r ( int f a c t e u r ) { . . . }
p u b l i c void r e d i m e n s i o n n e r ( float a , float b ) { . . . }
}
p u l i c class T e s t R e c t a n g l e {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
Rectangle r1 ;
...
r1 . redimensionner ( 2 ) ;
r 1 . r e d i m e n s i o n n e r ( 2 , 3.1 ) ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

97 / 151

La signature dune mthode Java

ATTENTION
Il ne faut pas confondre la surcharge ( en anglais overloading ) et la redfinition (en anglais overriding ) qui sera
tudie dans le cours sur le polymorphisme et qui correspond la
possibilit de spcifier le comportement dune mthode lexcution selon le type dobjets linvoquant.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

98 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Le mcanisme dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

99 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Le mcanisme dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

100 / 151

Le mcanisme dinstanciation.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Le mcanisme dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

101 / 151

Instanciation de classe.

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

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

102 / 151

Constructeur en Java : dfinition (suite)


Dfinition
Un constructeur est une mthode qui na pas de type de retour,
qui porte le mme nom que la classe. Cest cette mthode qui sera
automatiquement appele linstanciation de la classe, i.e.,au
moment de la cration dun objet. Les constructeurs permettent,
entre autres, dinitialiser les attributs de la classe.
p u b l i c class P o i n t {
private int x ;
private int y ;
p u b l i c Point ( i n t x , i n t y ) {
this . x = x ;
this . y = y ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

103 / 151

Constructeur en Java : invocation


Dfinition
Pour crer une instance dune classe, on utilise loprateur new
avec lun des constructeurs de la classe : p = new Point(2,3);
Cette invocation :
1. alloue lespace mmoire ncessaire pour stocker les proprits
2. cre une rfrence sur cet espace mmoire
3. excute le code du constructeur pour initialiser les donnes
4. retourne la rfrence ainsi cre.
Remarque(s)
Tout est dynamique :
les instances dune classe sont instancies dynamiquement.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

104 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Le mcanisme dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

105 / 151

Constructeur par dfaut.


Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Le mcanisme dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

106 / 151

Constructeur par dfaut : dfinition.


Rgle
Toute classe possde au moins un constructeur.

Dfinition
En abscence de dclaration explicite dun constructeur, un
constructeur par dfaut sera automatiquement ajout par le
compilateur Java.
Pour classe Toto, ce constructeur par dfaut sera :
[ p u b l i c ] Toto ( ) {}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

107 / 151

Constructeur par dfaut : ce qui est fait.

Remarque(s)
La notion de constructeur par dfaut est en partie li lhritage ;
elle sera donc complte plus tard lorsque nous introduirons cette
notion.
Dans un premier temps, on retiendra quun constructeur par
dfaut :
1. initialise les attributs numrique de types primitif 0 ;
2. initialise les attributs de (boolean) false ;
3. initialise les attributs de types Objet null.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

108 / 151

Constructeur par dfaut : exemple.


p u b l i c class P o i n t {
private int x ;
private int y ;
public a f f i c h e r ( ) {
System . o u t . p r i n t l n ( " x="+x+" e t y="+y ) ;
}
}
p u b l i c class T e s t P o i n t ( ) {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
P o i n t p = new P o i n t ( ) ;
p. afficher ();
}
}
java TestPoint
x=0 et y=0

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

109 / 151

Constructeur par dfaut : la limite.

Attention
Le constructeur par dfaut nest ajout par Java si et seulement
sil ny a pas de constructeur explicite.
Une classe ne possde donc pas toujours un construceur sans
paramtre.
Si lon en veut un en plus dun constructeur paramtre, il faut
le dclarer explicitement.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

110 / 151

Constructeur par dfaut : la limite.

p u b l i c class P o i n t {
private int x ;
private int y ;
p u b l i c Point ( i n t x , i n t y ) {
this . x = x ;
this . y = y ;
}
}
p u b l i c class T e s t P o i n t ( ) {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
Point p = new Point() ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

111 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Le mcanisme dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

112 / 151

Plusieurs constructeurs.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Le mcanisme dinstanciation.
Constructeur par dfaut.
Plusieurs constructeurs.
Excutable Java.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

113 / 151

Surcharge de constructeur.

Si une classe a plusieurs constructeurs, il sagit de surcharge :


I

mme nom (celui de la classe)

types des paramtres diffrents.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

114 / 151

Exemple de constructeurs.
p u b l i c class Q u e s t i o n {
...
p u b l i c Question ( S t r i n g q u e s t i o n , S t r i n g [ ] c h o i x ,
i n t bonneReponse ) {
this . question = question ;
this . choix = choix ;
t h i s . bonneReponse = bonneReponse ;
this . reponse = 0;
}
p u b l i c Question ( S t r i n g q u e s t i o n , S t r i n g [ ] c h o i x ) {
this . question = question ;
this . choix = choix ;
t h i s . bonneReponse = 0 ;
this . reponse = 0;
}
...
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

115 / 151

Exemple de constructeurs imbriqus.


On peut utiliser un constructeur pour dfinir un autre constructeur,
au moyen du mot-cl this, mais cette invocation dun autre
constructeur doit tre la premire instruction.
p u b l i c class Q u e s t i o n {
...
p u b l i c Question ( S t r i n g q u e s t i o n , S t r i n g [ ] c h o i x ,
i n t bonneReponse ) {
this . question = question ;
this . choix = choix ;
t h i s . bonneReponse = bonneReponse ;
this . reponse = 0;
}
p u b l i c Question ( S t r i n g q u e s t i o n , S t r i n g [ ] c h o i x ) {
this ( question , choix , 0 ) ;
}
...
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

116 / 151

Exemple dinstanciation

p u b l i c class A p p l i Q u e s t i o n {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
S t r i n g [ ] rep = { " Blanc " , " Noir " };
Question q =
new Question ( " Le c h e v a l b l a n c e s t " , r e p , 1 ) ;
System . o u t . p r i n t l n ( q . t o S t r i n g ( ) ) ;
...
}

q est une rfrence vers une instance de Question

La valeur particulire null peut lui tre affecte

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

117 / 151

Classe : dfinition.
Dfinir une classe en Java, cest dfinir ses membres savoir :
(1) ses attributs, (2) le(s) constructeur(s), (3) et ses mthodes.
I
I
I

Il nest pas ncessaire de spcifier de mcanisme de


destruction,
transparente pour lutilisateur,
prise en charge par un gestionnaire appel garbage collector
charg de dtecter les instances dtruire.

Consquences
I

gain de fiabilit (pas de dsallocation errone).

a un cot (perte en rapidit).

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

118 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

119 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

120 / 151

Coder un executable.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

121 / 151

La mthode main de Java : concept


Il ne suffit pas de dfinir les attributs, constructeurs et mthodes
des diffrentes 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 :
p u b l i c 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 dentier comme en C.
public s t a t i c

J. Sopena (INRIA/UPMC)

int

main ( S t r i n g [ ] a r g s )

Le bases du langage Java.

122 / 151

Un premier programme Java

p u b l i c class H e l l o {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
System . o u t . p r i n t l n ( " H e l l o w o r l d ! ! ! " ) ;
}
}

Hello world !!!

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

123 / 151

Un deuxime programme Java


import j a v a . u t i l . S c a n n e r ;
p u b l i c class Main {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
i n t age ;
S c a n n e r s c = new S c a n n e r ( System . i n ) ;
System . o u t . p r i n t ( " S a i s i s s e z v o t r e ge : " ) ;
age = s c . n e x t I n t ( ) ;
i f ( age > 2 0 )
System . o u t . p r i n t l n ( " v o u s t e s ag " ) ;
e l s e i f ( age > 0 )
System . o u t . p r i n t l n ( " v o u s t e s j e u n e " ) ;
else
System . o u t . p r i n t l n ( " v o u s t e s en d e v e n i r " ) ;
}
}

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

124 / 151

Un deuxime programme Java


import j a v a . u t i l . S c a n n e r ;
p u b l i c class Main {
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
i n t age ;
S c a n n e r s c = new S c a n n e r ( System . i n ) ;
System . o u t . p r i n t ( " S a i s i s s e z v o t r e ge : " ) ;
age = s c . n e x t I n t ( ) ;
i f ( age > 2 0 )
System . o u t . p r i n t l n ( " v o u s t e s ag " ) ;
e l s e i f ( age > 0 )
System . o u t . p r i n t l n ( " v o u s t e s j e u n e " ) ;
else
System . o u t . p r i n t l n ( " v o u s t e s en d e v e n i r " ) ;
}
}
Saisissez votre ge : 16
vous tes jeune
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

124 / 151

Un troisime programme Java


p u b l i c class Main {
p u b l i c s t a t i c void f ( i n t [ ] t a b ) {
f o r ( i n t i = 0 ; i < t a b . l e n g t h ; ++i )
f o r ( i n t j = 0 ; j < t a b . l e n g t h i 1 ; ++j )
i f ( tab [ j ] > tab [ j + 1 ] ) {
i n t tmp = t a b [ j ] ;
tab [ j ] = tab [ j + 1 ] ;
t a b [ j + 1 ] = tmp ;
}
}
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
int [ ] t = { 2 , 7 , 1 , 5 };
Main . f ( t ) ;
for ( i n t i : t ) System . o u t . p r i n t ( i + " " ) ;
}
}
1 2 5 7
J. Sopena (INRIA/UPMC)

Le bases du langage Java.

125 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

126 / 151

Compilation.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

127 / 151

Compilation et excution (1)


tape 1 : on cre un fichier texte dont le nom est le nom de la
classe auquel on rajoute lextension .java.
On crit la dfinition de la classe Logement dans un fichier texte
nomm HelloWord.java.

Important
Un fichier ne peut contenir quune seule classe publique.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

128 / 151

Compilation et excution (2)


tape 2 : on compile le programme Java laide 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

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

129 / 151

Compilation et excution (3)


tape 3 : le JIT de la machine virtuelle compile la vole le
bytecode produit (cest--dire on excute la mthode main) laide
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

JIT

Machine virtuelle Java

J. Sopena (INRIA/UPMC)

Excution

Le bases du langage Java.

Systme
dexploitation

130 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

131 / 151

Structuration des sources.


Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Coder un executable.
Compilation.
Structuration des sources.
Des classes utiles.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

132 / 151

Compilation et interprtation (4)

Important

Bien positionner les variables denvironnement

PATH : doit contenir le rpertoire du compilateur et de


la machine virtuelle.
CLASSPATH : indique le chemin ou se trouve les classes (par
dfaut, le rpertoire courant) sinon vous aurez le
message derreur
Exception in thread "main"
java.lang.NoClassDefFoundError: HelloWorld

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

133 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

134 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

135 / 151

La classe String
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

136 / 151

Les chanes de caractres : le type String (1)


Les chanes de caractres sont des instances de la classe String.
Loprateur de concatnation des chanes de caractres est
loprateur +.

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 { . . . }

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

137 / 151

Les chanes de caractres : le type String (2)


La classe String offre de nombreuses autres possibilits :
I

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 lindice 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 dindice
beginIndex endIndex - 1.

etc ...

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

138 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

139 / 151

Les tableaux.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

140 / 151

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 (cest--dire
le nombre dlments).

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

141 / 151

Les tableaux unidimensionnels

La dclaration dun tableau prcise simplement le type des lments


du tableau :
int [ ] tableau ;

La dimension du tableau est prcis lors de son instanciation


// c r e un t a b l e a u p o u v a n t c o n t e n i r 50 e n t i e r s
t a b l e a u = new i n t [ 5 0 ] ;

La taille dun tableau ne peut plus tre modifie par la suite.

Dimension du tableau : tableau.length

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

142 / 151

Les tableaux unidimensionnels

On accde llment dindice i du tableau en crivant


tableau[i].

Les indices commencent 0.

Java vrifie automatiquement lindice lors de laccs.

Remarque(s)
On peut aussi donner explicitement la liste des lments :dun
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" } ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

143 / 151

Les tableaux unidimensionnels


Remarque(s)
Si lon 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 lon


veut quune 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 linstance dans la case :
v i l l e [ 5 0 ] = new Logement ( 6 7 . 0 d , 5 e +5);

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

144 / 151

Les tableaux unidimensionnels

Largument 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
Si lon crit
java Programme a 3 5.7 true

alors args est un tableau de 1 dimension de taille 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".

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

145 / 151

Outline
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

146 / 151

Les enveloppes.
Java en quelques mots
Comparatif Java et C++
Programmation oriente objets.
Les classes Java
Les attributs.
Les mthodes.
Les constructeurs.
Excutable Java.
Des classes utiles.
La classe String
Les tableaux.
Les enveloppes.

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

147 / 151

Les classes enveloppes des types primitifs

chaque type primitif est associ une classe quon appelle classe
enveloppe de ce type primitif.
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 ) ;

De plus, chaque classe enveloppe dun type primitif possde une


mthode pour convertir une instance de la classe en une valeur du
type primitif associ.
int i = entier . intValue ();

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

148 / 151

Les classes enveloppes des types primitifs


Pour les autres types primitifs, les noms des classes enveloppes
sont :
Type primitif
short
int
long
byte
float
double
boolean
char

J. Sopena (INRIA/UPMC)

classe enveloppe
Short
Integer
Long
Byte
Float
Double
Boolean
Character

Le bases du langage Java.

149 / 151

Les classes enveloppes des types primitifs


Pour chaque classe enveloppe, il existe plusieurs constructeurs qui
permettent de faire des conversions explicites depuis les diffrents
types primitifs ou depuis une chane de caractre.
I n t e g e r i = new I n e t g e r ( 3 3 ) ;
I n t e g e r i = new I n t e g e r ( " 6 " ) ;

Ces classes enveloppe permettent aussi de convertir, grce des


mthodes de classe, une chane de caractres en types primitifs
(int, float, boolean, ...)
i n t i = I n t e g e r . p a r s e I n t ( "6" ) ;
double d = Double . p a r s e D o u b l e ( " 6 . 8 9 " ) ;
boolean b = B o o l e a n . p a r s e B o o l e a n ( " f a l s e " ) ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

150 / 151

Les classes enveloppes : Autoboxing/Unboxing


La version 5.0 de Java introduit un mcanisme dautoboxing (mise
en bote) qui automatise le passage des types primitifs vers les
classes enveloppe. Lopration inverse sappelle unboxing.
Avant la version 5.0, pour grer une liste dInteger on devait
crire :
l i s t e . add (new I n t e g e r ( 8 9 ) ) ;
int i = l i s t e . get (n ) . intValue ( ) ;

Maintenant avec lautoboxing, le code est beaucoup moins lourd :


l i s t e . add ( 8 9 ) ;
int i = l i s t e . get (n ) ;

J. Sopena (INRIA/UPMC)

Le bases du langage Java.

151 / 151

Vous aimerez peut-être aussi