Vous êtes sur la page 1sur 163

Cours JAVA :

Le bases du langage Java.


Version 3.02
Julien Sopena
1
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.
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.
J. Sopena (INRIA/UPMC) 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 ?

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 :

James Gosling

Patrick Naughton

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 :

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 :

http://java.sun.com.

gratuit.

Dernire version : 1.6.

comprend de nombreux outils :

le compilateur.

le compilateur la vol "JIT".

le dbogueur.

le gnrateur de documentation.
Des environnements de dveloppements gratuits

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
modiant la machine virtuelle.
Lensemble 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 didentier 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 1.4 5.0

Toutes ces versions : Java 2
6.0
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 : rection, 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 (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.
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 :

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 :

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 spcier 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

gain de abilit (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
direntes (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) dnie par
Sun.
Portabilit
Le bytecode gnr par le compilateur ne dpend pas de larchi-
tecture 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 di-
rentes.
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 vrication (type oprande, taille de pile, ot
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 vrications eectues 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 :

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 larchitecture de la machine o a t
compil le code source
Note
Java perd (un peu) en ecacit 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 simpli 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 :

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
Problmatique de la programmation
Le schma simpli 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 :

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
Problmatique de la programmation
Le schma simpli 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 :

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.
PROGRAMME
Structures de donnes
Variable
Variable
Variable
Variable
Algorithmes
Fonction
Procdure
Fonction
Procdure
J. Sopena (INRIA/UPMC) Le bases du langage Java. 28 / 151
Conception par traitements : +/-

Les premiers concepteurs de systme informatique ont adopt


cette approche : systmes dexp., gestionnaires de fentres,
logiciels de gestion, logiciels de bureautique, logiciels de calcul
scientique, 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 dicile.
Les traitements sont gnralement beaucoup moins stables que
les donnes : changement de spcication, ajout de nouvelles
fonctionnalits, etc.
Les structures de donnes sous-jacentes sont choisies en
relation troite avec les traitements eectuer.
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 : an dtablir de faon stable et robuste larchitecture
dun systme, il semble raisonnable de sorganiser autour des
donnes manipules.
PROGRAMME
Objet
Fonction
Procdure
Variable
Variable
Objet
Fonction
Procdure
Variable
Variable
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 : dnition
Dnition
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 dnies dans lobjet


sont appels ses attributs (proprits).

Les procdures et fonctions dnies 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.
Lucky
Luke
Capsule
nautorisant que les
demandes de service
public
Demande
de service
Accs aux donnes
Interface
ensemble des
services publics
offerts
123
Luke
Rgle
Les donnes dun objet (son tat) peuvent tre lues ou modies
uniquement par les services proposs par lobjet lui-mme (ses
mthodes)
J. Sopena (INRIA/UPMC) Le bases du langage Java. 38 / 151
Encapsulation : dnition
Dnition
Le terme encapsulation dsigne le principe consistant cacher
linformation contenue dans un objet et de ne proposer que des
mthodes de modication/accs ces proprits (attributs).

Lobjet est vu de lextrieur comme une bote noire ayant


certaines proprits et ayant un comportement spci.

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 : dnition
Dnition
Le terme encapsulation dsigne le principe consistant cacher
linformation contenue dans un objet et de ne proposer que des
mthodes de modication/accs ces proprits (attributs).

Lobjet est vu de lextrieur comme une bote noire ayant


certaines proprits et ayant un comportement spci.

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 spcication de parties publics et pri-
ves 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 dnition
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.
Dnition
On appelle classe la structure dun objet, i.e., la dclaration de
lensemble des membres qui composeront un objet.
Dnition
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
Le concept dobjet : notion de classe
Pour tre vritablement intressante, la notion dobjet doit
permettre un certain degr dabstraction notion de classe.
Dnition
On appelle classe la structure dun objet, i.e., la dclaration de
lensemble des membres qui composeront un objet.
Dnition
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
Le concept dobjet : notion de classe
Pour tre vritablement intressante, la notion dobjet doit
permettre un certain degr dabstraction notion de classe.
Dnition
On appelle classe la structure dun objet, i.e., la dclaration de
lensemble des membres qui composeront un objet.
Dnition
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
prnom
nom
mdailles
Classe dcrivant les
caractristiques des
instances
Instanciation (new)
Signature et code du
service (mthode)
Nom et type
de lattribut
123
Lucky
Luke
0
Averell
Dalton
0
Joe
Dalton
Instances de la classe
J. Sopena (INRIA/UPMC) Le bases du langage Java. 43 / 151
Dirences entre classe et objet.
Il est important de saisir les dirences 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
Dirences entre classe et objet.
Il est important de saisir les dirences 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
Dirences entre classe et objet.
Il est important de saisir les dirences 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 dnir la classe Question. Elle doit
permettre de
1. Poser une question (lachage ou, mieux, la production dune
chane de caractres reprsentant la question sera employ
cet eet)
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 oerts par la classe :
?
rponseCorrecte
Savoir si la rponse est correcte
Obtenir une chane de
caractres reprsentant
la question
Enregistrer
une rponse
?
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.
publ i c cl ass Poi nt {
. . .
}
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 chier 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
modicateurs daccs permettant de prciser la visibilit des
membres de la classe :
Dnition
Un membre dont la dclaration est prcde par le mot cl public
est visible depuis toutes instances de toutes classes.
Dnition
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
Dnition Java du squelette de la classe Question
Le mot cl public permet dindiquer les services qui sont
accessibles lutilisateur.
public class Ques t i on {
. . .
public void r epondr e ( i nt r epons e ) {
. . .
}
public boolean r e pons e Cor r e c t e ( ) {
. . .
}
public St r i n g t o St r i n g ( ) {
. . .
}
. . .
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 50 / 151
Dnition Java du squelette de la classe Question
Le mot cl private assure lencapsulation
publ i c cl ass Ques t i on {
// i n t i t u l de l a que s t i on
private St r i n g que s t i on ;
// t a bl e a u des c hoi x p o s s i b l e s
private St r i n g [ ] c hoi x ;
// numro de l a r pons e de l t udi a nt
private i nt r epons e ;
// numro de l a bonne r pons e
private i nt bonneReponse ;
publ i c void r epondr e ( i nt r epons 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.
Dnition
Lensemble des mthodes dun objet accessibles de lextrieur
(depuis un autre objet) est appel interface. Elle caractrise le
comportement de lobjet.
Dnition
Laccs un membre dune classe se fait au moyen de loprateur
. .
Dnition
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.
publ i c cl ass Poi nt {
publ i c double x , y ;
}
publ i c cl ass Rect angl e {
publ i c double l ongeur , l a r g e u r ;
publ i c Poi nt c oi n ;
publ i c Poi nt c a l c u l e r Ce n t r e ( ) ;
}
publ i c cl ass Te s t Fi gur e {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
Rect angl e r e c t ;
Poi nt coi nDuRect = rect.coin ;
double xDuCoi nDuRect = coinDuRect.x ;
Poi nt cent r eDuRect = rect.calculerCentre() ;
double yDuCentreDuRect = centreDuRect.y ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 54 / 151
Accs rcursifs aux membres.
publ i c cl ass Poi nt {
publ i c double x , y ;
}
publ i c cl ass Rect angl e {
publ i c double l ongeur , l a r g e u r ;
publ i c Poi nt c oi n ;
publ i c Poi nt c a l c u l e r Ce n t r e ( ) ;
}
publ i c cl ass Te s t Fi gur e {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
Rect angl e r e c t ;
double xDuCoi nDuRect = 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 :
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 laide du mot-cl static.
Dnition
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
publ i c cl ass Ques t i on {
. . .
pr i vat e St r i ng [ ] c hoi xDf aut = {" v r a i " , " f aux " };
. . .
}
Problme : chaque instance dispose de son propre tableau
choixDfaut alors quil devrait tre commun tous les objets
publ i c cl ass Ques t i on {
. . .
pr i vat e static St r i ng [ ] c hoi xD f aut
= {" v r a i " , " f aux " };
. . .
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 57 / 151
Variable de classe
rponseCorrecte
choix
question
bonneRponse rponse
choixDfaut
"vrai"
"faux"
Classe Question
Instance q1 Instance q2
rponseCorrecte
choix
question
bonneRponse rponse
1 2
"Vous tes"
"beau"
"moche"
rponseCorrecte
choix
question
bonneRponse rponse
2 1
"Vous avez"
"5 ans"
"10 ans"
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 . out . p r i n t l n ( Question. c hoi xDe f aut [ 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).
Ques t i on q1 = new Ques t i on ( ) ;
System . out . p r i n t l n ( q1. c hoi xDe f aut [ 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 :
publ i c cl ass Poi nt {
// ( 1) At t r i b u t s
pr i vat e double x , y ;
// ( 2) Cons t r uc t e ur s
publ i c Poi nt ( double x , double y ) { . . . }
// ( 3) Mthodes
publ i c double di s t anc e Ave c ( Poi nt 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
Classe java type
Une classe java types contient trois grands types de membres :
publ i c cl ass Poi nt {
// ( 1) At t r i b u t s
pr i vat e double x , y ;
// ( 2) Cons t r uc t e ur s
publ i c Poi nt ( double x , double y ) { . . . }
// ( 3) Mthodes
publ i c double di s t anc e Ave c ( Poi nt 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
Classe java type
Une classe java types contient trois grands types de membres :
publ i c cl ass Poi nt {
// ( 1) At t r i b u t s
pr i vat e double x , y ;
// ( 2) Cons t r uc t e ur s
publ i c Poi nt ( double x , double y ) { . . . }
// ( 3) Mthodes
publ i c double di s t anc e Ave c ( Poi nt 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
Classe java type
Une classe java types contient trois grands types de membres :
publ i c cl ass Poi nt {
// ( 1) At t r i b u t s
pr i vat e double x , y ;
// ( 2) Cons t r uc t e ur s
publ i c Poi nt ( double x , double y ) { . . . }
// ( 3) Mthodes
publ i c double di s t anc e Ave c ( Poi nt 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
Classe java type
Une classe java types contient trois grands types de membres :
publ i c cl ass Poi nt {
// ( 1) At t r i b u t s
pr i vat e double x , y ;
// ( 2) Cons t r uc t e ur s
publ i c Poi nt ( double x , double y ) { . . . }
// ( 3) Mthodes
publ i c double di s t anc e Ave c ( Poi nt 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 modicateurs (facultatif ).
2. Le type de la variable.
3. Le nom de la variable.
pr i vat e double z ;
publ i c St r i ng 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 :

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 Taille (en bits) Exemple
byte 8 1
short 16 345
int 32 -2
long 64 2L
oat 32 3.14f, 2.5e+5
double 64 0.2d, 1.567e-5
boolean 1 true ou false
char 16 a
Attention
Un attribut de type primitif nest pas un objet !
J. Sopena (INRIA/UPMC) Le bases du langage Java. 64 / 151
Aecter une valeur un attribut
Laectation dune valeur une variable est eectue par
linstruction
v a r i a b l e = e x p r e s s i o n ;
Laectation se fait en deux temps :
1. lexpression est calcule ;
2. la valeur calcule est aecte la variable.
Exemple
x = 36. 0 d ;
y = x + 1;
s t r = " Li nus " ;
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.
pr i vat e i nt x = 1;
publ i c St r i ng s t r = " Li c e nc e MIAGE" ;
J. Sopena (INRIA/UPMC) Le bases du langage Java. 66 / 151
Les constantes
On peut bloquer la modication de la valeur dun attribut (en
dehors de linstanciation) laide du mot-cl nal.
nal pr i vat e i nt x ;
Remarque(s)
On utilise souvent un attribut de classe dclar nal pour dnir
une constante :
nal st at i c publ i c double PI = 3. 14 d ;
J. Sopena (INRIA/UPMC) Le bases du langage Java. 67 / 151
Les types en Java : dclarer les attributs
publ i c cl ass Logement {
// l e s a t t r i b u t s
f i na l publ i c double s u r f a c e ;
publ i c double p r i x ;
publ i c St r i ng p r o p r i e t a i r e ;
pr i vat 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 dnition
La syntaxe pour dnir le corps dune 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 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
Dnition du mot cl this.
Dnition
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.
publ i c cl ass Ques t i on {
i nt r epons e ;
. . .
publ i c void r epondr e ( i nt r epons e ) {
this . r epons e = r epons e ;
}
publ i c boolean r e pons e Cor r e c t e ( ) {
ret urn r epons 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.
publ i c cl ass Ani mal {
Estomac estomac ;
. . .
publ i c void manger ( Ani mal v i c t i me ) {
// On ne peut pas s e manger compl tement s oi mme
i f ( this != victime ) {
estomac . addNour i t ur e ( v i c t i me ) ;
}
}
}
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.
publ i c cl ass En t r e p r i s e {
publ i c i nt c a l c u l e r S a l a i r e ( I n d i v i d u x ) { . . . }
}
publ i c cl ass I n d i v i d u {
i nt compte ;
En t r e p r i s e e n t r e p r i s e ;
. . .
publ i c void de mi s s i onne 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 = nul l ;
}
}
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 :

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 ?
publ i c cl ass Poi nt {
publ i c i nt x , y ;
}
publ i c cl ass Fi gur e {
publ i c Poi nt c ;
publ i c void t r a n s l a t e r ( i nt x , i nt y ) {
t hi s . c . x += x ;
t hi s . c . y += y ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 80 / 151
Pourquoi cacher les attributs ?
publ i c cl ass Poi nt {
publ i c int[] t upl e ;
}
publ i c cl ass Fi gur e {
publ i c Poi nt c ;
publ i c void t r a n s l a t e r ( i nt x , i nt y ) {
t hi s . c . x += x ;
t hi s . c . y += y ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 81 / 151
Pourquoi cacher les attributs ?
publ i c cl ass Poi nt {
publ i c int[] t upl e ;
}
publ i c cl ass Fi gur e {
publ i c Poi nt c ;
publ i c void t r a n s l a t e r ( i nt x , i nt y ) {
this.c.x += x;
this.c.y += y;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 82 / 151
Pourquoi cacher les attributs ?
publ i c cl ass Poi nt {
private i nt x , y ;
publ i c i nt getX() { . . . }
publ i c void setX(int x) { . . . }
publ i c i nt getY() { . . . }
publ i c void setY(int y) { . . . }
}
publ i c cl ass Fi gur e {
publ i c Poi nt c ;
publ i c void t r a n s l a t e r ( i nt x , i nt y ) {
t hi s . c . set X ( t hi s . c . getX()+x ) ;
t hi s . c . set Y ( t hi s . c . getY()+y ) ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 83 / 151
Pourquoi cacher les attributs ?
publ i c cl ass Poi nt {
pr i vat e int[] t upl e ;
publ i c i nt getX ( ) { . . . }
publ i c void set X ( i nt x ) { . . . }
publ i c i nt getY ( ) { . . . }
publ i c void set Y ( i nt y ) { . . . }
}
publ i c cl ass Fi gur e {
publ i c Poi nt c ;
publ i c void t r a n s l a t e r ( i nt x , i nt y ) {
t hi s . c . set X ( t hi s . c . getX()+x ) ;
t hi s . c . set Y ( t hi s . c . getY()+y ) ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 84 / 151
Rappel
Une classe implmente un concept associant

des donnes manipules exclusivement par les instances de la


classe

les attributs : mode daccs private pour garantir la


protection de linformation

les traitements que lon souhaite eectuer

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 dnit 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 :

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.
Dnition
Comme pour les attributs, une mthode de classe est une
mthode dont la dclaration est prcde du modicateur static.
Elle ne sexcute pas relativement une instance de classe et ne
peut donc pas utiliser "directement" :

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 aectation) ;
2. Dnir 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.
publ i c cl ass I n d i v i d u {
st at i c i nt a g e Re t r a i t e ;
st at i c void mo di f i e r Ag e Re t r a i t e ( i nt a g e Re t r a i t e ) {
I n d i v i d u . a g e Re t r a i t e = a g e Re t r a i t e ;
}
}
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 eectuer des actions gnriques sur
des ensembles dinstances de la classe.
publ i c cl ass Poi nt {
publ i c f l oat d i s t a n c e ( Poi nt p) { . . . }
static f l oat di s t a nc e Ent r e ( Poi nt p1 , Poi nt p2 ) { . . . }
}
publ i c cl ass Tes t Poi nt {
publ i c void mai n ( St r i n g [ ] ar gs ) {
Poi nt a , b ;
. . .
d i s t = a . d i s t a n c e ( b ) ;
d i s t = Point . di s t a nc e Ent 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 nt r ayon = 30 ;
double s u r f a c e = Math . PI Math . pow( rayon , 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 des messages dans l a c ons ol e
System . out . p r i n t l n ( " Hel l o , Worl d ! " ) ;
// Permet d a r r t e r br ut al ement 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
Dnition
On appelle signature dune mthode, lensemble compos de :

son nom

des types de ses arguments


Elle permet didentier 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
Dnition
On appelle surcharge (en anglais overloading ) dune mthode,
la possibilit de dnir des comportements dirents 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.
publ i c cl ass Rect angl e {
publ i c void r e di me ns i onne r ( int f a c t e u r ) {
l a r g e u r = l a r g e u r f a c t e u r ;
l ongue ur = l ongue ur f a c t e u r ;
}
publ i c void r e di me ns i onne r ( oat a , oat b) {
l a r g e u r = l a r g e u r + a ;
l ongue ur = l ongue ur +b ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 96 / 151
La signature dune mthode Java
publ i c cl ass Rect angl e {
publ i c void r e di me ns i onne r ( int f a c t e u r ) { . . . }
publ i c void r e di me ns i onne r ( oat a , oat b) { . . . }
}
p u l i c cl ass Tes t Rect angl e {
publ i c st at i c void mai n ( St r i n g [ ] ar gs ) {
Rect angl e r 1 ;
. . .
r 1 . r e di me ns i onne r ( 2 ) ;
r 1 . r e di me ns i onne 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 overloa-
ding ) et la rednition (en anglais overriding ) qui sera
tudie dans le cours sur le polymorphisme et qui correspond la
possibilit de spcier le comportement dune mthode lex-
cution 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 : dnition (suite)
Dnition
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.
publ i c cl ass Poi nt {
pr i vat e i nt x ;
pr i vat e i nt y ;
publ i c Point ( i nt x , i nt y ) {
t hi s . x = x ;
t hi s . y = y ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 103 / 151
Constructeur en Java : invocation
Dnition
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 : dnition.
Rgle
Toute classe possde au moins un constructeur.
Dnition
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 :
[ publ 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.
publ i c cl ass Poi nt {
pr i vat e i nt x ;
pr i vat e i nt y ;
publ i c a f f i c h e r ( ) {
System . out . p r i n t l n ( "x="+x+" et y="+y ) ;
}
}
publ i c cl ass Tes t Poi nt ( ) {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
Poi nt p = new Poi nt ( ) ;
p . a f f i c h e r ( ) ;
}
}
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.
publ i c cl ass Poi nt {
pr i vat e i nt x ;
pr i vat e i nt y ;
publ i c Point ( i nt x , i nt y ) {
t hi s . x = x ;
t hi s . y = y ;
}
}
publ i c cl ass Tes t Poi nt ( ) {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
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 :

mme nom (celui de la classe)

types des paramtres dirents.


J. Sopena (INRIA/UPMC) Le bases du langage Java. 114 / 151
Exemple de constructeurs.
publ i c cl ass Ques t i on {
. . .
publ i c Question ( St r i ng ques t i on , St r i ng [ ] choi x ,
i nt bonneReponse ) {
t hi s . que s t i on = que s t i on ;
t hi s . c hoi x = c hoi x ;
t hi s . bonneReponse = bonneReponse ;
t hi s . r epons e = 0;
}
publ i c Question ( St r i ng ques t i on , St r i ng [ ] c hoi x ) {
t hi s . que s t i on = que s t i on ;
t hi s . c hoi x = c hoi x ;
t hi s . bonneReponse = 0;
t hi s . r epons e = 0;
}
. . .
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 115 / 151
Exemple de constructeurs imbriqus.
On peut utiliser un constructeur pour dnir un autre constructeur,
au moyen du mot-cl this, mais cette invocation dun autre
constructeur doit tre la premire instruction.
publ i c cl ass Ques t i on {
. . .
publ i c Question ( St r i ng ques t i on , St r i ng [ ] choi x ,
i nt bonneReponse ) {
t hi s . que s t i on = que s t i on ;
t hi s . c hoi x = c hoi x ;
t hi s . bonneReponse = bonneReponse ;
t hi s . r epons e = 0;
}
publ i c Question ( St r i ng ques t i on , St r i ng [ ] c hoi x ) {
t hi s ( ques t i on , choi x , 0 ) ;
}
. . .
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 116 / 151
Exemple dinstanciation
publ i c cl ass Appl i Que s t i on {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
St r i n g [ ] r ep = { " Bl anc " , " Noi r " };
Ques t i on q =
new Question ( "Le c he v a l bl anc e s t " , rep , 1 ) ;
System . out . p r i n t l n ( q . t o St r i n g ( ) ) ;
. . .
}

q est une rfrence vers une instance de Question

La valeur particulire null peut lui tre aecte


J. Sopena (INRIA/UPMC) Le bases du langage Java. 117 / 151
Classe : dnition.
Dnir une classe en Java, cest dnir ses membres savoir :
(1) ses attributs, (2) le(s) constructeur(s), (3) et ses mthodes.

Il nest pas ncessaire de spcier de mcanisme de


destruction,

transparente pour lutilisateur,

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


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 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 :
publ i c st at i c void mai n ( St r i ng [ ] ar gs )
Attention
La mthode main ne peut pas retourner dentier comme en C.
publ i c st at i c int mai n ( St r i ng [ ] ar gs )
J. Sopena (INRIA/UPMC) Le bases du langage Java. 122 / 151
Un premier programme Java
publ i c cl ass He l l o {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
System . out . p r i n t l n ( " He l l o wor l d ! ! ! " ) ;
}
}
Hello world !!!
J. Sopena (INRIA/UPMC) Le bases du langage Java. 123 / 151
Un deuxime programme Java
i mport j av a . u t i l . Scanner ;
publ i c cl ass Main {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
i nt age ;
Scanner s c = new Scanner ( System . i n ) ;
System . out . p r i n t ( " S a i s i s s e z v ot r e ge : " ) ;
age = s c . n e x t I n t ( ) ;
i f ( age > 20)
System . out . p r i n t l n ( " vous t e s ag " ) ;
el se i f ( age > 0)
System . out . p r i n t l n ( " vous t e s j e une " ) ;
el se
System . out . p r i n t l n ( " vous t e s en de v e ni r " ) ;
}
}
Saisissez votre ge : 16
vous tes jeune
J. Sopena (INRIA/UPMC) Le bases du langage Java. 124 / 151
Un deuxime programme Java
i mport j av a . u t i l . Scanner ;
publ i c cl ass Main {
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
i nt age ;
Scanner s c = new Scanner ( System . i n ) ;
System . out . p r i n t ( " S a i s i s s e z v ot r e ge : " ) ;
age = s c . n e x t I n t ( ) ;
i f ( age > 20)
System . out . p r i n t l n ( " vous t e s ag " ) ;
el se i f ( age > 0)
System . out . p r i n t l n ( " vous t e s j e une " ) ;
el se
System . out . p r i n t l n ( " vous t e s en de v e ni r " ) ;
}
}
Saisissez votre ge : 16
vous tes jeune
J. Sopena (INRIA/UPMC) Le bases du langage Java. 124 / 151
Un troisime programme Java
publ i c cl ass Main {
publ i c st at i c void f ( i nt [ ] t ab ) {
f or ( i nt i = 0; i < t ab . l e ngt h ; ++i )
f or ( i nt j = 0; j < t ab . l e ngt h i 1; ++j )
i f ( t ab [ j ] > t ab [ j + 1 ] ) {
i nt tmp = t ab [ j ] ;
t ab [ j ] = t ab [ j + 1 ] ;
t ab [ j + 1] = tmp ;
}
}
publ i c st at i c void mai n ( St r i ng [ ] ar gs ) {
i nt [ ] t = { 2 , 7 , 1 , 5 };
Main . f ( t ) ;
for ( i nt i : t ) System . out . 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 chier texte dont le nom est le nom de la
classe auquel on rajoute lextension .java.
On crit la dnition de la classe Logement dans un chier texte
nomm HelloWord.java.
Important
Un chier 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 getstatic #7 <Field java.io.PrintStream out>
3 ldc #1 <String "Hello World!" >
5 invokevirtual #8 <Method void println(java.lang.String)>
8 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.
java HelloWorld
HelloWorld.class
0 getstatic #7 <Field java.io.PrintStream out>
3 ldc #1 <String "Hello World!" >
5 invokevirtual #8 <Method void println(java.lang.String)>
8 return
Machine virtuelle Java
Systme
dexploitation
JIT
Excution
J. Sopena (INRIA/UPMC) Le bases du langage Java. 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.
St r i n g s t r 1 = . . . . ;
St r i n g s t r 2 = . . . . ;
i f ( s t r 1 . e qua l s ( s t r 2 ) ) { . . . } el se { . . . }
J. Sopena (INRIA/UPMC) Le bases du langage Java. 137 / 151
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 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 :
i nt [ ] t a bl e a u ;
La dimension du tableau est prcis lors de son instanciation
// c r e un t a bl e a u pouvant c o n t e n i r 50 e n t i e r s
t a bl e a u = new i nt [ 5 0 ] ;

La taille dun tableau ne peut plus tre modie 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 vrie automatiquement lindice lors de laccs.


Remarque(s)
On peut aussi donner explicitement la liste des lments :dun
tableau au moment de son instanciation :
i nt [ ] t a bl e a u = {1 , 2 , 3};
St r i n g [ ] mots = [ " Li c e nc 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 [ ] v i l l e ;
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 ( 67. 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.
i nt i = e n t i e r . i nt Va l ue ( ) ;
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 classe enveloppe
short Short
int Integer
long Long
byte Byte
oat Float
double Double
boolean Boolean
char Character
J. Sopena (INRIA/UPMC) 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 dirents
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, oat, boolean, ...)
i nt i = I n t e g e r . p a r s e I n t ( "6" ) ;
double d = Doubl e . par s eDoubl e ( " 6. 89 " ) ;
boolean b = Bool ean . par s eBool ean ( " 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 ) ) ;
i nt i = l i s t e . get ( n ) . i nt Va l ue ( ) ;
Maintenant avec lautoboxing, le code est beaucoup moins lourd :
l i s t e . add ( 8 9 ) ;
i nt i = l i s t e . get ( n ) ;
J. Sopena (INRIA/UPMC) Le bases du langage Java. 151 / 151

Vous aimerez peut-être aussi