Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation...

70
~ A. P. ~ Chapitre 1 ~ Cours Java ~ ~ Cours Java ~ IUT A Informatique Informatique U U C C L L B B 1 Chapitre I Présentation du langage Présentation du langage Java Java

Transcript of Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation...

Page 1: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

1

Chapitre I

Présentation du langage JavaPrésentation du langage JavaPrésentation du langage JavaPrésentation du langage Java

Page 2: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

2

1 - Généralités1 - Généralités1 - Généralités1 - Généralités

Page 3: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

3

Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques générales

Java est un langage de programmation développé par Sun Microsystems à partir des années 95

C’est un langage " à objets " classesobjetsmessageshéritage

programmation objet uniquement

Page 4: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

4

Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques générales

Java est un langage sécurisé

pas de pointeurs mais des références

pas de dépassement d'indice de tableau

pas de conversion implicite de types

tous les objets sont créés dynamiquement

nettoyage automatique de la mémoire

complexité de l'héritage multiple contournée par la notion d'interface

Page 5: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

5

Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques générales

Java implémente des mécanismes avancésprogrammation parallèle

multithreadsynchronisation, exclusion mutuelle, communication

portabilitéle compilateur génère un pseudo code (le byte-code)exécuté par la machine virtuelle propre à chaque

environnementdistribution du code

chargement dynamiquecode mobile

Page 6: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

6

Caractéristiques généralesCaractéristiques généralesCaractéristiques généralesCaractéristiques générales

Java est un langage simple

syntaxe familière similaire à celle du C++le corpus des règles est limitéles constructions sont simplesles données sont typées suivant des standards

(C2, IEEE 754, Unicode)

La difficulté de programmation réside essentiellement dans la maîtrise des concepts objets (cf. cours C++)

Page 7: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

7

2 – Développer avec Java2 – Développer avec Java2 – Développer avec Java2 – Développer avec Java

Page 8: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

8

Les types d'applicationLes types d'applicationLes types d'applicationLes types d'application

Programme Javap-code obtenu par la compilation d'un source écrit

en langage Javaexécuté de manière autonome à l'aide de

l'interpréteur Java Virtual Machine (JVM). correspond à une application au sens classique

Appletp-code invoqué depuis des documents HTMLexécuté à l'intérieur du navigateur ou encore grâce

à un programme dédié l'appletviewerrésidant sur le serveur et téléchargé via le réseau

Page 9: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

9

Les types d'applicationLes types d'applicationLes types d'applicationLes types d'application

Mais aussi…

Servlet Java = applet côté serveur et sans interface utilisateur

Java Beans = composants logiciels écrits en Java et réutilisables

JavaScript = langage frère de Java simplifié pour être directement intégré dans une page HTMLafin d'effectuer des traitements sur le poste client

Page 10: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

10

Chaîne de développementChaîne de développementChaîne de développementChaîne de développement

1) Écriture à l'aide d'un éditeur du fichier source d'extension .java (exemple NomFic.java)

2) Compilation du source pour compiler javac NomFic.java on obtient le fichier de byte-code NomFic.class

3) Exécution du byte-code pour une application java NomFic.class pour une applet on invoque le code à l'intérieur

d'une page HTML grâce aux balises <applet code = "NomFic.class" …</applet>

Page 11: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

11

Chaîne de développementChaîne de développementChaîne de développementChaîne de développement

Exemple de fichier source

// HelloWorld.java

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}

Page 12: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

12

Chaîne de développementChaîne de développementChaîne de développementChaîne de développement

Remarques :

tout fichier source .java doit avoir une classe déclarée public portant le même nom que le fichier sans l'extension (ici class HelloWorld )

pas de fonctions ou de variables globales : même le point d'entrée du programme main appartient à une classe

l'usage veut qu'un fichier source ne contienne qu'une seule classe

Page 13: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

13

Chaîne de développementChaîne de développementChaîne de développementChaîne de développement

Compilation et exécution avec le JDK

$javac HelloWorld.java

$java HelloWorldHello World!

$

Page 14: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

14

Chaîne de développementChaîne de développementChaîne de développementChaîne de développement

Exemple : HelloWorld.java

javac HelloWorld.java

HelloWorld.class

Fichier sourceFichier source

Programme compilé(p-code)

Programme compilé(p-code)

CompilationCompilation

Moteur d’interprétationp-code

Registres / pilesvirtuels

Machine virtuelle Java Système d'ExploitationUnix, Windows, Mac, etc.

