sans les objets - bienvenue sur département …tichit/java/cours/javabbsg2-01.pdf · il est di...

95
La programmation orient´ ee objets et le langage Java Master BBSG 2 Laurent Tichit epartement Informatique et Interactions, Facult´ e des Sciences de Luminy Cours 1: Java “sans les objets” c L. Tichit, 2015-2016 POO et Java 1 / 32

Upload: haxuyen

Post on 12-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

La programmation orientee objetset le langage Java

Master BBSG 2Laurent Tichit

Departement Informatique et Interactions, Faculte des Sciences de Luminy

Cours 1: Java “sans les objets”

c©L. Tichit, 2015-2016 POO et Java 1 / 32

Page 2: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Ressources

Documentation

www.dil.univ-mrs.fr/~tichit/java/ (cours, docs)java.sun.com : logiciel et docs, dontla doc de l’API : http://docs.oracle.com/javase/8/docs/api/

Logiciel

JRE - Java Runtime Environment : machine java + bibliotheques, pourexecuter les programmes javaJDK - Java Development Toolkit : compilateur et outils pour developper(contient un JRE)editeur de textes quelconque (bloc-notes, vi, Jext, gedit, etc.)tres preferable : eclipse (EDI tres puissant)

version courante de Java 8 (2015) : JavaSE 8 update ? ? (ou OpenJDK 8build ? ?)

Windows : jdk-8u??-windows-i586/x64.exeUbuntu/Debian : openjdk-8-jdk

c©L. Tichit, 2015-2016 POO et Java 2 / 32

Page 3: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Ressources

Documentation

www.dil.univ-mrs.fr/~tichit/java/ (cours, docs)java.sun.com : logiciel et docs, dontla doc de l’API : http://docs.oracle.com/javase/8/docs/api/

Logiciel

JRE - Java Runtime Environment : machine java + bibliotheques, pourexecuter les programmes javaJDK - Java Development Toolkit : compilateur et outils pour developper(contient un JRE)editeur de textes quelconque (bloc-notes, vi, Jext, gedit, etc.)tres preferable : eclipse (EDI tres puissant)

version courante de Java 8 (2015) : JavaSE 8 update ? ? (ou OpenJDK 8build ? ?)

Windows : jdk-8u??-windows-i586/x64.exeUbuntu/Debian : openjdk-8-jdk

c©L. Tichit, 2015-2016 POO et Java 2 / 32

Page 4: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Ressources

Documentation

www.dil.univ-mrs.fr/~tichit/java/ (cours, docs)java.sun.com : logiciel et docs, dontla doc de l’API : http://docs.oracle.com/javase/8/docs/api/

Logiciel

JRE - Java Runtime Environment : machine java + bibliotheques, pourexecuter les programmes javaJDK - Java Development Toolkit : compilateur et outils pour developper(contient un JRE)editeur de textes quelconque (bloc-notes, vi, Jext, gedit, etc.)tres preferable : eclipse (EDI tres puissant)

version courante de Java 8 (2015) : JavaSE 8 update ? ? (ou OpenJDK 8build ? ?)

Windows : jdk-8u??-windows-i586/x64.exeUbuntu/Debian : openjdk-8-jdk

c©L. Tichit, 2015-2016 POO et Java 2 / 32

Page 5: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Le langage Java

cree par James Gosling, vers 1995 chezSun Microsystems Inc.

destine a l’informatique repartie : securite,reutilisabilite, portabilite

langage neuf(pas de compatibilite a assurer)langage oriente objetsbibliotheque tres importantelangage compile et interprete par uninterpreteur (appele machine virtuelle)

c©L. Tichit, 2015-2016 POO et Java 3 / 32

Page 6: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Java est compile et interprete

compilation : traduction texte java → bytecode

interpretation : execution du bytecode par une machine virtuelle Java(portabilite et securite)

MaClasse.java MaClasse.class

javac

javadonnées résultats

machine-hôte

texte bytecode

c©L. Tichit, 2015-2016 POO et Java 4 / 32

Page 7: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux commandes a connaıtre

compilation d’un fichier sourcejavac <nom de fichier>ex : javac Bonjour.java

execution d’une classe executablejava <nom de classe>ex : java Bonjour

il doit exister une classe Bonjour

comportant une methode main particuliere

avec eclipse tout cela devient transparent → rapidite de developpement maisnuit a la comprehension des mecanismes)

c©L. Tichit, 2015-2016 POO et Java 5 / 32

Page 8: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux commandes a connaıtre

compilation d’un fichier sourcejavac <nom de fichier>ex : javac Bonjour.java

execution d’une classe executablejava <nom de classe>ex : java Bonjour

il doit exister une classe Bonjour

comportant une methode main particuliere

avec eclipse tout cela devient transparent → rapidite de developpement maisnuit a la comprehension des mecanismes)

c©L. Tichit, 2015-2016 POO et Java 5 / 32

Page 9: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux commandes a connaıtre

compilation d’un fichier sourcejavac <nom de fichier>ex : javac Bonjour.java

execution d’une classe executablejava <nom de classe>ex : java Bonjour

il doit exister une classe Bonjour

comportant une methode main particuliere

avec eclipse tout cela devient transparent → rapidite de developpement maisnuit a la comprehension des mecanismes)

c©L. Tichit, 2015-2016 POO et Java 5 / 32

Page 10: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

L’inevitable � PRINT "HELLO" �

Une classe executable complete (minimale) :

fichier Bonjour.java

public class Bonjour {public static void main(String[] args) {

System.out.println("Bonsoir !");

}}

Essai :>javac Bonjour.java

>java Bonjour

Bonsoir !

>

c©L. Tichit, 2015-2016 POO et Java 6 / 32

Page 11: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

L’inevitable � PRINT "HELLO" �

Une classe executable complete (minimale) :

fichier Bonjour.java

public class Bonjour {public static void main(String[] args) {

System.out.println("Bonsoir !");

}}

Essai :>javac Bonjour.java

