Java et les objets
Java, le langage
Sauf indication contraire, Java = C : mˆeme syntaxe, mˆemes concepts de base...
...avec la surcharge des noms des fonctions, comme en C++
Types primitifs (simples) :
byte (1 octet) short (2 octets) int (4 octets) long (8 octets)
float (4 octets) double (8 octets) char boolean
Tous les entiers sont «avec signe ». De plus
Les types primitifs ob´eissent `a la s´emantique de l’acc`es par valeur
Exemple : x == y signifie «xet yont mˆeme valeur »
Types objets :
–tableaux
–chaˆınes de caract`eres (String, une classe avec privil`eges)
–toutes les autres classes
Les objets ob´eissent `a la s´emantique de l’acc`es par r´ef´erence
Exemple : x == y signifie «xet yont mˆeme adresse »
c
H. Garreta, 2014 IHM et Java 9 / 21
Java et les objets
Notion de r´ef´erence en Java
r´ef´erence = pointeur g´er´e discr`etement par Java. Exemple
(on suppose avoir d´efini une classe Point) :
Point p; p contiendra une r´ef´erence sur un objet Point.
Pour l’instant, pcontient null ou «non initialis´e »
instantiation (cr´eation) d’un objet :
p = new Point(25, 50); Maintenant ppointe un morceau de m´emoire
contenant (au moins) les coordonn´ees (25,50).
on peut aussi associer d´eclaration et instantiation :
Point q = new Point(100, 200);
d´esignation des membres (sous r´eserve que xet distance soient membres de la
classe Point et qu’on ait le droit de les mentionner)
p.x
p.distance(q)
( en C++ cela s’´ecrirait Point *p; puis p->x et p->distance(q) )
les r´ef´erences sont modifiables. Par la suite, on pourra ´ecrire :
p = new Point(300, 0); la pr´ec´edente valeur de p est «oubli´ee »
c
H. Garreta, 2014 IHM et Java 10 / 21
Java et les objets
Tableaux
D´eclaration :
UnType tab[]; ou UnType[] tab; (ici tab vaut null)
Cr´eation du tableau :
tab = new UnType[nombre d’´el´ements];
Acc`es au ieme ´el´ement :
tab[i]
Nombre d’´el´ements du tableau :
tab.length
Un exemple :
public class Echo {
public static void main(String args[]) {
for (int i = 0; i < args.length; i++)
System.out.println(i + " : " + args[i]);
}
}Ijavac Echo.java
Ijava Echo poids 200+30 ’au revoir’
0 : poids
1 : 200+30
2 : au revoir
I
c
H. Garreta, 2014 IHM et Java 11 / 21
Java et les objets
Chaˆınes de caract`eres
Les objets String repr´esentent des chaˆınes de caract`eres immuables.
Notation :
String s = "Bonjour";
Concat´enation :
s + " `a tous" →"Bonjour `a tous"
Propri´et´e remarquable : si seul exp1est de type String
exp1+exp2⇔exp1+conversionEnString(exp2)
exemple :
System.out.println("x = " + x);
Comment ¸ca marche ? Deux cas : a) si exp2est d’un type primitif
exp1+exp2⇔exp1+ String.valueOf(exp1)
b) si exp2est un objet
exp1+exp2⇔exp1+exp2.toString()
(tous les objets poss`edent une telle m´ethode toString())
c
H. Garreta, 2014 IHM et Java 12 / 21