java HelloWorld

Source P.Emy CERTA

Page 15: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

15

Les outilsLes outilsLes outilsLes outils

Le minimum requisun éditeur de texte (exemple TextPad)javac le compilateurjava l'interpréteur de byte-code

Pour les applets il faut en plus soit le visualiseur appletviewer soit

une connexion réseaula pile protocolaire TCP/IPun navigateur avec un interpréteur Java

Page 16: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

16

Les outilsLes outilsLes outilsLes outils

le JRE (Java Runtime Environment) représente la machine virtuelle Java nécessaire pour exécuter une application Java (dépend de la machine et du système d'exploitation)

le SDK (Standard Development Kit) anciennement appelé JDK, comprend l'ensemble des outils pour développemer une application Javaune JRE, le compilateur et les bibliothèques divers outils comme javadoc ou jar

Page 17: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

17

Les outilsLes outilsLes outilsLes outils

L'utilitaire jar (Java Archive) permetd'archiver des classes Javamais aussi des fichiers image ou audio de distribuer ou d'installer une application

Pour créer un fichier jarjar –options [path][…]options identiques à celles de l'utilitaire tar d'Unix

Pour récupérer le contenu d'un fichier jar par la ligne de commande jar –t [path][…]dans une applet par <APPLET CODE="….class" ARCHIVE="….jar" …>

Page 18: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

18

Les outilsLes outilsLes outilsLes outils

Ces outils de base sont téléchargeables à partir du site de Sun microsystems http://java.sun.com

Il existe aussi de nombreux IDE Jbuilder de BorlandJdeveloper d'Oracle Visual Café de Symantec Websphere d'IBMles "open source" NetBeans et Eclipse

Page 19: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

19

Quelques référencesQuelques référencesQuelques référencesQuelques références

BibliographieHORSTMANN CORNELL, Au cœur de JAVA, Volume 1 et

volume 2, CAMPUSPRESS [1999]DELANNOY, Programmer en JAVA, EYROLLES [2000] LEMAY CADENHEAD, JAVA 2, CAMPUSPRESS [2002] HORTON, Maîtrisez Java 2, CAMPUSPRESS [2001]

Quelques lienshttp://www.javasoft.comhttp://tek-tools.comhttp://www.gamelan.comhttp://cuiwww.unige.ch/java/doc/tutorial/java/index.html http://www.ensta.fr/java/java_liens.html

Page 20: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

20

3 - Éléments du langage3 - Éléments du langage3 - Éléments du langage3 - Éléments du langage

Page 21: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

21

Mots réservés en JavaMots réservés en JavaMots réservés en JavaMots réservés en Java

abstract default if private throw

boolean do implements protected throws

break double import public transient

byte else instanceof return try

case extends int short void

catch final interface static volatile

char finally long super while

class float native switch

const for new synchronized

continue goto package this

Page 22: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

22

Les identificateursLes identificateursLes identificateursLes identificateurs

Identificateur = nom des différents éléments du programmevariable ex: totalGeneralconstante ex: TAILLE méthode ex: int getX() classe ex: class MaClassepackage ex: java.util.Vector

Formé à partir de lettres, de chiffres et des caractères _ et $ (à éviter comme premier caractère)

Page 23: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

23

Les symbolesLes symbolesLes symbolesLes symboles

Caractères ou groupe de caractèrespour représenter des opérateurspour représenter des caractères spéciaux & ~ { } ( ) [ ] | \ / * - + % , ; . < > = ! ^ ? :

Exemples:== opérateur d'égalité>>> opérateur de décalage binaire à droite non

signé

Page 24: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

24

Les commentairesLes commentairesLes commentairesLes commentaires

3 styles de commentaires

plusieurs lignes/* ceci est un commentaire qui se termine ici */

sur une ligne// commentaire sur une ligne

destiné au générateur automatique de documentation JavaDoc/** commentaire destiné à l'outil de documentation automatique */

Page 25: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

25

Les commentaires JavaDocLes commentaires JavaDocLes commentaires JavaDocLes commentaires JavaDoc

Ils permettent de documenter la classe en même temps que le codage

Le programme javadoc génère des fichiers HTML de documentation à partir des fichiers Java

On peut inclure du code HTML dans les commentaires Javadoc

Page 26: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

26

Les commentaires JavaDocLes commentaires JavaDocLes commentaires JavaDocLes commentaires JavaDoc

Permet de décrire si nécessaire pour une classe ses spécifications sa version son auteur

Dans la classe on peut égalementpréciser le rôle de chaque attribut décrire les méthodes (paramètres, valeur retournée,

exceptions pouvant être éventuellement générer)

meilleure lisibilité du programme

Page 27: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

27

Les types en JavaLes types en JavaLes types en JavaLes types en Java

Les types en Java se classent en 2 catégoriesles types primitifs ou types de base

les caractèresles entiersles réelsles booléens

les types référencesles tableauxtous les objets manipulés

Important pour le passage de paramètres aux méthodes qui se fait par valeur

Page 28: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

28

Les types primitifsLes types primitifsLes types primitifsLes types primitifs

Entier:type codé en C2 byte 1 Ø, short 2 Ø, int 4 Ø, long 8 Ø

Réel:type codé en IEEE 754float 4 Ø, double 8 Ø

Caractère : type char codé en Unicode sur 2 Ø

Booléens: type boolean codé sur 1 bit

Page 29: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

29

Les types primitifsLes types primitifsLes types primitifsLes types primitifs

Type primitif Valeurs possibles Valeur par défaut boolean true / false false char '\u0000' à '\uFFFF' '\u0000' (null) byte -128 à 127 (byte)0 short -215 à 215-1 (short)0 int -231 à 231-1 0 long -263 à 263-1 0L

float -3.4028235e+38f à 3.4028235e+38f

0.0f

double -1.7976931348623157e+308 à 1.7976931348623157e+308 0.0d

void - -

Page 30: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

30

Les types primitifsLes types primitifsLes types primitifsLes types primitifs

Codage des caractères ASCII sur 128 premiers caractères les 128 autres = caractères des divers langagesles suivants = divers symboles Les caractères sont écrits entre ’ainsi la séquence

’\uNNNN’ désigne le caractère dont la valeur Unicode est NNNN

’\u0020’signifie blanc ( identique à ' ')’\u0041’signifie A ( identique à 'A')’\’’ signifie ’’\\’ signifie \

Page 31: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

31

Les variablesLes variablesLes variablesLes variables

Déclaration identique au C++Type variable; Type variable = valeur;

Une variable représente soit l'attribut d'une classesoit une variable de classesoit une variable locale à une méthode de classe

Caractéristiquesconversion toujours explicite et identique au Cvar1 = (type_force) var2;

portée limitée au bloc { } de déclaration

Page 32: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

32

Les variablesLes variablesLes variablesLes variables

Exemples :boolean encore = true; // initialisation à vraiint x = 10; // decimal

int x = 0x0A; // hexadécimal

int x = 10L; // entier long

float y = 6.55957F; // réel simple précision

x = (int) y; // transtypage d'un réel vers un int float z = -2.45E-3F; // réel avec exposant

double pi = 3.14159D; // réel double précisionchar rep = 'n'; char rep = '\u006e'; // code ASCII de 'n'

Page 33: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

33

Les constantesLes constantesLes constantesLes constantes

Une constante est définie à l'aide de final et est toujours initialiséefinal type MACONSTANTE = valeur;Exemples:

final float CM_PAR_POUCE = 2.54F;final double E = 2.71828182845905D;

Une constante de classe est définie à l'aide de static finalExemple:

static final float PI = 3.14159F;

Page 34: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

34

Les constantesLes constantesLes constantesLes constantes

Caractères spéciaux:

'\b' caractère backspace (retour arrière)'\f' caractère saut de page (formfeed)'\n' caractère saut de ligne (new line)'\r' caractère retour chariot'\t' caractère de tabulation'\\' caractère \'\'' caractère '

Page 35: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

35

Les opérateursLes opérateursLes opérateursLes opérateurs

Opérateur d'affectation=

Opérateurs arithmétiques + - * / % ++ -- += -= *= /= %=

Opérateurs relationnels > >= == != < <=

Opérateurs logiques && || !

Opérateurs binaires & | ^ ~ >> << >>>

Page 36: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

36

Les opérateursLes opérateursLes opérateursLes opérateurs

L'opérateur logique ?composé de trois expressionsexpression1 ? expression2 : expression3si expression1 vraie alors expression2sinon expression3valabs = (x >= 0) ? x : -x;

Opérateur d'allocation mémoire new

Page 37: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

37

Priorité des opérateursPriorité des opérateursPriorité des opérateursPriorité des opérateurs

Opérateur par ordre décroissant et de gauche à droite . [] () new ++ -- ! ~ instanceof * / % + - << >> >>> < > <= >= == != & ^ | && || ?: = *= /= %= += -= <<= >>= >>>= &= ^= |= ,

Page 38: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

38

4 – Les structures de contrôle4 – Les structures de contrôle4 – Les structures de contrôle4 – Les structures de contrôle

Page 39: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

39

Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle

L'alternativeif (<expression_logique>)

<bloc1>else

<bloc2>un bloc commence par { et finit par }

Alternatives imbriquéesif (<expr1>)

<bloc1>else if (<expr2>)

<bloc2>else if (expr3>)

<bloc3>else

<bloc4>

Page 40: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

40

Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle

Le choix multiple

switch (<expression_entière>) {case valeur_1: ......;

break;case valeur_2: ......;

......;case valeur-n: ......;

......;break;

default: ......;......;

}

Page 41: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

41

Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle

Le choix multiple (suite)branchement lorsque l'expression entière est égale à

une des valeurs des casebranchement à default si aucune valeur trouvéepasse en séquence jusqu'au premier break

ou fin du switch

switch (rep) { /* on teste la valeur du caractère rep */case ' ' : nb_space++;

break;case '\n':case '\0': fini=1;

break; /* fini=1 pour rep ='\n' ou '\0' */default : nb_car++;

}

Page 42: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

42

Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle

L'itération bornéetraduction du pourfor(<expr1>;<expr2>;<expr3>)

<bloc>expr1 effectuée 1 fois pour toutesexpr2 condition de maintienexpr3 effectuée à la fin de chaque boucle

nombre de passages 0 à n

Page 43: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

43

Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle

La répétitive tant quewhile(<expression >)

<bloc>expression condition de maintien nombre de passages 0 à n

La répétitive répéter tant quedo<bloc> while (<expression>) ;

nombre de passages 1 à n

Page 44: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

44

Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle

L'instruction break permet de sortird'un switchd'un ford'un whiled'un do

for(;;) { if (EVENEMENT) break; /* si EVENEMENT devient VRAI on sort */}

Page 45: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

45

Les structures de contrôleLes structures de contrôleLes structures de contrôleLes structures de contrôle

L'instruction continue force le branchement en fin de boucle d'une répétitivela condition de passage est retestéeévite l'écriture d'un sinon

while (i<10) {.......;

.......; if (n<0) continue;.......; /* traitement si n >= 0 */

}

Page 46: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

46

5 – Compléments5 – Compléments5 – Compléments5 – Compléments

Page 47: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

47

Les packagesLes packagesLes packagesLes packages

Un package regroupe des classes et des interfaces qui portent sur un même domaine

Pour utiliser une classe d'un packagesoit il faut la préfixer avec le nom du packagesoit on utilise la directive import

import java.util.* importe toutes les classes du package

import java.util.vector importe la classe vector du package java.util

Exemple de packages inclus dans le SDK java.lang java.io java.util java.net

Page 48: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

48

Les packagesLes packagesLes packagesLes packages

Pour créer son propre packageil faut ajouter package <nom_package> dans

chaque fichier source .java devant composer le package

il faut s'assurer qu'il n'existe pas de classes homonymes

Lorsqu'on ne spécifie pas de package dans un fichier source, les classes créées appartiennent au package par défaut

Page 49: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

49

Les exceptionsLes exceptionsLes exceptionsLes exceptions

Permet le traitement uniforme et structuré des anomalies survenant lors de l'exécution d'un programme

Mécanisme identique à celui du C++

Mais en Java, toutes les exceptions sont des objets de la classe Exception

Page 50: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

50

Les exceptionsLes exceptionsLes exceptionsLes exceptions

Principesi on appelle une méthode susceptible de lancer

une exception, on se porte candidat par le bloc trysi une erreur survient dans la méthode appelée,

cette dernière lance une exception par throwl'appelant intercepte l'exception grâce au bloc

gestionnaire d'exception catch il y a un gestionnaire par type d'exceptionle bloc finally est exécuté dans tout les cas et en

dernier s'il existe

Page 51: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

51

Les exceptionsLes exceptionsLes exceptionsLes exceptions

Schéma général de traitement des exceptionstry { // bloc de code pouvant générer l'exception } catch(TypeException1 e){

// traitement approprié pour ce type d'exception } catch(TypeException2 e) {

// traitement approprié pour ce type d'exception } finally { // bloc facultatif mais toujours exécuté si présent }

Page 52: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

52

Interception d'une exceptionInterception d'une exceptionInterception d'une exceptionInterception d'une exception

Void Methode() throws T

{

...

if (probleme)

throw new T();

...

}

type T de l'exception

try {

Methode();

}

catch (T param){

...

}

...

...

Page 53: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

53

Les exceptionsLes exceptionsLes exceptionsLes exceptions

Méthode susceptible de générer des exceptions propagées vers l'appelanton déclare dans son en-tête les exceptions qu'elle

peut lancer par throws TypeExc1, TypeExc2 ,..mais les exceptions héritant de Error ou de RuntimeException ne se déclarent pas

l'exception est lancée par throw <exception>soit il s'agit d'une instance de la hiérarchie Exception

soit il s'agit d'une instance d'une classe personnelle d'exception qui doit héritée de Exception

Page 54: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

54

Les exceptionsLes exceptionsLes exceptionsLes exceptions

Capture des exceptions par l'appelantse fait par le gestionnaire catch pour le type voulusi on souhaite que le gestionnaire traite tout type

d'exception, on indique Exception comme typecatch (Exception e)

si une exception n'est pas traitée à un niveau (gestionnaire absent ou de type inadapté), sa gestion est déléguée au niveau supérieur

si l'exception sort de la méthode main sans être gérée, elle est alors traitée par la machine Java

Page 55: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

55

Les chaînes de caractèresLes chaînes de caractèresLes chaînes de caractèresLes chaînes de caractères

En Java il n'y a pas de type chaîne prédéfini

On utilise pour cela la classe String fournie d'origine avec le langage

Il existe aussi une classe StringBuffer de chaînes modifiables

Ces classes font partie du package java.lang reconnu de façon implicite

Page 56: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

56

Les chaînes de caractèresLes chaînes de caractèresLes chaînes de caractèresLes chaînes de caractères

Les opérations courantes de la classe String:concaténation + et +=longueur lengthégalité equals et equalsIgnoreCase et non == qui

porte sur références, de même pour la comparaison qui se fait par compareTo

extraction substringtransformation en un tableau de char toCharArray changer la casse toUpperCase et toLowerCasesuppression des espaces de début et fin trim etc., etc. voir l'aide pour les autres méthodes

Page 57: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

57

Les chaînes de caractèresLes chaînes de caractèresLes chaînes de caractèresLes chaînes de caractères

Exemples String ch1 = "essai d'une chaine";

String ch2 = new String ("Bonjour");

// on récupère les 3 premiers car de ch2

String ch3 = ch2.substring(0,3); int n = ch3.length(); // longueur de ch1

ch2 = ch2 + " tout le monde";if (ch3.equals("Bon") == true)

… … …

if (ch3.compareTo(ch1) >= 0)

… … …

Page 58: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

58

Les tableauxLes tableauxLes tableauxLes tableaux

Sont des objets créés dynamiquementDéclaration

type nomTableau[]; ou type[] nomTableau;

Puis allocation mémoire nomTableau = new type[tailleTableau];

Déclaration et allocation mémoire type nomTableau[] = new type[tailleTableau];

Déclaration et initialisation type nomTableau[] = {val1, val2, val3,...valn};

Page 59: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

59

Les tableauxLes tableauxLes tableauxLes tableaux

Comme en C l'indice du premier élément est 0Le champ length d'un tableau donne la

dimension du tableauPar sécurité, Java déclenche les exceptions

ArrayIndexOutOfBoundsException si le rang d'un élément est invalide

NegativeArraySizeException si la taille est négative à la création du tableau

ArrayStoreException si on tente de stocker un élément de type incompatible

Page 60: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

60

Les tableauxLes tableauxLes tableauxLes tableaux

Exemples

// déclarationString tabJour[] = {"Lundi","Mardi","Mercredi"};short [ ][ ]mat = {{5, 2, 33,-8}, {1, 2, 3, -7}};int [ ] tabVide = {};int tabEntiers[] = new int[5];

// parcours

for(i=0;i<tabEntiers.length;i++)

tabEntiers[i]=i+1;for(lig=0;lig<2;lig++)

for (col=0;col<4;col++)

...

Page 61: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

61

Les tableauxLes tableauxLes tableauxLes tableaux

Un tableau est en fait une référence, donc:il faut penser à l'allocation mémoire sauf s'il est

initialisé à la déclarationil peut être modifié s'il est passé en argument à

une méthodeune méthode de classe peut retourner un tableaul'affectation entre tableaux de même type porte sur

les références (la copie physique se fait par la méthode arraycopy de la classe System)

Ne pas oublier: en Java il y a une gestion automatique de la mémoire

Page 62: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

62

Sortie écran en mode texteSortie écran en mode texteSortie écran en mode texteSortie écran en mode texte

La classe System comprend 3 canaux d'E/Sécran outclavier inerreurs err

Pour l'affichage à l'écran on utilise 2 méthodes System.out.print et System.out.println qui

fait un saut de ligne après l'affichagequi prennent en argument une chaîne de

caractèrestoute variable son type peut être concaténée

avec l'opérateur + pour former la chaîne d'affichage

Page 63: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

63

Sortie écran en mode texteSortie écran en mode texteSortie écran en mode texteSortie écran en mode texte

Exemple:

public class TestAffichage{ public static void main(String[] argv) {

// variables localesint x = 3;char c='o';float z = -2.45E-3F;String ch = "essai";// affichageSystem.out.println(" x = : " +x +" et z = : " +z);System.out.println("\n c = : " +c +" et ch = : " + ch );

}}

Page 64: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

64

Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte

La saisie en mode texte est compliquée

inclusion du package java.io.*

utilisation de la classe BufferedReader pour la lecture du flux d'entréedéclaration d’un buffer d’entrée saisie d’une chaîne par la méthode readLine()conversion de la chaîne saisie en entier, en byte, en

entier ou en réel

mise en oeuvre d'une gestion des exceptions

Page 65: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

65

Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte

Exemples de saisieimport java.io.*;class TestSaisie{ public static void main(String args[]) throws IOException, NumberFormatException {

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader rep = new BufferedReader(isr);

System.out.print("Entrez une chaine : ");String saisie = rep.readLine();System.out.println("Voici la chaine saisie : "+ saisie);

System.out.print("Entrez un entier : ");int i = Integer.parseInt(rep.readLine()); System.out.println("l'entier i = "+ i);

Page 66: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

66

Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte

Exemples de saisie (suite)

System.out.print("Entrez un reel : ");float f = Float.parseFloat(rep.readLine());System.out.println("le reel f = "+ f);

// cas d'un caractèreSystem.out.print("Entrez un caractere : ");String valeur = rep.readLine() ;char c = valeur.charAt(0);

System.out.println("le caractere vaut = "+ c);

} // public static void main

} // class TestSaisie

Page 67: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

67

Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte

Exemple avec gestion des exceptionsimport java.io.*;public class TestSaisieExcep{ public static void main(String args[]) { // saisie d'un réel avec gestion des exceptions int x = 0; // entier à saisir System.out.print("Entrez un entier : ");

try { InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader rep = new BufferedReader(isr);x = Integer.parseInt(rep.readLine());

}

Page 68: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

68

Entrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texteEntrée clavier en mode texte

Exemple avec gestion des exceptions (suite)// exception éventuellement générée par readLinecatch (IOException e){

System.out.println("ERREUR DE SAISIE \n\n");}

// exception éventuellement générée par parseIntcatch (NumberFormatException e){

System.out.println("ERREUR DE TYPE \n\n");}

System.out.println("l'entier vaut : "+ x);

} // public static void main

} // class TestSaisie

