Professional Documents
Culture Documents
J. Sopena (INRIA/UPMC) Le bases du langage Java. 1 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 2 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 3 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 4 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 5 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 6 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 7 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 8 / 151
Java évolue tout le temps Tout se complique
J. Sopena (INRIA/UPMC) Le bases du langage Java. 9 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 10 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 11 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 12 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 13 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 14 / 151
Java versus C++ : concepts (2) Java versus C++ : production du binaire
De plus,
- Tout est dynamique : les instances d’une classe sont
instanciées dynamiquement.
- La libération de mémoire est transparente pour l’utilisateur. Il Une fois achevée la production du logiciel, un choix doit être fait
n’est pas nécessaire de spécifier de mécanisme de destruction. entre fournir le source ou le binaire pour la machine du client.
La libération de l’espace mémoire est prise en charge un
gestionnaire appelé garbage collector ⇒ chargé de détecter les Généralement, une entreprise souhaite protéger le code source et
objets à détruire. distribuer le code binaire.
J. Sopena (INRIA/UPMC) Le bases du langage Java. 15 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 16 / 151
Java versus C++ : compilateur C++ Java versus C++ : chaîne de production du C
source.c
À l’instar du compilateur C, le compilateur C++ produit du code compilation : gcc source.c -o monProg
natif, i.e., qu’il produit un exécutable propre à l’environnement de
travail ou le code source est compilé. monProg
J. Sopena (INRIA/UPMC) Le bases du langage Java. 17 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 18 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 19 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 20 / 151
Java versus C++ : chaîne de production du Java Coût de la JVM sur les performances.
source.java
svgFigures/LOGO-Apple
J. Sopena (INRIA/UPMC) Le bases du langage Java. 21 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 22 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 23 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 24 / 151
Problématique de la programmation Problématique de la programmation
Le schéma simplifié d’un système informatique peut se résumer par Le schéma simplifié d’un système informatique peut se résumer par
la formule : la formule :
Système informatique = Structures de données + Traitements Système informatique = Structures de données + Traitements
J. Sopena (INRIA/UPMC) Le bases du langage Java. 25 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 25 / 151
Le schéma simplifié d’un système informatique peut se résumer par Java en quelques mots
la formule :
Comparatif Java et C++
Système informatique = Structures de données + Traitements Programmation orientée objets.
Conception par traitements.
Le cycle de vie d’un système peut être décomposé en deux grandes Conception par objets.
phases : Le concept d’encapsulation.
I Une phase de production qui consiste à réaliser le logiciel. Les classes Java
I Une phase de maintenance qui consiste à corriger et à faire Les attributs.
évoluer le logiciel. Les méthodes.
Lors de la production du système (au sens industriel du terme), le Les constructeurs.
concepteur a deux grandes options : Exécutable Java.
+ soit orienter sa conception sur les traitements. Des classes utiles.
+ soit orienter sa conception sur les données.
J. Sopena (INRIA/UPMC) Le bases du langage Java. 25 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 26 / 151
Java en quelques mots Principe : On sépare les données des moyens de traitement de ces
Comparatif Java et C++ données.
Programmation orientée objets.
Conception par traitements. P ROGRAMME
Conception par objets.
Le concept d’encapsulation. Structures de données Algorithmes
Les classes Java
Les attributs. Variable Procédure
Les méthodes. Variable Fonction
Les constructeurs.
Variable Procédure
Exécutable Java.
Des classes utiles. Variable Fonction
J. Sopena (INRIA/UPMC) Le bases du langage Java. 27 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 28 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 29 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 30 / 151
Conception par objets. Conception par objets : principe
Principe : afin d’établir de façon stable et robuste l’architecture
Java en quelques mots d’un système, il semble raisonnable de s’organiser autour des
Comparatif Java et C++ données manipulées.
Programmation orientée objets.
Conception par traitements.
Conception par objets. P ROGRAMME
Le concept d’encapsulation.
Objet Objet
Les classes Java
Les attributs.
Variable Variable
Les méthodes.
Les constructeurs. Variable Variable
J. Sopena (INRIA/UPMC) Le bases du langage Java. 31 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 32 / 151
Définition
I La construction d’un système va s’axer principalement sur la Un objet est une entité autonome, qui regroupe un ensemble de
détermination des données dans un premier temps et la propriétés (données) cohérentes et de traitements associés.
réalisation les traitements (de haut-niveau) agissant sur ces
données dans un second temps.
J. Sopena (INRIA/UPMC) Le bases du langage Java. 33 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 34 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 35 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 36 / 151
Intérêt
Protéger la structure interne de l’objet contre toute manipulation
non contrôlée, produisant une incohérence.
J. Sopena (INRIA/UPMC) Le bases du langage Java. 39 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 39 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 40 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 41 / 151
Pour être véritablement intéressante, la notion d’objet doit Pour être véritablement intéressante, la notion d’objet doit
permettre un certain degré d’abstraction ⇒ notion de classe. permettre un certain degré d’abstraction ⇒ notion de classe.
Définition
On appelle classe la structure d’un objet, i.e., la déclaration de
l’ensemble des membres qui composeront un objet.
J. Sopena (INRIA/UPMC) Le bases du langage Java. 42 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 42 / 151
Définition médailles
Nom et type
On appelle classe la structure d’un objet, i.e., la déclaration de de l’attribut
La classe peut être vue comme un moule pour la création des 123 0 0
objets, qu’on appelle alors des instances de la classe.
Instances de la classe
J. Sopena (INRIA/UPMC) Le bases du langage Java. 42 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 43 / 151
Différences entre classe et objet. Différences entre classe et objet.
Il est important de saisir les différences entre les notions de classe Il est important de saisir les différences entre les notions de classe
et instance de la classe : et instance de la classe :
classe = attributs + méthodes + mécanismes d’instanciation + classe = attributs + méthodes + mécanismes d’instanciation +
mécanismes de destruction mécanismes de destruction
J. Sopena (INRIA/UPMC) Le bases du langage Java. 44 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 44 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 44 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 45 / 151
+reponseCorrecte(): boolean
+toString(): String
J. Sopena (INRIA/UPMC) Le bases du langage Java. 48 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 49 / 151
Définition Java du squelette de la classe Question Définition Java du squelette de la classe Question
Le mot clé public permet d’indiquer les services qui sont Le mot clé private assure l’encapsulation
accessibles à l’utilisateur.
p u b l i c class Q u e s t i o n {
public 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 ;
public void r e p o n d r e ( i n t r e p o n s e ) { // 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 ;
}
// numéro 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 ;
public boolean r e p o n s e C o r r e c t e ( ) {
// numéro 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 ) {
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 J. Sopena (INRIA/UPMC) Le bases du langage Java. 51 / 151
Définition
L’ensemble des méthodes d’un objet accessibles de l’extérieur
Question
(depuis un autre objet) est appelé interface. Elle caractérise le
+Question(q: String, c: String[], b :int)
-reponse(): int
Définition
L’invocation d’une méthode d’interface est appelé appel de
méthode. Il peut être vu comme un envoi de message entre objet.
J. Sopena (INRIA/UPMC) Le bases du langage Java. 52 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 53 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 54 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 55 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 56 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 57 / 151
Variable de classe Classe : l’accès aux membres de classe
réponseCorrecte
Classe Question
question
Les membres de classes d’une classe donnée étant communs à
choix
toutes les instances de la classe, l’accès à un membre de classe se
réponse bonneRéponse
fait en appliquant l’opérateur « . » sur le nom de la classe.
choixDéfaut
"vrai" System . o u t . p r i n t l n ( Question. c h o i x D e f a u t [ 1 ] ) ;
"faux"
Instance q1 Instance q2
réponseCorrecte réponseCorrecte L’accès aux membres de classe peut aussi se faire avec une instance
question question de la classe suivie de l’opérateur « . ». Mais ceci est peu lisible et
"Vous êtes" "Vous avez"
choix choix à n’utiliser que pour le polymorphisme (voir cours suivant).
"beau" "5 ans"
"moche" "10 ans"
J. Sopena (INRIA/UPMC) Le bases du langage Java. 58 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 59 / 151
p u b l i c class P o i n t { 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 J. Sopena (INRIA/UPMC) Le bases du langage Java. 60 / 151
p u b l i c class P o i n t { p u b l i c class P o i n t {
// ( 1 ) A t t r i b u t s // ( 1 ) A t t r i b u t s
p r i v a t e double x , y ; p r i v a t e double x , y ;
// ( 2 ) C o n s t r u c t e u r s // ( 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 ) { . . . } p u b l i c P o i n t ( double x , double y ) { . . . }
// ( 3 ) Méthodes
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 J. Sopena (INRIA/UPMC) Le bases du langage Java. 60 / 151
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 J. Sopena (INRIA/UPMC) Le bases du langage Java. 63 / 151
Exemple
x = 36.0 d ;
Attention y = x + 1;
s t r = " Linus " ;
Un attribut de type primitif n’est pas un objet !
J. Sopena (INRIA/UPMC) Le bases du langage Java. 64 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 65 / 151
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 J. Sopena (INRIA/UPMC) Le bases du langage Java. 67 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 68 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 69 / 151
Les méthodes en Java : syntaxe et définition Outline
J. Sopena (INRIA/UPMC) Le bases du langage Java. 70 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 71 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 72 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 73 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 74 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 75 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 76 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 77 / 151
Les accesseurs. Respect de l’encapsulation
J. Sopena (INRIA/UPMC) Le bases du langage Java. 78 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 79 / 151
p u b l i c class P o i n t { p u b l i c class P o i n t {
public i n t x , y ; 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 { p u b l i c class F i g u r e {
public Point c ; 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 ) { 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 . x += x ;
t h i s . c . y += y ; t h i s . c . y += y ;
} }
} }
J. Sopena (INRIA/UPMC) Le bases du langage Java. 80 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 81 / 151
p u b l i c class P o i n t {
p u b l i c class P o i n t { private i n t x , y ;
p u b l i c int[] t u p l e ; 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 class F i g u r e { p u b l i c void setY(int y) { . . . }
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; p u b l i c class F i g u r e {
public Point c ;
this.c.y += y;
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. 82 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 83 / 151
p u b l i c class P o i n t {
Une classe implémente un concept associant
p r i v a t e int[] t u p l e ;
p u b l i c i n t getX ( ) { . . . } I des données manipulées exclusivement par les instances de la
p u b l i c void s e t X ( i n t x ) { . . . } classe
p u b l i c i n t getY ( ) { . . . } I les attributs : mode d’accès private pour garantir la
p u b l i c void s e t Y ( i n t y ) { . . . } protection de l’information
}
I les traitements que l’on souhaite effectuer
p u b l i c class F i g u r e {
public Point c ;
I les méthodes publiques : mode d’accès public visibles depuis
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 ) { l’extérieur de la classe =⇒ vision client
t h i s . c . s e t X ( t h i s . c . getX ()+ x ) ; I les méthodes privées : mode d’accès private visibles
t h i s . c . s e t Y ( t h i s . c . getY ()+ y ) ; uniquement depuis l’intérieur de la classe (autres méthodes)
} =⇒ vision fournisseur
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 84 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 85 / 151
Accesseurs : bonne et mauvaise pratique Outline
J. Sopena (INRIA/UPMC) Le bases du langage Java. 86 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 87 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 88 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 89 / 151
Méthode de classe (1) : Utilisation des attributs Méthode de classe (2) : Les méthodes générique.
de classe.
Une méthode de classe n’utilise pas toujours des attributs de classe.
Une méthode de classe peut être utilisée pour manipuler des Elle peut être introduite pour effectuer des actions génériques sur
attributs de classe. des ensembles d’instances de la classe.
p u b l i c class I n d i v i d u { p u b l i c class P o i n t {
static int ageRetraite ; public f l o a t d i s t a n c e ( Point p ) { . . . }
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 ) {
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 ) { . . . }
Individu . ageRetraite = ageRetraite ;
}
}
}
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 ;
Attention ...
dist = a . distance (b );
d i s t = Point . d i s t a n c e E n t r e ( a , b ) ;
Ici, on ne peut pas utiliser le mot clé this pour accéder à l’attribut
}
de classe ageRetraitre. }
J. Sopena (INRIA/UPMC) Le bases du langage Java. 90 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 91 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 92 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 93 / 151
La surcharge. La signature d’une méthode Java
J. Sopena (INRIA/UPMC) Le bases du langage Java. 94 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 95 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 98 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 99 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 100 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 101 / 151
Instanciation de classe. Constructeur en Java : définition (suite)
Définition
Un constructeur est une méthode qui n’a pas de type de retour,
qui porte le même nom que la classe. C’est cette méthode qui sera
automatiquement appelée à l’instanciation de la classe, i.e.,au
moment de la création d’un objet. Les constructeurs permettent,
Les instances d’une classe sont créées (construits) par une méthode entre autres, d’initialiser les attributs de la classe.
particulière de la classe appelée constructeur.
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. 102 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 103 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 104 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 105 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 106 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 107 / 151
Constructeur par défaut : ce qui est fait. Constructeur par défaut : exemple.
p u b l i c class P o i n t {
private int x ;
Remarque(s) private int y ;
public a f f i c h e r ( ) {
La notion de constructeur par défaut est en partie lié à l’héritage ;
System . o u t . p r i n t l n ( " x="+x+" ␣ e t ␣ y="+y ) ;
elle sera donc complétée plus tard lorsque nous introduirons cette }
notion. }
p u b l i c class T e s t P o i n t ( ) {
Dans un premier temps, on retiendra qu’un constructeur par
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
défaut : P o i n t p = new P o i n t ( ) ;
1. initialise les attributs numérique de types primitif à 0 ; p. afficher ();
}
2. initialise les attributs de (boolean) à false ; }
3. initialise les attributs de types Objet à null.
java TestPoint
x=0 et y=0
J. Sopena (INRIA/UPMC) Le bases du langage Java. 108 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 109 / 151
Constructeur par défaut : la limite. Constructeur par défaut : la limite.
p u b l i c class P o i n t {
private int x ;
private int y ;
Attention p u b l i c Point ( i n t x , i n t y ) {
this . x = x ;
Le constructeur par défaut n’est ajouté par Java si et seulement this . y = y ;
}
s’il n’y a pas de constructeur explicite. }
Une classe ne possède donc pas toujours un construceur sans
paramètre. p u b l i c class T e s t P o i n t ( ) {
Si l’on en veut un en plus d’un constructeur à paramètre, il faut p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {
le déclarer explicitement. Point p = new Point() ;
}
}
J. Sopena (INRIA/UPMC) Le bases du langage Java. 110 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 111 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 112 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 113 / 151
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 ;
Si une classe a plusieurs constructeurs, il s’agit de surcharge : this . choix = choix ;
t h i s . bonneReponse = b onneReponse ;
I même nom (celui de la classe) this . reponse = 0;
I types des paramètres différents. }
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. 114 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 115 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 116 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 117 / 151
Classe : définition. Outline
Définir une classe en Java, c’est définir ses membres à savoir :
(1) ses attributs, (2) le(s) constructeur(s), (3) et ses méthodes. Java en quelques mots
Comparatif Java et C++
I Il n’est pas nécessaire de spécifier de mécanisme de Programmation orientée objets.
destruction,
Les classes Java
I transparente pour l’utilisateur,
Les attributs.
I prise en charge par un gestionnaire appelé garbage collector
chargé de détecter les instances à détruire. Les méthodes.
Les constructeurs.
Exécutable Java.
Coder un executable.
Conséquences Compilation.
Structuration des sources.
I gain de fiabilité (pas de désallocation erronée).
Des classes utiles.
I a un coût (perte en rapidité).
J. Sopena (INRIA/UPMC) Le bases du langage Java. 118 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 119 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 120 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 121 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 122 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 123 / 151
import j a v a . u t i l . S c a n n e r ; 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 f ( i n t [ ] t a b ) {
Java en quelques mots
f o r ( i n t i = 0 ; i < t a b . l e n g t h ; ++i ) Comparatif Java et C++
f o r ( i n t j = 0 ; j < t a b . l e n g t h − i − 1 ; ++j )
Programmation orientée objets.
i f ( tab [ j ] > tab [ j + 1 ] ) {
i n t tmp = t a b [ j ] ; Les classes Java
tab [ j ] = tab [ j + 1 ] ;
Les attributs.
t a b [ j + 1 ] = tmp ;
} Les méthodes.
} Les constructeurs.
p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { Exécutable Java.
int [ ] t = { 2 , 7 , 1 , 5 }; Coder un executable.
Main . f ( t ) ; Compilation.
for ( i n t i : t ) System . o u t . p r i n t ( i + " ␣ " ) ;
Structuration des sources.
}
} Des classes utiles.
1 2 5 7
J. Sopena (INRIA/UPMC) Le bases du langage Java. 125 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 126 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 127 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 128 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 129 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 130 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 131 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 132 / 151
Compilation et interprétation (4) Outline
J. Sopena (INRIA/UPMC) Le bases du langage Java. 133 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 134 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 135 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 136 / 151
Les chaînes de caractères : le type String (1) Les chaînes de caractères : le type String (2)
Les chaînes de caractères sont des instances de la classe String.
L’opérateur de concaténation des chaînes de caractères est La classe String offre de nombreuses autres possibilités :
l’opérateur +.
I length() renvoie la longueur de la chaîne de caractères.
I toUpperCase et toLowerCase permettent, respectivement, de
Attention mettre la chaîne de caractères en lettres majuscules et
minuscules.
Pour comparer deux chaînes de caractères, on utilise la méthode I int indexOf (char ch) renvoie l’indice de la première
equals (ou equalsIgnoreCase) de la classe String. occurence du caractère ch dans la chaîne de caractères.
String str1 = . . . . ; I String substring(int beginIndex,int endIndex) qui
String str2 = . . . . ; retourne la sous-chaîne constitué des caractères d’indice
beginIndex à endIndex - 1.
i f ( s t r 1 . e q u a l s ( s t r 2 ) ) { . . . } else { . . . }
I etc ...
J. Sopena (INRIA/UPMC) Le bases du langage Java. 137 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 138 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 139 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 140 / 151
Les tableaux Les tableaux unidimensionnels
J. Sopena (INRIA/UPMC) Le bases du langage Java. 141 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 142 / 151
Remarque(s)
Si l’on déclare un tableau dont les éléments sont des références de
I On accède à l’élément d’indice i du tableau en écrivant
type logement :
tableau[i].
Logement [ ] ville ;
I Les indices commencent à 0.
I Java vérifie automatiquement l’indice lors de l’accès.
Alors, la ligne de commande
Remarque(s) v i l l e = new Logement [ 1 0 0 ] ;
On peut aussi donner explicitement la liste des éléments :d’un
tableau au moment de son instanciation : instancie un tableau de 100 références initialisées à null. Si l’on
int [ ] tableau = {1 ,2 ,3}; veut qu’une case contienne une référence vers une instance de la
S t r i n g [ ] mots = [ " L i c e n c e " , "MIAGE" , "POO" } ; classe Logement, on doit instancier une instance de la classe
Logement et écrire la référence de l’instance 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. 143 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 144 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 145 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 146 / 151
J. Sopena (INRIA/UPMC) Le bases du langage Java. 147 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 148 / 151
Les classes enveloppes des types primitifs Les classes enveloppes des types primitifs
Pour les autres types primitifs, les noms des classes enveloppes Pour chaque classe enveloppe, il existe plusieurs constructeurs qui
sont : permettent de faire des conversions explicites depuis les différents
types primitifs ou depuis une chaîne de caractère.
Type primitif classe enveloppe I n t e g e r i = new I n e t g e r ( 3 3 ) ;
short Short I n t e g e r i = new I n t e g e r ( " 6 " ) ;
int Integer
long Long
Ces classes enveloppe permettent aussi de convertir, grâce à des
byte Byte
méthodes de classe, une chaîne de caractères en types primitifs
float Float
(int, float, boolean, ...)
double Double
boolean 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 " ) ;
char Character 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. 149 / 151 J. Sopena (INRIA/UPMC) Le bases du langage Java. 150 / 151
l i s t e . add ( 8 9 ) ;
int i = l i s t e . get (n ) ;