>

java Bonjour

Bonsoir !

>

c©L. Tichit, 2015-2016 POO et Java 6 / 32

Page 12: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

L’inevitable � PRINT "HELLO" �

Une classe executable complete (minimale) :

fichier Bonjour.java

public class Bonjour {public static void main(String[] args) {

System.out.println("Bonsoir !");

}}

Essai :>javac Bonjour.java

>java Bonjour

Bonsoir !

>

c©L. Tichit, 2015-2016 POO et Java 6 / 32

Page 13: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux erreurs frequentes

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

c©L. Tichit, 2015-2016 POO et Java 7 / 32

Page 14: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux erreurs frequentes

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 signaturepublic static void main(String[] args)

c©L. Tichit, 2015-2016 POO et Java 8 / 32

Page 15: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux erreurs frequentes

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 signaturepublic static void main(String[] args)

c©L. Tichit, 2015-2016 POO et Java 8 / 32

Page 16: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux mises en garde...

Les langages orientes objets ont ete developpes pour lutter contre lacomplexite des grosses applications :

il est difficile d’en montrer l’interet sur de petits exemplesce cours fait appel a l’experience et/ou l’imagination de l’auditeur

Les bibliotheques accompagnant ces langages sont tres copieuses :

la documentation de l’API est absolument indispensableles recherches dans cette doc sont de veritables � jeux de pistes �

ne pas hesiter a reutiliser des programmes qui fonctionnentplus que jamais il est necessaire de beaucoup pratiquer

c©L. Tichit, 2015-2016 POO et Java 9 / 32

Page 17: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Deux mises en garde...

Les langages orientes objets ont ete developpes pour lutter contre lacomplexite des grosses applications :

il est difficile d’en montrer l’interet sur de petits exemplesce cours fait appel a l’experience et/ou l’imagination de l’auditeur

Les bibliotheques accompagnant ces langages sont tres copieuses :

la documentation de l’API est absolument indispensableles recherches dans cette doc sont de veritables � jeux de pistes �

ne pas hesiter a reutiliser des programmes qui fonctionnentplus que jamais il est necessaire de beaucoup pratiquer

c©L. Tichit, 2015-2016 POO et Java 9 / 32

Page 18: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Parlant tres (trop ?) simplement, la POO c’est de la carrosserie :

packaging et gestion des droits d’acces aux elements des programmesmise en commun et reutilisation du code

Qu’y a-t-il sous cette carrosserie ? essentiellement, le C :

meme syntaxe de baseconservation de la grande majorite des concepts

Officiellement nous connaissons Python. Aujourd’hui, nous allons

presenter rapidement quelques differences entre la syntaxe de base de Java etcelle de Pythonfaire une mauvaise approche de la notion de classe

c©L. Tichit, 2015-2016 POO et Java 10 / 32

Page 19: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Parlant tres (trop ?) simplement, la POO c’est de la carrosserie :

packaging et gestion des droits d’acces aux elements des programmesmise en commun et reutilisation du code

Qu’y a-t-il sous cette carrosserie ? essentiellement, le C :

meme syntaxe de baseconservation de la grande majorite des concepts

Officiellement nous connaissons Python. Aujourd’hui, nous allons

presenter rapidement quelques differences entre la syntaxe de base de Java etcelle de Pythonfaire une mauvaise approche de la notion de classe

c©L. Tichit, 2015-2016 POO et Java 10 / 32

Page 20: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Parlant tres (trop ?) simplement, la POO c’est de la carrosserie :

packaging et gestion des droits d’acces aux elements des programmesmise en commun et reutilisation du code

Qu’y a-t-il sous cette carrosserie ? essentiellement, le C :

meme syntaxe de baseconservation de la grande majorite des concepts

Officiellement nous connaissons Python. Aujourd’hui, nous allons

presenter rapidement quelques differences entre la syntaxe de base de Java etcelle de Pythonfaire une mauvaise approche de la notion de classe

c©L. Tichit, 2015-2016 POO et Java 10 / 32

Page 21: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Les variables et fonctions doivent etre declarees. Exemple :

en Python

def distance(x1, y1, x2, y2):dx = x1 - x2dy = y1 - y2return 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);

}

c©L. Tichit, 2015-2016 POO et Java 11 / 32

Page 22: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Les variables et fonctions doivent etre declarees. Exemple :

en Python

def distance(x1, y1, x2, y2):dx = x1 - x2dy = y1 - y2return 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);

}

c©L. Tichit, 2015-2016 POO et Java 11 / 32

Page 23: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

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 }Caracteres

char : caracteres Unicode sur 16 bits

c©L. Tichit, 2015-2016 POO et Java 12 / 32

Page 24: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

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 }Caracteres

char : caracteres Unicode sur 16 bits

c©L. Tichit, 2015-2016 POO et Java 12 / 32

Page 25: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

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 }

Caracteres

char : caracteres Unicode sur 16 bits

c©L. Tichit, 2015-2016 POO et Java 12 / 32

Page 26: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

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 }Caracteres

char : caracteres Unicode sur 16 bits

c©L. Tichit, 2015-2016 POO et Java 12 / 32

Page 27: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

L’indentation (marge) et la fin de ligne n’ont aucun role syntaxique

code errone

if (a <= b)min = a;max = b;

elsemin = b;max = a;

La marge et la decoupe en lignes sont sans importance. Il faut ecrire :

code correct

if (a <= b) {min = a;max = b;

} else {min = b;max = a;

}

c©L. Tichit, 2015-2016 POO et Java 13 / 32

Page 28: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

L’indentation (marge) et la fin de ligne n’ont aucun role syntaxique

code errone

if (a <= b)min = a;max = b;

elsemin = b;max = a;

La marge et la decoupe en lignes sont sans importance. Il faut ecrire :

code correct

if (a <= b) {min = a;max = b;

} else {min = b;max = a;

}

c©L. Tichit, 2015-2016 POO et Java 13 / 32