Page 69: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

69

ApplicationApplicationApplicationApplication

Définition d'un tableau de taille dynamiqueavec remplissage aléatoireimport java.io.*;import java.util.*;

public class TestTableau { public static void main(String[] argv)throws IOException {

// saisie de la dimension du tableau InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader rep = new BufferedReader(isr);System.out.print("Entrez un entier : ");int taille = Integer.parseInt(rep.readLine());

Page 70: Chapitre 1 ~ Cours Java ~ Informatique IUT A Informatique UCL B 1 ~ A. P. ~ Chapitre I Présentation du langage Java.

~ A. P. ~ Chapitre 1~ Cours Java ~~ Cours Java ~IUT A InformatiqueInformatique

UUCCLLBB

70

ApplicationApplicationApplicationApplication

Définition d'un tableau de taille dynamiqueavec remplissage aléatoire // dimensionnement dynamique du tableau d'entiers int tabEntiers [] = new int[taille];

// remplissage aléatoire d'entiers compris entre 0 et 50 Random r = new Random(); for(int i=0;i<tabEntiers.length;i++)

tabEntiers[i]=Math.abs(r.nextInt()%51);

// affichage du tableau for(int i=0;i<tabEntiers.length;i++) System.out.println("\n "+tabEntiers[i]);

} // fin de main} // fin de TestTableau