Académique Documents
Professionnel Documents
Culture Documents
et le langage Java
Master BBSG 2
Laurent Tichit
Departement Informatique et Interactions, Faculte des Sciences de Luminy
L.
c Tichit, 2015-2016 POO et Java 1 / 32
Java sans les objets
Ressources
Documentation
www.dil.univ-mrs.fr/~tichit/java/ (cours, docs)
java.sun.com : logiciel et docs, dont
la doc de lAPI : http://docs.oracle.com/javase/8/docs/api/
L.
c Tichit, 2015-2016 POO et Java 2 / 32
Java sans les objets
Ressources
Documentation
www.dil.univ-mrs.fr/~tichit/java/ (cours, docs)
java.sun.com : logiciel et docs, dont
la doc de lAPI : http://docs.oracle.com/javase/8/docs/api/
Logiciel
JRE - Java Runtime Environment : machine java + biblioth`eques, pour
executer les programmes java
JDK - Java Development Toolkit : compilateur et outils pour developper
(contient un JRE)
editeur de textes quelconque (bloc-notes, vi, Jext, gedit, etc.)
tr`es preferable : eclipse (EDI tr`es puissant)
L.
c Tichit, 2015-2016 POO et Java 2 / 32
Java sans les objets
Ressources
Documentation
www.dil.univ-mrs.fr/~tichit/java/ (cours, docs)
java.sun.com : logiciel et docs, dont
la doc de lAPI : http://docs.oracle.com/javase/8/docs/api/
Logiciel
JRE - Java Runtime Environment : machine java + biblioth`eques, pour
executer les programmes java
JDK - Java Development Toolkit : compilateur et outils pour developper
(contient un JRE)
editeur de textes quelconque (bloc-notes, vi, Jext, gedit, etc.)
tr`es preferable : eclipse (EDI tr`es puissant)
version courante de Java 8 (2015) : JavaSE 8 update ? ? (ou OpenJDK 8
build ? ?)
Windows : jdk-8u??-windows-i586/x64.exe
Ubuntu/Debian : openjdk-8-jdk
L.
c Tichit, 2015-2016 POO et Java 2 / 32
Java sans les objets
Le langage Java
L.
c Tichit, 2015-2016 POO et Java 3 / 32
Java sans les objets
MaClasse.java MaClasse.class
texte javac
bytecode
machine
-hte
L.
c Tichit, 2015-2016 POO et Java 4 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 5 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 5 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 5 / 32
Java sans les objets
fichier Bonjour.java
public class Bonjour {
public static void main(String[] args) {
System.out.println("Bonsoir !");
}
}
L.
c Tichit, 2015-2016 POO et Java 6 / 32
Java sans les objets
fichier Bonjour.java
public class Bonjour {
public static void main(String[] args) {
System.out.println("Bonsoir !");
}
}
Essai :
>javac Bonjour.java
>
L.
c Tichit, 2015-2016 POO et Java 6 / 32
Java sans les objets
fichier Bonjour.java
public class Bonjour {
public static void main(String[] args) {
System.out.println("Bonsoir !");
}
}
Essai :
>javac Bonjour.java
>java Bonjour
Bonsoir !
>
L.
c Tichit, 2015-2016 POO et Java 6 / 32
Java sans les objets
fichier Bonjour.java
public class Bonjour {
public static void main() {
System.out.println("Bonsoir !");
}
}
Essai :
>javac Bonjour.java
>java Bonjour.class
Exception in thread "main"
java.lang.NoClassDefFoundError: Bonjour/class
L.
c Tichit, 2015-2016 POO et Java 7 / 32
Java sans les objets
fichier Bonjour.java
public class Bonjour {
public static void main() {
System.out.println("Bonsoir !");
}
}
Essai :
>javac Bonjour.java
>java Bonjour
Exception in thread "main"
java.lang.NoSuchMethodError: main
L.
c Tichit, 2015-2016 POO et Java 8 / 32
Java sans les objets
fichier Bonjour.java
public class Bonjour {
public static void main() {
System.out.println("Bonsoir !");
}
}
Essai :
>javac Bonjour.java
>java Bonjour
Exception in thread "main"
java.lang.NoSuchMethodError: main
Une classe executable doit posseder une methode ayant la signature
public static void main(String[] args)
L.
c Tichit, 2015-2016 POO et Java 8 / 32
Java sans les objets
Les langages orientes objets ont ete developpes pour lutter contre la
complexite des grosses applications :
il est difficile den montrer linteret sur de petits exemples
ce cours fait appel ` a lexperience et/ou limagination de lauditeur
L.
c Tichit, 2015-2016 POO et Java 9 / 32
Java sans les objets
Les langages orientes objets ont ete developpes pour lutter contre la
complexite des grosses applications :
il est difficile den montrer linteret sur de petits exemples
ce cours fait appel ` a lexperience et/ou limagination de lauditeur
L.
c Tichit, 2015-2016 POO et Java 9 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 10 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 10 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 10 / 32
Java sans les objets
Approche du langage
en Python
def distance(x1, y1, x2, y2):
dx = x1 - x2
dy = y1 - y2
return math.sqrt(dx * dx + dy * dy)
L.
c Tichit, 2015-2016 POO et Java 11 / 32
Java sans les objets
Approche du langage
en Python
def distance(x1, y1, x2, y2):
dx = x1 - x2
dy = y1 - y2
return math.sqrt(dx * dx + dy * dy)
en Java il faut
en Java
double distance(int x1, int y1, int x2, int y2) {
int dx, dy;
dx = x1 - x2;
dy = y1 - y2;
return Math.sqrt(dx * dx + dy * dy);
}
L.
c Tichit, 2015-2016 POO et Java 11 / 32
Java sans les objets
Types primitifs
Nombres entiers
byte : entier sur 8 bits (256 valeurs, de 128 `a +127)
short : entier sur 16 bits (65536 valeurs, de 32768 `a +32767)
int : entier sur 32 bits (' 4, 3 109 valeurs)
long : entier sur 64 bits
L.
c Tichit, 2015-2016 POO et Java 12 / 32
Java sans les objets
Types primitifs
Nombres entiers
byte : entier sur 8 bits (256 valeurs, de 128 `a +127)
short : entier sur 16 bits (65536 valeurs, de 32768 `a +32767)
int : entier sur 32 bits (' 4, 3 109 valeurs)
long : entier sur 64 bits
Nombres decimaux
float : flottant sur 32 bits (norme IEEE, 7 chiffres significatifs)
double : flottant sur 64 bits (norme IEEE, 15 chiffres significatifs)
L.
c Tichit, 2015-2016 POO et Java 12 / 32
Java sans les objets
Types primitifs
Nombres entiers
byte : entier sur 8 bits (256 valeurs, de 128 `a +127)
short : entier sur 16 bits (65536 valeurs, de 32768 `a +32767)
int : entier sur 32 bits (' 4, 3 109 valeurs)
long : entier sur 64 bits
Nombres decimaux
float : flottant sur 32 bits (norme IEEE, 7 chiffres significatifs)
double : flottant sur 64 bits (norme IEEE, 15 chiffres significatifs)
Valeurs booleennes
boolean : { false, true }
L.
c Tichit, 2015-2016 POO et Java 12 / 32
Java sans les objets
Types primitifs
Nombres entiers
byte : entier sur 8 bits (256 valeurs, de 128 `a +127)
short : entier sur 16 bits (65536 valeurs, de 32768 `a +32767)
int : entier sur 32 bits (' 4, 3 109 valeurs)
long : entier sur 64 bits
Nombres decimaux
float : flottant sur 32 bits (norme IEEE, 7 chiffres significatifs)
double : flottant sur 64 bits (norme IEEE, 15 chiffres significatifs)
Valeurs booleennes
boolean : { false, true }
Caract`eres
char : caract`eres Unicode sur 16 bits
L.
c Tichit, 2015-2016 POO et Java 12 / 32
Java sans les objets
Approche du langage
Lindentation (marge) et la fin de ligne nont aucun r
ole syntaxique
code erron
e
if (a <= b)
min = a;
max = b;
else
min = b;
max = a;
L.
c Tichit, 2015-2016 POO et Java 13 / 32
Java sans les objets
Approche du langage
Lindentation (marge) et la fin de ligne nont aucun r
ole syntaxique
code erron
e
if (a <= b)
min = a;
max = b;
else
min = b;
max = a;
La marge et la d
ecoupe en lignes sont sans importance. Il faut
ecrire :
code correct
if (a <= b) {
min = a;
max = b;
} else {
min = b;
max = a;
}
L.
c Tichit, 2015-2016 POO et Java 13 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 14 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 14 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 14 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 14 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 14 / 32
Java sans les objets
Approche du langage
L.
c Tichit, 2015-2016 POO et Java 15 / 32
Java sans les objets
Approche du langage
extrait de code
...
k = 0;
p = 1; /* p = 2^k */
while (p < u) {
k = k + 1; /* ou k++; */
p = 2 * p;
}
k = k - 1; /* ou k--; */
...
L.
c Tichit, 2015-2016 POO et Java 15 / 32
Java sans les objets
Approche du langage
Boucle pour
for (expr1 ; expr2 ; expr3 ) instruction
expr1 : initialisation
expr2 : condition de continuation (comme dans while)
expr3 : passage `a literation suivante
L.
c Tichit, 2015-2016 POO et Java 16 / 32
Java sans les objets
Approche du langage
Boucle pour
for (expr1 ; expr2 ; expr3 ) instruction
expr1 : initialisation
expr2 : condition de continuation (comme dans while)
expr3 : passage `a literation suivante
extrait de code
...
somme = 0;
for (i = 0; i < n; i = i + 1)
somme = somme + tab[i];
...
L.
c Tichit, 2015-2016 POO et Java 16 / 32
Java sans les objets
Presentation des classes sans parler des objets (en quelque sorte comment
faire du C en Java ? )
L.
c Tichit, 2015-2016 POO et Java 17 / 32
Java sans les objets
Presentation des classes sans parler des objets (en quelque sorte comment
faire du C en Java ? )
Pour aujourdhui, une classe est
une unite de compilation (i.e. un texte source)
L.
c Tichit, 2015-2016 POO et Java 17 / 32
Java sans les objets
Presentation des classes sans parler des objets (en quelque sorte comment
faire du C en Java ? )
Pour aujourdhui, une classe est
une unite de compilation (i.e. un texte source)
un espace de noms (i.e. un moyen dallonger les noms des variables et
fonctions, pour eviter les conflits)
L.
c Tichit, 2015-2016 POO et Java 17 / 32
Java sans les objets
Presentation des classes sans parler des objets (en quelque sorte comment
faire du C en Java ? )
Pour aujourdhui, une classe est
une unite de compilation (i.e. un texte source)
un espace de noms (i.e. un moyen dallonger les noms des variables et
fonctions, pour eviter les conflits)
Pratiquement, en quoi consiste faire du C en Java ?
ecrire le code `
a linterieur dune classe (ou plusieurs)
qualifier static toutes les variables et fonctions
qualifier public certains elements imposes
faire confiance `
a C, sauf pour les tableaux
L.
c Tichit, 2015-2016 POO et Java 17 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 18 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 18 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 18 / 32
Java sans les objets
fichier SimuLoiNormale.java
L.
c Tichit, 2015-2016 POO et Java 19 / 32
Java sans les objets
fichier SimuLoiNormale.java
L.
c Tichit, 2015-2016 POO et Java 19 / 32
Java sans les objets
fichier SimuLoiNormale.java
L.
c Tichit, 2015-2016 POO et Java 19 / 32
Java sans les objets
fichier SimuLoiNormale.java
L.
c Tichit, 2015-2016 POO et Java 19 / 32
Java sans les objets
fichier SimuLoiNormale.java
L.
c Tichit, 2015-2016 POO et Java 19 / 32
Java sans les objets
fichier SimuLoiNormale.java
L.
c Tichit, 2015-2016 POO et Java 19 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 20 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 20 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 20 / 32
Java sans les objets
plus fort : deux methodes de la meme classe peuvent avoir le meme nom, il
suffit quelles aient des signatures distinctes
class SimuLoiNormale {
...
static double alea() { ... }
...
static double alea(int k) { ... }
...
}
L.
c Tichit, 2015-2016 POO et Java 21 / 32
Java sans les objets
plus fort : deux methodes de la meme classe peuvent avoir le meme nom, il
suffit quelles aient des signatures distinctes
class SimuLoiNormale {
...
static double alea() { ... }
...
static double alea(int k) { ... }
...
}
appels de ces methodes :
y = SimuLoiNormale.alea(); /* la premi`ere */
...
y = SimuLoiNormale.alea(20); /* la deuxi`eme */
L.
c Tichit, 2015-2016 POO et Java 21 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 22 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 22 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 22 / 32
Java sans les objets
Paquets (package)
L.
c Tichit, 2015-2016 POO et Java 23 / 32
Java sans les objets
Paquets (package)
package mesOutils;
class SimuLoiNormale {
static double alea() {
...
}
}
L.
c Tichit, 2015-2016 POO et Java 23 / 32
Java sans les objets
Paquets (package)
package mesOutils;
class SimuLoiNormale {
static double alea() {
...
}
}
L.
c Tichit, 2015-2016 POO et Java 23 / 32
Java sans les objets
Paquets (package)
package mesOutils;
class SimuLoiNormale {
static double alea() {
...
}
}
L.
c Tichit, 2015-2016 POO et Java 23 / 32
Java sans les objets
Paquets (package)
package mesOutils;
class SimuLoiNormale {
static double alea() {
...
}
}
L.
c Tichit, 2015-2016 POO et Java 23 / 32
Java sans les objets
Paquets (package)
L.
c Tichit, 2015-2016 POO et Java 24 / 32
Java sans les objets
Paquets (package)
L.
c Tichit, 2015-2016 POO et Java 24 / 32
Java sans les objets
Paquets (package)
L.
c Tichit, 2015-2016 POO et Java 24 / 32
Java sans les objets
Paquets (package)
L.
c Tichit, 2015-2016 POO et Java 24 / 32
Java sans les objets
Instruction import
L.
c Tichit, 2015-2016 POO et Java 25 / 32
Java sans les objets
Instruction import
L.
c Tichit, 2015-2016 POO et Java 25 / 32
Java sans les objets
Instruction import
L.
c Tichit, 2015-2016 POO et Java 25 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 26 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 26 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 26 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 26 / 32
Java sans les objets
fichier MonCadre.java
/* auteur: Laurent
* date: 20.10.14 */
package mesOutils;
import java.awt.*;
import java.awt.event.*;
public class MonCadre {
le code de la classe est ici
}
L.
c Tichit, 2015-2016 POO et Java 26 / 32
Java sans les objets
Conventions de nommage
L.
c Tichit, 2015-2016 POO et Java 27 / 32
Java sans les objets
Conventions de nommage
L.
c Tichit, 2015-2016 POO et Java 27 / 32
Java sans les objets
Conventions de nommage
L.
c Tichit, 2015-2016 POO et Java 27 / 32
Java sans les objets
Conventions de nommage
L.
c Tichit, 2015-2016 POO et Java 27 / 32
Java sans les objets
Conventions de nommage
L.
c Tichit, 2015-2016 POO et Java 27 / 32
Java sans les objets
Conventions de nommage
L.
c Tichit, 2015-2016 POO et Java 27 / 32
Java sans les objets
Conventions de nommage
L.
c Tichit, 2015-2016 POO et Java 27 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 28 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 28 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 28 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 28 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 28 / 32
Java sans les objets
L.
c Tichit, 2015-2016 POO et Java 28 / 32
Java sans les objets
Exemple :
fichier TestArgsMain.java
public class TestArgsMain {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
L.
c Tichit, 2015-2016 POO et Java 29 / 32
Java sans les objets
Exemple :
fichier TestArgsMain.java
public class TestArgsMain {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
Essai :
> javac TestArgsMain.java
> java TestArgsMain Combien vaut 2+3
Combien
vaut
2+3
>
L.
c Tichit, 2015-2016 POO et Java 29 / 32
Java sans les objets
null null
t1 t2
L.
c Tichit, 2015-2016 POO et Java 30 / 32
Java sans les objets
null null
t1 t2
0 0 0 0 0 0 0 null
t1 t2
L.
c Tichit, 2015-2016 POO et Java 30 / 32
Java sans les objets
null null
t1 t2
0 0 0 0 0 0 0 null
t1 t2
t2 = t1; (affectation)
0 0 0 0 0 0 0
t1 t2
L.
c Tichit, 2015-2016 POO et Java 30 / 32
Java sans les objets
Declaration
double[][] matrice;
Creation
matrice = new double[nl][nc];
Exemple (avec nl = 3, nc = 4) :
matrice
0 0 0 0
0 0 0 0
0 0 0 0
L.
c Tichit, 2015-2016 POO et Java 31 / 32
Java sans les objets
double[][] matrice;
...
matrice = new double[nl][];
for (int i = 0; i < nl; i++)
matrice[i] = new double[nc];
matrice
0 0 0 0
0 0 0 0
0 0 0 0
L.
c Tichit, 2015-2016 POO et Java 32 / 32