Page 29: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Certaines instructions requierent un � ; � a la fin, d’autres non :

affectationvariable = expression;

appel de fonction sans resultatfonction(arg1, arg2, . . . argk);

instruction conditionnelleif (expression) instruction else instructionif (expression) instruction

boucle � tant que �

while (expression) instruction

boucle � pour �

for (expr1; expr2; expr3) instruction

c©L. Tichit, 2015-2016 POO et Java 14 / 32

Page 30: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Certaines instructions requierent un � ; � a la fin, d’autres non :

affectationvariable = expression;

appel de fonction sans resultatfonction(arg1, arg2, . . . argk);

instruction conditionnelleif (expression) instruction else instructionif (expression) instruction

boucle � tant que �

while (expression) instruction

boucle � pour �

for (expr1; expr2; expr3) instruction

c©L. Tichit, 2015-2016 POO et Java 14 / 32

Page 31: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Certaines instructions requierent un � ; � a la fin, d’autres non :

affectationvariable = expression;

appel de fonction sans resultatfonction(arg1, arg2, . . . argk);

instruction conditionnelleif (expression) instruction else instructionif (expression) instruction

boucle � tant que �

while (expression) instruction

boucle � pour �

for (expr1; expr2; expr3) instruction

c©L. Tichit, 2015-2016 POO et Java 14 / 32

Page 32: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Certaines instructions requierent un � ; � a la fin, d’autres non :

affectationvariable = expression;

appel de fonction sans resultatfonction(arg1, arg2, . . . argk);

instruction conditionnelleif (expression) instruction else instructionif (expression) instruction

boucle � tant que �

while (expression) instruction

boucle � pour �

for (expr1; expr2; expr3) instruction

c©L. Tichit, 2015-2016 POO et Java 14 / 32

Page 33: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Certaines instructions requierent un � ; � a la fin, d’autres non :

affectationvariable = expression;

appel de fonction sans resultatfonction(arg1, arg2, . . . argk);

instruction conditionnelleif (expression) instruction else instructionif (expression) instruction

boucle � tant que �

while (expression) instruction

boucle � pour �

for (expr1; expr2; expr3) instruction

c©L. Tichit, 2015-2016 POO et Java 14 / 32

Page 34: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Boucle � tant que � :while (expression) instruction

Exemple : etant donne u > 0,trouver le plus grand entier k tel que 2k < u

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--; */...

c©L. Tichit, 2015-2016 POO et Java 15 / 32

Page 35: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Approche du langage

Boucle � tant que � :while (expression) instruction

Exemple : etant donne u > 0,trouver le plus grand entier k tel que 2k < u

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--; */...

c©L. Tichit, 2015-2016 POO et Java 15 / 32

Page 36: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

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 l’iteration suivante

Exemple : somme des n elements d’un tableau de nombres tab :

extrait de code

...somme = 0;for (i = 0; i < n; i = i + 1)

somme = somme + tab[i];...

c©L. Tichit, 2015-2016 POO et Java 16 / 32

Page 37: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

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 l’iteration suivante

Exemple : somme des n elements d’un tableau de nombres tab :

extrait de code

...somme = 0;for (i = 0; i < n; i = i + 1)

somme = somme + tab[i];...

c©L. Tichit, 2015-2016 POO et Java 16 / 32

Page 38: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Une toute petite approche de la notion de classe

Presentation des classes sans parler des objets (en quelque sorte � commentfaire du C en Java ? �)

Pour aujourd’hui, une classe est

une unite de compilation (i.e. un texte source)un espace de noms (i.e. un moyen d’allonger les noms des variables etfonctions, pour eviter les conflits)

Pratiquement, en quoi consiste � faire du C en Java � ?

ecrire le code a l’interieur d’une classe (ou plusieurs)qualifier static toutes les variables et fonctionsqualifier public certains elements imposesfaire confiance a C, sauf pour les tableaux

c©L. Tichit, 2015-2016 POO et Java 17 / 32

Page 39: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Une toute petite approche de la notion de classe

Presentation des classes sans parler des objets (en quelque sorte � commentfaire du C en Java ? �)

Pour aujourd’hui, une classe est

une unite de compilation (i.e. un texte source)

un espace de noms (i.e. un moyen d’allonger les noms des variables etfonctions, pour eviter les conflits)

Pratiquement, en quoi consiste � faire du C en Java � ?

ecrire le code a l’interieur d’une classe (ou plusieurs)qualifier static toutes les variables et fonctionsqualifier public certains elements imposesfaire confiance a C, sauf pour les tableaux

c©L. Tichit, 2015-2016 POO et Java 17 / 32

Page 40: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Une toute petite approche de la notion de classe

Presentation des classes sans parler des objets (en quelque sorte � commentfaire du C en Java ? �)

Pour aujourd’hui, une classe est

une unite de compilation (i.e. un texte source)un espace de noms (i.e. un moyen d’allonger les noms des variables etfonctions, pour eviter les conflits)

Pratiquement, en quoi consiste � faire du C en Java � ?

ecrire le code a l’interieur d’une classe (ou plusieurs)qualifier static toutes les variables et fonctionsqualifier public certains elements imposesfaire confiance a C, sauf pour les tableaux

c©L. Tichit, 2015-2016 POO et Java 17 / 32

Page 41: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Une toute petite approche de la notion de classe

Presentation des classes sans parler des objets (en quelque sorte � commentfaire du C en Java ? �)

Pour aujourd’hui, une classe est

une unite de compilation (i.e. un texte source)un espace de noms (i.e. un moyen d’allonger les noms des variables etfonctions, pour eviter les conflits)

Pratiquement, en quoi consiste � faire du C en Java � ?

ecrire le code a l’interieur d’une classe (ou plusieurs)qualifier static toutes les variables et fonctionsqualifier public certains elements imposesfaire confiance a C, sauf pour les tableaux

c©L. Tichit, 2015-2016 POO et Java 17 / 32

Page 42: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

loi de probabilite uniforme

toutes les valeurs ont la meme probabilitela fonction Math.random() fait cela

loi normale ou gaussienne

densite de probabilite p(x) = 1

σ√

2πe−

12 ( x−µ

σ )2

(les valeurs centrales sontplus probables que les valeurs extremes)

comment l’avoir sur l’ordinateur ?Bonne approximation (les ri sont des tirages uniformes, 0 <= ri <= 1) :

y = r1 + r2 + · · ·+ r12 − 6

c©L. Tichit, 2015-2016 POO et Java 18 / 32

Page 43: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

loi de probabilite uniforme

toutes les valeurs ont la meme probabilitela fonction Math.random() fait cela

loi normale ou gaussienne

densite de probabilite p(x) = 1

σ√

2πe−

12 ( x−µ

σ )2

(les valeurs centrales sontplus probables que les valeurs extremes)

comment l’avoir sur l’ordinateur ?

Bonne approximation (les ri sont des tirages uniformes, 0 <= ri <= 1) :

y = r1 + r2 + · · ·+ r12 − 6

c©L. Tichit, 2015-2016 POO et Java 18 / 32

Page 44: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

loi de probabilite uniforme

toutes les valeurs ont la meme probabilitela fonction Math.random() fait cela

loi normale ou gaussienne

densite de probabilite p(x) = 1

σ√

2πe−

12 ( x−µ

σ )2

(les valeurs centrales sontplus probables que les valeurs extremes)

comment l’avoir sur l’ordinateur ?Bonne approximation (les ri sont des tirages uniformes, 0 <= ri <= 1) :

y = r1 + r2 + · · ·+ r12 − 6

c©L. Tichit, 2015-2016 POO et Java 18 / 32

Page 45: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

fichier SimuLoiNormale.java

public class SimuLoiNormale {

static double alea() {double s = 0;

for (int i = 0; i < 12; i++)

s = s + Math.random();

return s - 6;

}

static int nombre = 100;

public static void main(String[] args) {double somme, somcar;

somme = somcar = 0;

for (int i = 0; i < nombre; i++) {double x = alea();

somme = somme + x;

somcar = somcar + x * x;

}double moy = somme / nombre;

double var = somcar / nombre - moy * moy;

System.out.println("moyenne " + moy);

System.out.println("variance " + var);

}}

Quels sont les membres de la classeSimuLoiNormale ?

deux methodes :SimuLoiNormale.alea()SimuLoiNormale.main(. . . )

une variable :SimuLoiNormale.nombre

dans la classe on peut utiliser lenom court (voir appel d’alea)

dans une autre classe il faudraemployer le nom complet(voir l’appel de random)

c©L. Tichit, 2015-2016 POO et Java 19 / 32

Page 46: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

fichier SimuLoiNormale.java

public class SimuLoiNormale {

static double alea() {double s = 0;

for (int i = 0; i < 12; i++)

s = s + Math.random();

return s - 6;

}

static int nombre = 100;

public static void main(String[] args) {double somme, somcar;

somme = somcar = 0;

for (int i = 0; i < nombre; i++) {double x = alea();

somme = somme + x;

somcar = somcar + x * x;

}double moy = somme / nombre;

double var = somcar / nombre - moy * moy;

System.out.println("moyenne " + moy);

System.out.println("variance " + var);

}}

Quels sont les membres de la classeSimuLoiNormale ?

deux methodes :SimuLoiNormale.alea()SimuLoiNormale.main(. . . )

une variable :SimuLoiNormale.nombre

dans la classe on peut utiliser lenom court (voir appel d’alea)

dans une autre classe il faudraemployer le nom complet(voir l’appel de random)

c©L. Tichit, 2015-2016 POO et Java 19 / 32

Page 47: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

fichier SimuLoiNormale.java

public class SimuLoiNormale {

static double alea() {double s = 0;

for (int i = 0; i < 12; i++)

s = s + Math.random();

return s - 6;

}

static int nombre = 100;

public static void main(String[] args) {double somme, somcar;

somme = somcar = 0;

for (int i = 0; i < nombre; i++) {double x = alea();

somme = somme + x;

somcar = somcar + x * x;

}double moy = somme / nombre;

double var = somcar / nombre - moy * moy;

System.out.println("moyenne " + moy);

System.out.println("variance " + var);

}}

Quels sont les membres de la classeSimuLoiNormale ?

deux methodes :SimuLoiNormale.alea()SimuLoiNormale.main(. . . )

une variable :SimuLoiNormale.nombre

dans la classe on peut utiliser lenom court (voir appel d’alea)

dans une autre classe il faudraemployer le nom complet(voir l’appel de random)

c©L. Tichit, 2015-2016 POO et Java 19 / 32

Page 48: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

fichier SimuLoiNormale.java

public class SimuLoiNormale {

static double alea() {double s = 0;

for (int i = 0; i < 12; i++)

s = s + Math.random();

return s - 6;

}

static int nombre = 100;

public static void main(String[] args) {double somme, somcar;

somme = somcar = 0;

for (int i = 0; i < nombre; i++) {double x = alea();

somme = somme + x;

somcar = somcar + x * x;

}double moy = somme / nombre;

double var = somcar / nombre - moy * moy;

System.out.println("moyenne " + moy);

System.out.println("variance " + var);

}}

Quels sont les membres de la classeSimuLoiNormale ?

deux methodes :SimuLoiNormale.alea()SimuLoiNormale.main(. . . )

une variable :SimuLoiNormale.nombre

dans la classe on peut utiliser lenom court (voir appel d’alea)

dans une autre classe il faudraemployer le nom complet(voir l’appel de random)

c©L. Tichit, 2015-2016 POO et Java 19 / 32

Page 49: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

fichier SimuLoiNormale.java

public class SimuLoiNormale {

static double alea() {double s = 0;

for (int i = 0; i < 12; i++)

s = s + Math.random();

return s - 6;

}

static int nombre = 100;

public static void main(String[] args) {double somme, somcar;

somme = somcar = 0;

for (int i = 0; i < nombre; i++) {double x = alea();

somme = somme + x;

somcar = somcar + x * x;

}double moy = somme / nombre;

double var = somcar / nombre - moy * moy;

System.out.println("moyenne " + moy);

System.out.println("variance " + var);

}}

Quels sont les membres de la classeSimuLoiNormale ?

deux methodes :SimuLoiNormale.alea()SimuLoiNormale.main(. . . )

une variable :SimuLoiNormale.nombre

dans la classe on peut utiliser lenom court (voir appel d’alea)

dans une autre classe il faudraemployer le nom complet(voir l’appel de random)

c©L. Tichit, 2015-2016 POO et Java 19 / 32

Page 50: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Exemple : simulation de la loi normale

fichier SimuLoiNormale.java

public class SimuLoiNormale {

static double alea() {double s = 0;

for (int i = 0; i < 12; i++)

s = s + Math.random();

return s - 6;

}

static int nombre = 100;

public static void main(String[] args) {double somme, somcar;

somme = somcar = 0;

for (int i = 0; i < nombre; i++) {double x = alea();

somme = somme + x;

somcar = somcar + x * x;

}double moy = somme / nombre;

double var = somcar / nombre - moy * moy;

System.out.println("moyenne " + moy);

System.out.println("variance " + var);

}}

Quels sont les membres de la classeSimuLoiNormale ?

deux methodes :SimuLoiNormale.alea()SimuLoiNormale.main(. . . )

une variable :SimuLoiNormale.nombre

dans la classe on peut utiliser lenom court (voir appel d’alea)

dans une autre classe il faudraemployer le nom complet(voir l’appel de random)

c©L. Tichit, 2015-2016 POO et Java 19 / 32

Page 51: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

L’identification complete d’une methode

alea s’appelle en faitSimuLoiNormale.alea()

a l’interieur de sa classe on peut utiliser le nom court

deux methode distinctes peuvent avoir le meme nom :il suffit qu’elles appartiennent a des classes distinctes

on peut appeler random notre fonction :SimuLoiNormale.random()

Math.random()

les noms complets sont differents.

c©L. Tichit, 2015-2016 POO et Java 20 / 32

Page 52: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

L’identification complete d’une methode

alea s’appelle en faitSimuLoiNormale.alea()

a l’interieur de sa classe on peut utiliser le nom court

deux methode distinctes peuvent avoir le meme nom :il suffit qu’elles appartiennent a des classes distinctes

on peut appeler random notre fonction :SimuLoiNormale.random()

Math.random()

les noms complets sont differents.

c©L. Tichit, 2015-2016 POO et Java 20 / 32

Page 53: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

L’identification complete d’une methode

alea s’appelle en faitSimuLoiNormale.alea()

a l’interieur de sa classe on peut utiliser le nom court

deux methode distinctes peuvent avoir le meme nom :il suffit qu’elles appartiennent a des classes distinctes

on peut appeler random notre fonction :SimuLoiNormale.random()

Math.random()

les noms complets sont differents.

c©L. Tichit, 2015-2016 POO et Java 20 / 32

Page 54: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Surcharge des noms des methodes

plus fort : deux methodes de la meme classe peuvent avoir le meme nom, ilsuffit qu’elles aient des signatures distinctes

class SimuLoiNormale {...

static double alea() { ... }...

static double alea(int k) { ... }...

}

appels de ces methodes :

y = SimuLoiNormale.alea(); /* la premiere */...

y = SimuLoiNormale.alea(20); /* la deuxieme */

c©L. Tichit, 2015-2016 POO et Java 21 / 32

Page 55: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Surcharge des noms des methodes

plus fort : deux methodes de la meme classe peuvent avoir le meme nom, ilsuffit qu’elles aient des signatures distinctes

class SimuLoiNormale {...

static double alea() { ... }...

static double alea(int k) { ... }...

}appels de ces methodes :

y = SimuLoiNormale.alea(); /* la premiere */...

y = SimuLoiNormale.alea(20); /* la deuxieme */

c©L. Tichit, 2015-2016 POO et Java 21 / 32

Page 56: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Surcharge des noms des methodes

un autre exemple (extrait de la bibliotheque standard)class Math {

static double abs(double x) { ... }static float abs(float x) { ... }static int abs(int x) { ... }...

}

emploiy = Math.abs(x);

encore un exempleSystem.out.println("Resultat: ");

System.out.println(y);

c©L. Tichit, 2015-2016 POO et Java 22 / 32

Page 57: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Surcharge des noms des methodes

un autre exemple (extrait de la bibliotheque standard)class Math {

static double abs(double x) { ... }static float abs(float x) { ... }static int abs(int x) { ... }...

}emploi

y = Math.abs(x);

encore un exempleSystem.out.println("Resultat: ");

System.out.println(y);

c©L. Tichit, 2015-2016 POO et Java 22 / 32

Page 58: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Surcharge des noms des methodes

un autre exemple (extrait de la bibliotheque standard)class Math {

static double abs(double x) { ... }static float abs(float x) { ... }static int abs(int x) { ... }...

}emploi

y = Math.abs(x);

encore un exempleSystem.out.println("Resultat: ");

System.out.println(y);

c©L. Tichit, 2015-2016 POO et Java 22 / 32

Page 59: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les classes sont un � rangement � des methodes

les paquets sont un rangement des classes

package mesOutils;

class SimuLoiNormale {static double alea() {

...

}}

la classe s’appelle maintenant : mesOutils.SimuLoiNormale

et la methode : mesOutils.SimuLoiNormale.alea()

but de tout cela : eviter les conflits de noms (reutilisabilite)

c©L. Tichit, 2015-2016 POO et Java 23 / 32

Page 60: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les classes sont un � rangement � des methodes

les paquets sont un rangement des classes

package mesOutils;

class SimuLoiNormale {static double alea() {

...

}}

la classe s’appelle maintenant : mesOutils.SimuLoiNormale

et la methode : mesOutils.SimuLoiNormale.alea()

but de tout cela : eviter les conflits de noms (reutilisabilite)

c©L. Tichit, 2015-2016 POO et Java 23 / 32

Page 61: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les classes sont un � rangement � des methodes

les paquets sont un rangement des classes

package mesOutils;

class SimuLoiNormale {static double alea() {

...

}}

la classe s’appelle maintenant : mesOutils.SimuLoiNormale

et la methode : mesOutils.SimuLoiNormale.alea()

but de tout cela : eviter les conflits de noms (reutilisabilite)

c©L. Tichit, 2015-2016 POO et Java 23 / 32

Page 62: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les classes sont un � rangement � des methodes

les paquets sont un rangement des classes

package mesOutils;

class SimuLoiNormale {static double alea() {

...

}}

la classe s’appelle maintenant : mesOutils.SimuLoiNormale

et la methode : mesOutils.SimuLoiNormale.alea()

but de tout cela : eviter les conflits de noms (reutilisabilite)

c©L. Tichit, 2015-2016 POO et Java 23 / 32

Page 63: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les classes sont un � rangement � des methodes

les paquets sont un rangement des classes

package mesOutils;

class SimuLoiNormale {static double alea() {

...

}}

la classe s’appelle maintenant : mesOutils.SimuLoiNormale

et la methode : mesOutils.SimuLoiNormale.alea()

but de tout cela : eviter les conflits de noms (reutilisabilite)

c©L. Tichit, 2015-2016 POO et Java 23 / 32

Page 64: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les noms de paquet peuvent contenir � . � :java.awt.event.MouseEvent

Java n’y voit pas une hierarchie (java.awt.event n’est pas un� sous-paquet � de java.awt)...

...mais les paquets correspondent a des repertoires : les classes dejava.awt.event doivent etre dans java/awt/event

java.sun.com recommande un systeme de nommage planetaire (cosmique ?) :package fr.univ mrs.dil.tichit.stats.mesOutils;

class SimuLoiNormale {...

la fonction s’appelle maintenantfr.univ mrs.dil.tichit.stats.mesOutils.SimuLoiNormale.alea()

c©L. Tichit, 2015-2016 POO et Java 24 / 32

Page 65: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les noms de paquet peuvent contenir � . � :java.awt.event.MouseEvent

Java n’y voit pas une hierarchie (java.awt.event n’est pas un� sous-paquet � de java.awt)...

...mais les paquets correspondent a des repertoires : les classes dejava.awt.event doivent etre dans java/awt/event

java.sun.com recommande un systeme de nommage planetaire (cosmique ?) :package fr.univ mrs.dil.tichit.stats.mesOutils;

class SimuLoiNormale {...

la fonction s’appelle maintenantfr.univ mrs.dil.tichit.stats.mesOutils.SimuLoiNormale.alea()

c©L. Tichit, 2015-2016 POO et Java 24 / 32

Page 66: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les noms de paquet peuvent contenir � . � :java.awt.event.MouseEvent

Java n’y voit pas une hierarchie (java.awt.event n’est pas un� sous-paquet � de java.awt)...

...mais les paquets correspondent a des repertoires : les classes dejava.awt.event doivent etre dans java/awt/event

java.sun.com recommande un systeme de nommage planetaire (cosmique ?) :package fr.univ mrs.dil.tichit.stats.mesOutils;

class SimuLoiNormale {...

la fonction s’appelle maintenantfr.univ mrs.dil.tichit.stats.mesOutils.SimuLoiNormale.alea()

c©L. Tichit, 2015-2016 POO et Java 24 / 32

Page 67: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Paquets (package)

les noms de paquet peuvent contenir � . � :java.awt.event.MouseEvent

Java n’y voit pas une hierarchie (java.awt.event n’est pas un� sous-paquet � de java.awt)...

...mais les paquets correspondent a des repertoires : les classes dejava.awt.event doivent etre dans java/awt/event

java.sun.com recommande un systeme de nommage planetaire (cosmique ?) :package fr.univ mrs.dil.tichit.stats.mesOutils;

class SimuLoiNormale {...

la fonction s’appelle maintenantfr.univ mrs.dil.tichit.stats.mesOutils.SimuLoiNormale.alea()

c©L. Tichit, 2015-2016 POO et Java 24 / 32

Page 68: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Instruction import

but : alleger les noms des classes lors de leur utilisation

on ecrit au debut du fichierimport mesOutils.SimuLoiNormale; // une classe

import java.awt.event.*; // tout le paquet

cela permet d’ecrire SimuLoiNormale.alea()

au lieu de mesOutils.SimuLoiNormale.alea()

il ne s’agit pas de

designer un paquet que, sinon, le compilateur ne trouverait pas,ni d’obtenir le droit d’acceder aux classes du paquetage

mais uniquement de

permettre l’emploi du nom court des classes du paquetage

c©L. Tichit, 2015-2016 POO et Java 25 / 32

Page 69: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Instruction import

but : alleger les noms des classes lors de leur utilisation

on ecrit au debut du fichierimport mesOutils.SimuLoiNormale; // une classe

import java.awt.event.*; // tout le paquet

cela permet d’ecrire SimuLoiNormale.alea()

au lieu de mesOutils.SimuLoiNormale.alea()

il ne s’agit pas de

designer un paquet que, sinon, le compilateur ne trouverait pas,ni d’obtenir le droit d’acceder aux classes du paquetage

mais uniquement de

permettre l’emploi du nom court des classes du paquetage

c©L. Tichit, 2015-2016 POO et Java 25 / 32

Page 70: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Instruction import

but : alleger les noms des classes lors de leur utilisation

on ecrit au debut du fichierimport mesOutils.SimuLoiNormale; // une classe

import java.awt.event.*; // tout le paquet

cela permet d’ecrire SimuLoiNormale.alea()

au lieu de mesOutils.SimuLoiNormale.alea()

il ne s’agit pas de

designer un paquet que, sinon, le compilateur ne trouverait pas,ni d’obtenir le droit d’acceder aux classes du paquetage

mais uniquement de

permettre l’emploi du nom court des classes du paquetage

c©L. Tichit, 2015-2016 POO et Java 25 / 32

Page 71: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Structure d’un fichier source Java

un ou aucun enonce package

un nombre quelconque d’enonces import

une (preferable) ou plusieurs classes

dont une seule est public, elle impose son nom au fichier

partout ou on veut, des commentaires

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

}

c©L. Tichit, 2015-2016 POO et Java 26 / 32

Page 72: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Structure d’un fichier source Java

un ou aucun enonce package

un nombre quelconque d’enonces import

une (preferable) ou plusieurs classes

dont une seule est public, elle impose son nom au fichier

partout ou on veut, des commentaires

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

}

c©L. Tichit, 2015-2016 POO et Java 26 / 32

Page 73: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Structure d’un fichier source Java

un ou aucun enonce package

un nombre quelconque d’enonces import

une (preferable) ou plusieurs classes

dont une seule est public, elle impose son nom au fichier

partout ou on veut, des commentaires

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

}

c©L. Tichit, 2015-2016 POO et Java 26 / 32

Page 74: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Structure d’un fichier source Java

un ou aucun enonce package

un nombre quelconque d’enonces import

une (preferable) ou plusieurs classes

dont une seule est public, elle impose son nom au fichier

partout ou on veut, des commentaires

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

}

c©L. Tichit, 2015-2016 POO et Java 26 / 32

Page 75: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Structure d’un fichier source Java

un ou aucun enonce package

un nombre quelconque d’enonces import

une (preferable) ou plusieurs classes

dont une seule est public, elle impose son nom au fichier

partout ou on veut, des commentaires

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

}

c©L. Tichit, 2015-2016 POO et Java 26 / 32

Page 76: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Conventions de nommage

des recommandations, non des obligations

but : faciliter la lecture des programmes (reutilisabilite)

noms faits de plusieurs mots : a partir du 2e , commencer chaque mot par unemajuscule

noms des classes : commencer par majusculeclass CadrePrincipalDeMonApplication { ...

noms des methodes et variables : commencer par minusculeint x, y;

double vitesseDuVent;

paquetages : commencer chaque element par minusculeimport mesOutils.statistiques.*;

variables statiques finales : tout en majuscule, avec des � �

static final int NOMBRE DE POINTS = 1000;

c©L. Tichit, 2015-2016 POO et Java 27 / 32

Page 77: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Conventions de nommage

des recommandations, non des obligations

but : faciliter la lecture des programmes (reutilisabilite)

noms faits de plusieurs mots : a partir du 2e , commencer chaque mot par unemajuscule

noms des classes : commencer par majusculeclass CadrePrincipalDeMonApplication { ...

noms des methodes et variables : commencer par minusculeint x, y;

double vitesseDuVent;

paquetages : commencer chaque element par minusculeimport mesOutils.statistiques.*;

variables statiques finales : tout en majuscule, avec des � �

static final int NOMBRE DE POINTS = 1000;

c©L. Tichit, 2015-2016 POO et Java 27 / 32

Page 78: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Conventions de nommage

des recommandations, non des obligations

but : faciliter la lecture des programmes (reutilisabilite)

noms faits de plusieurs mots : a partir du 2e , commencer chaque mot par unemajuscule

noms des classes : commencer par majusculeclass CadrePrincipalDeMonApplication { ...

noms des methodes et variables : commencer par minusculeint x, y;

double vitesseDuVent;

paquetages : commencer chaque element par minusculeimport mesOutils.statistiques.*;

variables statiques finales : tout en majuscule, avec des � �

static final int NOMBRE DE POINTS = 1000;

c©L. Tichit, 2015-2016 POO et Java 27 / 32

Page 79: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Conventions de nommage

des recommandations, non des obligations

but : faciliter la lecture des programmes (reutilisabilite)

noms faits de plusieurs mots : a partir du 2e , commencer chaque mot par unemajuscule

noms des classes : commencer par majusculeclass CadrePrincipalDeMonApplication { ...

noms des methodes et variables : commencer par minusculeint x, y;

double vitesseDuVent;

paquetages : commencer chaque element par minusculeimport mesOutils.statistiques.*;

variables statiques finales : tout en majuscule, avec des � �

static final int NOMBRE DE POINTS = 1000;

c©L. Tichit, 2015-2016 POO et Java 27 / 32

Page 80: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Conventions de nommage

des recommandations, non des obligations

but : faciliter la lecture des programmes (reutilisabilite)

noms faits de plusieurs mots : a partir du 2e , commencer chaque mot par unemajuscule

noms des classes : commencer par majusculeclass CadrePrincipalDeMonApplication { ...

noms des methodes et variables : commencer par minusculeint x, y;

double vitesseDuVent;

paquetages : commencer chaque element par minusculeimport mesOutils.statistiques.*;

variables statiques finales : tout en majuscule, avec des � �

static final int NOMBRE DE POINTS = 1000;

c©L. Tichit, 2015-2016 POO et Java 27 / 32

Page 81: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Conventions de nommage

des recommandations, non des obligations

but : faciliter la lecture des programmes (reutilisabilite)

noms faits de plusieurs mots : a partir du 2e , commencer chaque mot par unemajuscule

noms des classes : commencer par majusculeclass CadrePrincipalDeMonApplication { ...

noms des methodes et variables : commencer par minusculeint x, y;

double vitesseDuVent;

paquetages : commencer chaque element par minusculeimport mesOutils.statistiques.*;

variables statiques finales : tout en majuscule, avec des � �

static final int NOMBRE DE POINTS = 1000;

c©L. Tichit, 2015-2016 POO et Java 27 / 32

Page 82: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Conventions de nommage

des recommandations, non des obligations

but : faciliter la lecture des programmes (reutilisabilite)

noms faits de plusieurs mots : a partir du 2e , commencer chaque mot par unemajuscule

noms des classes : commencer par majusculeclass CadrePrincipalDeMonApplication { ...

noms des methodes et variables : commencer par minusculeint x, y;

double vitesseDuVent;

paquetages : commencer chaque element par minusculeimport mesOutils.statistiques.*;

variables statiques finales : tout en majuscule, avec des � �

static final int NOMBRE DE POINTS = 1000;

c©L. Tichit, 2015-2016 POO et Java 27 / 32

Page 83: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Les tableaux du langage

Tous les tableaux sont dynamiques (crees a l’execution)

tous les acces aux tableaux sont controles

exemple : declarationint[] table;

(pour le moment, table vaut null)

creation :table = new int[nombreElts];

acces aux elements du tableau (exemple) :table[i] = expression;

un tel acces provoque toujours deux verifications :

table 6= null, sinon NullPointerException

0 ≤ i <nombreElts, sinon ArrayIndexOutOfBoundsException

c©L. Tichit, 2015-2016 POO et Java 28 / 32

Page 84: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Les tableaux du langage

Tous les tableaux sont dynamiques (crees a l’execution)

tous les acces aux tableaux sont controles

exemple : declarationint[] table;

(pour le moment, table vaut null)

creation :table = new int[nombreElts];

acces aux elements du tableau (exemple) :table[i] = expression;

un tel acces provoque toujours deux verifications :

table 6= null, sinon NullPointerException

0 ≤ i <nombreElts, sinon ArrayIndexOutOfBoundsException

c©L. Tichit, 2015-2016 POO et Java 28 / 32

Page 85: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Les tableaux du langage

Tous les tableaux sont dynamiques (crees a l’execution)

tous les acces aux tableaux sont controles

exemple : declarationint[] table;

(pour le moment, table vaut null)

creation :table = new int[nombreElts];

acces aux elements du tableau (exemple) :table[i] = expression;

un tel acces provoque toujours deux verifications :

table 6= null, sinon NullPointerException

0 ≤ i <nombreElts, sinon ArrayIndexOutOfBoundsException

c©L. Tichit, 2015-2016 POO et Java 28 / 32

Page 86: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Les tableaux du langage

Tous les tableaux sont dynamiques (crees a l’execution)

tous les acces aux tableaux sont controles

exemple : declarationint[] table;

(pour le moment, table vaut null)

creation :table = new int[nombreElts];

acces aux elements du tableau (exemple) :table[i] = expression;

un tel acces provoque toujours deux verifications :

table 6= null, sinon NullPointerException

0 ≤ i <nombreElts, sinon ArrayIndexOutOfBoundsException

c©L. Tichit, 2015-2016 POO et Java 28 / 32

Page 87: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Les tableaux du langage

Tous les tableaux sont dynamiques (crees a l’execution)

tous les acces aux tableaux sont controles

exemple : declarationint[] table;

(pour le moment, table vaut null)

creation :table = new int[nombreElts];

acces aux elements du tableau (exemple) :table[i] = expression;

un tel acces provoque toujours deux verifications :

table 6= null, sinon NullPointerException

0 ≤ i <nombreElts, sinon ArrayIndexOutOfBoundsException

c©L. Tichit, 2015-2016 POO et Java 28 / 32

Page 88: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Les tableaux du langage

Tous les tableaux sont dynamiques (crees a l’execution)

tous les acces aux tableaux sont controles

exemple : declarationint[] table;

(pour le moment, table vaut null)

creation :table = new int[nombreElts];

acces aux elements du tableau (exemple) :table[i] = expression;

un tel acces provoque toujours deux verifications :

table 6= null, sinon NullPointerException

0 ≤ i <nombreElts, sinon ArrayIndexOutOfBoundsException

c©L. Tichit, 2015-2016 POO et Java 28 / 32

Page 89: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

La taille des tableaux

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

>

c©L. Tichit, 2015-2016 POO et Java 29 / 32

Page 90: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

La taille des tableaux

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

>

c©L. Tichit, 2015-2016 POO et Java 29 / 32

Page 91: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Une variable tableau est une reference...

int[] t1, t2; (declaration)

t1 t2nullnull

t1 = new int[7]; (creation)

0 0 0 0 0 0 0 t1 t2

null

t2 = t1; (affectation)

0 0 0 0 0 0 0 t1 t2

c©L. Tichit, 2015-2016 POO et Java 30 / 32

Page 92: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Une variable tableau est une reference...

int[] t1, t2; (declaration)

t1 t2nullnull

t1 = new int[7]; (creation)

0 0 0 0 0 0 0 t1 t2

null

t2 = t1; (affectation)

0 0 0 0 0 0 0 t1 t2

c©L. Tichit, 2015-2016 POO et Java 30 / 32

Page 93: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Une variable tableau est une reference...

int[] t1, t2; (declaration)

t1 t2nullnull

t1 = new int[7]; (creation)

0 0 0 0 0 0 0 t1 t2

null

t2 = t1; (affectation)

0 0 0 0 0 0 0 t1 t2

c©L. Tichit, 2015-2016 POO et Java 30 / 32

Page 94: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Tableaux a deux indices

Declarationdouble[][] matrice;

Creationmatrice = new double[nl][nc];

Exemple (avec nl = 3, nc = 4) :

0 0 0 0

matrice

0 0 0 0

0 0 0 0

c©L. Tichit, 2015-2016 POO et Java 31 / 32

Page 95: sans les objets - Bienvenue sur Département …tichit/java/cours/JavaBBSG2-01.pdf · il est di cile d’en montrer l’int er^et sur de petits exemples ce cours fait appel a l’exp

Java “sans les objets”

Tableaux a deux indices

On obtient le meme resultat avec :

double[][] matrice;

...

matrice = new double[nl][];

for (int i = 0; i < nl; i++)

matrice[i] = new double[nc];

0 0 0 0

matrice

0 0 0 0

0 0 0 0

c©L. Tichit, 2015-2016 POO et Java 32 / 32