Vous êtes sur la page 1sur 21

Plan du cours

Institut Supérieur d’Informatique de


Mahdia • 1. Introduction générale et historique

• 2. Première application en Java

Cours Intitulé : • 3. Syntaxe et sémantique de Java

• 4. Programmation orientée objets en Java


Programmation Orientée Objet • 5. Structure des API de Java
- JAVA - • 6. Les collections d’Objets

• 7.La gestion des Exceptions


Présenté par : Soufien GDAIM
• 8. Interfaces graphiques (Swing et AWT)

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 1 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 2

Quelques sujets non couverts Plan du cours


 Développement des applets
 Développement d’application clients/serveur • 1. Introduction générale et historique
 TCP/IP
• 2. Première application en Java
 UDP

 Enterprise Java Beans (EJB) • 3. Syntaxe et sémantique de Java


 Servlets et Java Server Pages (JSP) • 4. Programmation orientée objets en Java
 Connections à des bases de données (JDBC)
• 5. Structure des API de Java

• 6. Les collections d’Objets

• 7.La gestion des Exceptions

• 8. Interfaces graphiques (Swing et AWT)

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 3 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 4
Qu’est-ce que Java ? Java comme langage de programmation

 Java est un langage de programmation Java est un langage de programmation particulier qui
 Un programme Java est compilé et interprété possède des caractéristiques avantageuses:
 Simplicité et productivité:
 Intégration complète de l’Orienté Objet (OO)
 Java est une plateforme
 Gestion mémoire : ramasse-miettes (« Garbage collector »)
 La plateforme Java, uniquement software, est exécutée sur la
 Performance, Robustesse, fiabilité et sécurité
plateforme du système d’exploitation
 Pas de pointeurs, pas de fonctions d'arguments variables.
 La « Java Platform » est constituée de :
 Compilateurs très stricts car toutes les valeurs doivent être initialisées.
 La « Java Virtual Machine » (JVM)
 Le traitement des exceptions est obligatoire.
 Des interfaces de programmation d’application (Java API)
 Les erreurs à l'exécution sont vérifiées tout comme les limites des
tableaux.
 Indépendance par rapport aux plateformes
 Ouverture:
 Support intégré d’Internet
 Connexion intégrée aux bases de données (JDBC)

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 5 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 6

Java comme langage de programmation Java comme langage de programmation


Neutre architecturalement Ouvert et distribué

 Il existe une grande diversité


 Support intégré d’Internet
MyProgram.java  La Class URL
de systèmes d’exploitation
 Communication réseaux TCP et UDP
 Le compilateur Java génère
 RMI, CORBA, Servlets
un bytecode, c’est à dire un
Java Compiler  JINI, le « must » pour construire des applications complexes
format intermédiaire, conçu distribuées…..
pour faire transiter
 Connectivité aux bases de données
efficacement le code vers des
 JDBC: Java DataBase Connectivity
hardware différents et/ou MyProgram.class  Offre des facilités de connexions à la plupart des BD du marché
plateformes différentes = bytecode
 Offre un pont vers ODBC
 Le bytecode ne peut-être  Support des caractères internationaux
interprété que par le
JVM JVM JVM  Java utilise le jeu de caractères UNICODE
processeur de la JVM
Mac Windows Unix  JVM équipée de tables de conversion pour la plupart des caractères
 JVM adapte automatiquement les paramètres régionaux en fonction
de ceux de la machine sur laquelle elle tourne
2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 7 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 8
Java comme Plateforme
Java comme Plateforme Java Application Programming Interface (API)
 Plateforme = environnement hardware ou software sur  L’API Java est structurée en librairies (packages).
lequel le programme est exécuté.
 Les packages comprennent des ensembles fonctionnels de
 La Java « Platform » se compose de: composants (classes)…
 la Java Virtual Machine (Java VM)  Le noyau (core) de l’API Java comprend notamment :
 la Java Application Programming Interface (Java API)  Essentials (data types, objects, string, array, vector, I/O,date,…)
 Applet
 Abstract Windowing Toolkit (AWT), SWING, …
 Basic Networking (URL, Socket –TCP or UDP-,IP)
 Evolved Networking (Remote Method Invocation)
 Internationalization
 Security
 …..

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 9 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 10

Java comme Plateforme : Java Virtual Machine Java comme Plateforme Java Runtime Environment (JRE)

Trois tâches principales :


 Définit les spécifications hardware de la plateforme  Charger le code (class loader)
 Lit le bytecode compilé (indépendant de la plateforme)  Vérifier le code (bytecode verifier)
 Implémentée en software ou hardware  Exécuter le code (runtime interpreter)
 Implémentée dans des environnements de développement
ou dans les navigateurs Web D’autres THREAD s’exécutent :
 La JVM définit :  Garbage collector
 Les instructions de la CPU  (JIT compiler)
 Les différents registres
 Le format des fichiers .class
 Le « stack »
 Le tas (« Heap ») des objets « garbage-collectés »
 L’espace mémoire

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 11 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 12
Déploiement d’un programme (1/2) Déploiement d’un programme (2/2)
 Changement de la vision traditionnelle de la compilation
 Paradigme classique de la compilation
 Chaque programme est compilé et interprété
MyProgram.c  « Write once run everywhere »

Exécuté une seule fois Mais différent Génère du code natif directement MyProgram.java
pour chaque environnement exécutable, mais spécifique à chaque
environnement Traduit le programme en un code intermédiaire
Exécuté une seule fois Compiler Appelé bytecode – indépendant de la machine
Compiler1 Compiler2

MyProgram.class
MyProgram.obj MyProgram.obj Lit le bytecode et exécute sur la machine

010110… 010110… Interpréter (JVM) Interpréter (JVM)


Interpréter (JVM)
010110… 010110…
010110…
MAC PC

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 13 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 14

Java : un peu d’histoire… Outils de développement : JVM, JRE, JDK

 Le langage Java a été créé par Sun Microsystems en 1991


 JVM : La "JAVA Virtual Machine", permet d'interpréter et d'exécuter du
 Les chercheurs souhaitaient développer un langage de
code JAVA. Une machine virtuelle est un logiciel qui permet d'isoler
programmation qui permette de contrôler les appareils du futur
l'application de l'environnement, ou du système, sur lequel elle s'exécute.
 Initialement, destiné à être utilisé avant tout avec des appareils
L'avantage d'utiliser une machine virtuelle est la portabilité du code, qui
électroniques, et non avec des PC modernes ».
ne dépend pas du système. C'est ce qui fait la force de JAVA.
 Ses caractéristiques sont intéressant pour le développement
Web :  JRE : Le "JAVA Runtime Environment", est traduit par "Environnement
d'exécution JAVA". Le JRE contient une JVM, mais également une
 Jee : Servlet, JSP, JSF,
bibliothèque standard qui est utilisée pour développer des applications
 Applet
JAVA.
 Il peut donc être utilisé sous Windows, sur Macintosh et sur d'autres
plates formes, sans aucune modification.  JDK ou SDK : JDK pour "JAVA Development Kit", contient en plus d'un
 Le langage à commencé à s'imposer avec l’arrivée de JRE, un compilateur java (javac). C'est le compilateur, qui transforme le
code programmé en code qui est interprété par la machine virtuelle.
Netscape en 1995 avec l’utilisation des Applets

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 15 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 16
Comment développer une application?
Deux façons d’écrire des programmes Java:
• 1. Introduction générale et historique  En écrivant le code dans un simple éditeur de texte
 Compilation et exécution du code en ligne de commande (DOS)
• 2. Première application en Java

• 3. Syntaxe et sémantique de Java  En utilisant un environnement de développement (IDE)


 Eclipse (http://www.eclipse.org)
• 4. Programmation orientée objets en Java  Netbeans (http://www.netbeans.com)
• 5. Structure des API de Java  Borland JBuilder (http://www.borland.com/jbuilder)
 IBM WebSphere Studio (http://www.ibm.com/software/awdtools)
• 6. Les collections d’Objets  Sun ONE Studio (http://wwws.sun.com/software/sundev)
 Microsoft .Net Studio (http://msdn.microsoft.com/vstudio)
• 7.La gestion des Exceptions

• 8. Interfaces graphiques (Swing et AWT)

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 17 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 18

Une première application : Application HelloISIMA Les utilitaires de Java


 Créer un fichier texte : HelloISIMA.java
 javac
 Règle de bonne pratique : 1 classe par fichier
 Compilateur, traduit fichier source .java en fichier bytecode .class
public class HelloISIMA La première ligne du programme
doit être la déclaration de la classe
{  java
public static void main (String[]args)  Interpréteur java, lance des programmes
Tout programme doit contenir une
{ seule méthode main qui porte la
signature ci-contre
System.out.println("Hello ISIMA");  javadoc
}
Écrire à l’écran “Hello ISIMA”
 Générateur de documentation d’API
}

 Compiler le programme : javac HelloISIMA.java  jar


 Le compilateur génère le bytecode dans le fichier : HelloISIMA.class  Utilitaire d’archivage et de compression
 Exécuter l’application : java HelloISIMA
 « Hello ISIMA » s’affiche à l’écran

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 19 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 20
Les utilitaires de Java : Exemple Javac et Java L’environnement Eclipse
 Javac
 Compile un fichier source .java ou un package entier  Eclipse est un Environnement de Développement Intégré (IDE)
 Exemples:  Spécialement conçu pour le développement en Java
 javac MyBankAccount.java  Créé à l’origine par IBM
compile le fichier mentionné, qui doit se trouver dans le package par
défaut  Puis cédé à la communauté Open Source
 javac be\newco\*.java –d c:\classes  Caractéristiques principales
compile tout le package be\newco et génère du code compilé dans  Notion de « projet » (1 programme  1 projet)
c:\classes, qui doit exister
 Colore le code en fonction de la signification des mots utilisés
 Java
 Force l’indentation du code
 Lance un programme principal
 Compile le code en temps réel
 Exemples:  Identifie les erreurs en cours de frappe
 java bankStream.MyProgram
 Peut générer des bouts de code automatiquement
Lance le programme spécifié par la méthode public static void
main(String[] args) dans la classe MyProgram qui se trouve dans  Permet de gérer le lancement des applications
le package bankStream.

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 21 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 22

Interface d’Eclipse Créer un projet Eclipse – Etape 1

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 23 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 24
Créer un projet Eclipse – Etape 2 Créer un projet Eclipse – Etape 3

Le contenu de votre projet


(les classes) apparaîtra ici

1 2

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 25 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 26

Une première application en Java Une première application en Java


 Maintenant que le projet a été créé, on peut commencer à
développer une application
 Une application Java est composée de « Classes »
 En règle générale, chaque classe correspond à un fichier
 Chaque fichier « source » (le code de chaque classe) est enregistré
avec le même nom de la classe avec l’extension « .java »
 Java est dit « case-sensitive »  Distingue majuscules et
minuscules!!!
 Notre première application sera composée d’une seule classe
 Le nom de cette classe sera « HelloIsima »
 Elle sera donc enregistrée dans un fichier nommé « HelloIsima.java »
 Le code de cette classe (fourni avant) doit être recopié tel qu’il est.
1 2
 ATTENTION
 Une majuscule n’est pas une minuscule

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 27 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 28
Une première application en Java Une première application en Java

 Une fois le programme écrit (ici l’unique classe), il reste à


le lancer
 Pour lancer une application Java, il faut
 Le compiler (fait automatiquement par Eclipse)
 Lancer la machine virtuelle (JVM) (fait automatiquement par
Eclipse)
 Ordonner à la JVM d’appeler la méthode « main » de la classe
La première ligne du programme doit être la principale
déclaration de la classe
 Lancer le programme en cliquant simplement sur le bouton
Tout programme doit contenir une seule méthode main

Écrire à l’écran “bienvenu à l’ISIMA”

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 29 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 30

Une première application en Java Plan du cours


Le résultat de votre application
Cliquez sur le bouton « Run »
pour relancer votre programme
• 1. Introduction générale et historique

• 2. Première application en Java

• 3. Syntaxe et sémantique de Java

• 4. Programmation orientée objets en Java


La « Console » affiche le résultat
de votre programme • 5. Structure des API de Java

• 6. Les collections d’Objets

• 7.La gestion des Exceptions

• 8. Interfaces graphiques (Swing et AWT)

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 31 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 32
Syntaxe Java Vocabulaire Java : Mots-clé
 Un langage informatique est composé de
abstract else interface switch
 Mots-clés assert enum long synchronized
 Constituent le vocabulaire du langage boolean extends native this
 Structures et règles break false new throw
 La « grammaire » du langage (=la forme requise des instructions) byte final null throws
case finally package transient
 Conventions
catch float private true
 En général des règles de notations adoptées par tous les
char for protected try
programmeurs
class goto public void
const if return volatile
continue implements short while
default import static
do instanceof strictfp
double int super

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 33 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 34

Vocabulaire Java : Identificateurs Vocabulaire Java : Les variables


 Un identificateur (identifier) c’est le nom que vous choisissez de donner à
une classe, à une méthode ou à une variable,  Une variable est une zone mémoire à laquelle on a donné un
 On ne peut pas choisir n’importe quel nom. En Java en particulier: nom de sorte que l’on puisse y faire facilement référence
 Interdiction d’utiliser les mots-clés dans le programme
 Ne peuvent pas contenir:
 Une variable à une valeur, correspondant à un certain type
 D’espaces
 De caractères internationaux (accents, etc.)
 La valeur d’une variable peut changer au cours de
 Commencent par:
l’exécution du programme
 Une lettre  Une variable Java est conçue pour un type particulier de
 Un « $ » donnée
 Un « _ » (underscore)
 Ne commencent pas par:
 Un chiffre
 Un signe de ponctuation autre que « $ » ou « _ »

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 35 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 36
Vocabulaire Java Vocabulaire Java
Types de variables en Java: Types primitifs (1/4) Types de variables en Java: Types primitifs (2/4)
 Les types de données primitifs en Java sont prédéfinis et en
nombre limité:  Explication:
 byte : codé sur 8 bits  28 valeurs  (–27) to (27–1) = -128 à 127
 Integral
 int : codé sur 32 bits  232 valeurs  (–231) to (231–1)
 byte 8 bits : -128 to 127
 short 16 bits : -32768 to 32767
 Déclaration et initialisation :
 int 32 bits : -2^31 to 2^31-1
 int int x=12;
 long 64 bits : -2^63 to 2^63-1
 short short x= 32; //(short x=33000; // Hors limite)
 Textual  long long x= 200L; // Nombre accolé à un L
 char 16 bits
 byte byte x=012; // Nombre commençant avec un 0
 Floating  double double x=23.2323;
 flot 32 bits : 1.4 E-45 to 3.4 E38  float float x= 23.233F; // Nombre accolé à un F
 double 64 bits : 4.9 E-324 to 1.8 E308  char char c=‘a’; char c=(char)97;
 Logical  boolean boolean b = true;
 boolean
2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 37 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 38

Vocabulaire Java Vocabulaire Java


Types de variables en Java: Types primitifs (3/4) Types de variables en Java: Types primitifs (4/4)

 Pour pouvoir être utilisée, une variable en Java doit être Fonctionnement:
 Déclarée (définir son nom et son type)
 Initialisée (lui donner une valeur initiale) int a = 5;
 Peut se faire en même temps que la déclaration Déclaration et initialisation de 2 entiers: a et b
int b = 8;
 Assignée (modifier sa valeur au cours de son cycle de vie)
 Syntaxe:
a=b; Affectation de la valeur de b à a
 int t; Déclaration d’un entier t (t est l’identificateur)
 int u = 3; Déclaration et initialisation d’un entier u
 t=7; Initialisation de t à la valeur 7 a b
Il existe deux variables en mémoire qui ont la
 u=t; Assignation (affectation) de la valeur de t à u même valeur
8 8
 m=9; ERREUR: « m » n’a pas été déclaré
 char c; Déclaration
 c=‘a’; Initialisation

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 39 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 40
Vocabulaire Java : Les chaînes de caractères Grammaire Java : opérateurs arithmétiques
 Les chaînes de caractères « String » sont essentielles et toujours  Quelle est la valeur de : 5+3*4+(12/4+1)
présentes dans les programmes informatiques  Règles de précédences sur les opérateurs:
 Or il n’existe pas de type primitif « string » en Java
 String n’est pas un type primitif, c’est une classe
 L’utilisation de String ressemble très fort à celle des autres types: Niveau Symbole Signification
 Déclaration de deux String:
String s1, s2; // On peut toujours déclarer plusieurs variables de 1 () Parenthèse
// même type simultanément en les séparant
* Produit
// par des virgules
 Initialisation : 2 / Division
s1 = "Hello"; % Modulo
s2 = "le monde"; + Addition ou concaténation
 Déclaration et initialisation : 3
- Soustraction
String s3 = "Hello";
 Concaténation :
String s4 = s1 + " " + s2;

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 41 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 42

Grammaire Java : Opérateurs de comparaison et logiques Grammaire Java : Opérateurs d’assignation


 Pour comparer deux valeurs:
 L’opérateur de base est ‘=‘
Opérateur Exemple Renvoie TRUE si
 Exemple: int a = 5;
> v1 > v2 v1 plus grand que v2
>= v1 >= v2 Plus grand ou égal  Il existe des opérateurs d’assignation qui réalisent à la fois
< v1 < v2 Plus petit que  une opération arithmétique, logique, ou bit à bit
<= v1 <= v2 Plus petit ou égal à  et l’assignation proprement dite
== v1 == v2 égal
!= v1 != v2 différent Opérateur Exemple Équivalent à
+= expr1 += expr2 expr1 = expr1 + expr2
 Opérateurs logiques:
-= expr1 -= expr2 expr1 = expr1 – expr2
Opérateur Usage Renvoie TRUE si
*= expr1 *= expr2 expr1 = expr1 * expr2
&& expr1 && expr2 expr1 et expr2 sont vraies
& expr1 & expr2 Idem mais évalue toujours les 2 expressions /= expr1 /= expr2 expr1 = expr1 / expr2

|| expr1 || expr2 Expr1 ou expr2, ou les deux sont vraies %= expr1 %= expr2 expr1 = expr1 % expr2
| expr1 | expr2 idem mais évalue toujours les 2 expressions ++ expr1++ expr1 = expr1 + 1
! ! expr1 expr1 est fausse -- expr1-- expr1 = expr1 - 1
!= expr1 != expr2 si expr1 est différent de expr2

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 43 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 44
Grammaire Java : Instructions et blocs d’instruction Grammaire Java: Instructions et blocs d’instruction

 Types d’instructions:
 Une instruction
 Déclaration
 Réalise un traitement particulier:  Définit un élément (variable, méthode ou classe)
 Renvoie éventuellement le résultat du calcul  S’il s’agit d’une déclaration de variable:
 Est (presque) toujours suivie de « ; »  Est normalement toujours suivie d’un « ; »

 Il en existe plusieurs types: déclaration, assignation, envoi de  Ex: int unNombreEntier;

message, etc.  S’il s’agit d’une déclaration de classe ou de méthode:


 toujours suivie d’un bloc d’instructions
 Un bloc
 Ex: int uneMethodeQuiRenvoieUnEntier(){…}
 Est une suite d’instructions entre accolades « { » et « } »
 Assignation
 Délimite la portée des variables qui y sont déclarées  Sert à modifier la valeur d’une variable, suivie d’un « ; »
 Suit (presque) toujours la déclaration des classes et méthodes  Ex: a = 57;
 Définit également le contenu des boucles et structures conditionnelles  Envoi de message
 Sert à appeler une méthode (lancer un traitement), suivie d’un « ; »
 Ex: monChien.vaChercher(leBaton);

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 45 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 46

Grammaire Java : Structures de contrôle Grammaire Java : Structures de contrôle


 Les structures de contrôles permettent d’arrêter ou de répéter  Les conditionnelles ( « if »)
l’exécution linéaire des instructions (de bas en haut et de if (LA_CONDITION_A_EVALUER)
gauche à droite) {
 Il en existe 4 grands types: //instructions à réaliser si la condition est vraie
}
 Les conditionnelles (« SI … ALORS … SINON … »)
 Les boucles (« TANT QUE … FAIRE … »)
 Les conditionnelles ( « if else »)
 Les branchements (« JE SORS DE LA BOUCLE ET JE VAIS A … »)
 Le traitement d’exceptions (« J’ESSAIE … MAIS SI CA PLANTE … »)
if (LA_CONDITION_A_EVALUER)
{
//instructions à réaliser si la condition est vraie
Type d’instruction Mots clés associés
}
Conditionnelle if() else – switch() case else
Boucle for( ; ; ) – while () – do while() {
Branchement label : -- break – continue -- return //instructions à réaliser si elle est fausse
//Peut contenir elle-même d’autres sous-conditions
Traitement d’exceptions try catch finally – throw
}
2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 47 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 48
Grammaire Java : Structures de contrôle Grammaire Java : Structures de contrôle
 Une autre forme de conditionnelle: switch – case
 Les boucles for (boucles traditionnelles)
 Permet d’évaluer une variable numérique entière
for (initialisation; condition; mise_à_jour){
 Et de provoquer des traitements différents selon sa valeur
// instructions
}
switch(UNE_VARIABLE_NUMERIQUE_ENTIERE)  Initialisation: à exécuter lorsque le programme rentre pour la
{ première fois dans la boucle  Sert à définir le compteur de la
case 1 : instructions; // A réaliser si elle vaut 1 boucle
case 2 : instructions; break; // Si elle vaut 2  Condition: à vérifier pour recommencer le bloc d’instructions
default : instructions; // Dans tous les autres cas  Mise à jour: instruction exécutée chaque fois que la boucle est
terminée
}
Exemple:
for (int i=0 ; i<10 ; i++) {
System.out.println("The value of i is : " + i);
}

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 49 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 50

Grammaire Java : Structures de contrôle Grammaire Java : Structures de contrôle

 Une autre forme de boucle: while – do while  Interrompre une boucle une fois lancée: BREAK / CONTINUE
while (CONDITION_A_RENCONTRER_POUR_CONTINUER) {  BREAK: achève immédiatement la boucle ou la conditionnelle
// Instructions à réaliser tant que la condition est  CONTINUE: ignore le reste des instructions et passe tout de suite à
// rencontrée. A la fin de chaque itération, on l’itération suivante (au début de la boucle)
// réévalue la condition et on décide soit de rester
// dans la boucle avec une nouvelle itération, soit de sortir for (int i=0; i<10 ;i++){
} if (i==5) continue; // Si i=5, on passe à 6 sans afficher
if (i==7) break; // Si i=7, on sort de la boucle
Exemple:
System.out.println("The value of i is : " + i);
int i = 0; }
while(i<10) {
System.out.println("The value of i is : " + i);
i++;
}

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 51 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 52
Grammaire Java : Structures de contrôle Grammaire Java : Structures de contrôle
BREAK [LABEL]  Intercepter les exceptions (« plantages »): TRY – CATCH
CONTINUE [LABEL]  Certains traitements sont parfois « à risque », càd que le
programmeur ne peut savoir avec certitude à l’avance si l’instruction
qu’il écrit fonctionnera correctement ou non au moment de l’exécution
for(int i=10;i>0;i‐‐){ car cela dépendra de paramètres dont il n’a pas le contrôle
if (i==7) continue; // if i=5, you jump to the beginning of the loop  Les blocs TRY – CATCH (littéralement « ESSAIE [ceci] ET SI CELA
if (i==3) break; // if i=7, you jump outside the loop and continue PROVOQUE UNE ERREUR FAIS [cela] ») permettent de « prévoir le
System.out.println("The value of i is :"+i);
coup » en interceptant l’erreur qui pourrait se produire et en prévoyant
une action correctrice
}
try{
// Une ou plusieurs instructions potentiellement « à risque »
System.out.println("The end ");
} catch(ExceptionXYZ unProblemeDeTypeXYZ){
// Ce qu’il faut faire si un problème de type XYZ se produit
}

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 53 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 54

Grammaire Java : Portée des variables Grammaire Java : Structure d’un programme
 Portée d’une variable et des attributs
Portée = Section du programme dans laquelle une variable existe
 Un programme simple en Java doit avoir la structure suivante:
 La variable ne peut pas être utilisée en dehors de cette section
 La portée est définie par les accolades qui l’entourent directement
 Exemple:
public class NomDeLaClasse {
if(solde < 0){ public static void main(String[] args){
String avertissement = "Attention, solde négatif !"; // Le programme commence ici
}
// Tout se passe à l’intérieur de ces accolades
else{
String avertissement = " ok c’est bon !"; }
} }
System.out.println(avertissement);
// Une erreur apparaîtra dès la compilation, car la variable
// « avertissement » n’existe pas en dehors du bloc IF
 Avantages
 Rend les programmes plus faciles à corriger
 Limite le risque d’erreurs liées au réemploi d’un nom pour différentes variables

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 55 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 56
Conventions : Règles de notation pour les identificateurs Conventions : Commentaires dans le code source
 Il est hautement conseillé de « documenter » le code
 Java est « case sensitive », il faut donc adopter des règles de  Cela se fait en ajoutant des commentaires précisant le rôle
notation claires et définitives en termes de majuscules et des instructions
minuscules.
 Les commentaires sont ignorés dans le code à la
 Les règles ci-dessous sont universellement appliquées par les compilation
développeurs Java et elles sont en particulier appliquées dans
toutes les classes prédéfinies
 Pour inclure des commentaires dans le code:
Pour une seule ligne de commentaires:
 Classes  Packages  2 barres obliques « // » neutralisent tout le code à droite sur la
même ligne
 class BankAccount  package coursSolvay2006;
System.out.println("Hello"); // Affiche Hello à l’écran
 class RacingBike  Variables
 Pour annuler tout un bloc de lignes: Tout le texte entre « /* » et
 Interfaces  int accountNumber
« */ » est neutralisé
 interface Account  Constantes public static void main(String[] args){
 Méthodes  MAXIMUM_SIZE /* La ligne qui suit sert à afficher un message à
 deposit() l’écran. Le message en question est « Hello »
 getName() Mais il peut être remplacé par n’importe quel autre */
System.out.println("Hello");
2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 57 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 58

Trucs et astuces de base : Méthodes essentielles Trucs et astuces de base : Méthodes essentielles
 Manipuler les dates
 Afficher quelque chose à l’écran:
 La classe java.util.Date
 System.out.println("Texte ou données à afficher");
 Contient en fait un entier long qui correspond à un moment dans le temps
 Choisir un nombre aléatoire exprimé en millisecondes depuis le 1/1/1970 à 0:00:00-000
 Math.random(); // Renvoie un double entre 0 et 1  Pour créer une date:
 Convertir un double en entier  Date d = new Date();
 int i = (int) d; // A supposer que d est un double DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT,Locale.FRANCE);
try { d = df.parse("13/11/2005");
 Convertir un entier en chaîne de caractères } catch (ParseException e) {e.printStackTrace();}
 String s = ""+i; // A supposer que i est un int  Pour obtenir la date et l’heure du système:
 Obtenir le nombre entier contenu dans une chaîne de caractère:  Date d = new Date(System.currentTimeMillis());
 int i = Integer.parseInt(s); // Si s est une chaîne de  Pour formater une date:
// caractères faite d’1 entier  String s = DateFormat.getDateInstance(DateFormat.SHORT).format(d);
 Vérifier si une chaîne de caractères est égale à une autre  String s = DateFormat.getDateInstance(DateFormat.LONG).format(d);
 s1.equals(s2) // Renvoie true si s1=s2 et false sinon  String s = DateFormat.getDateInstance(DateFormat.MEDIUM).format(d);
 s1.equalsIgnoreCase(s2) // Idem sans prêter attention aux  Il faut pour cela importer:
// majuscules/minuscules  java.util.Date, java.util.Locale, java.text.DateFormat

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 59 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 60
Trucs et astuces de base : Méthodes essentielles Le point d’entrée d ’une application

 Récupérer les entrées au clavier de l’utilisateur:  Pour débuter une application on doit fournir un point d'entrée.
 Au début du programme (avant la déclaration de la classe):  Lorsqu'une classe sert d'application elle doit fournir ce point
import java.util.Scanner; d'entrée qui est une méthode statique portant le nom de « main ».
 Ce point d'entrée doit respecter la syntaxe suivante :
 Au moment d’inviter l’utilisateur à saisir une donnée au clavier:
Scanner sc = new Scanner(System.in); public static void main( String [ ] args )
System.out.println("Veuillez saisir un mot :"); {
String str = sc.nextLine(); // une chaine de caractere // Corps du point d'entrée
}
int val = sc.nextInt(); // un entier

 Où « args » correspond à la liste des arguments passé depuis la


ligne de commande.

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 61 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 62

Comment procéder? Exercices


 Comment procéder? Pour chaque programme:  Exercice 1
 Ecrire un programme qui compte de 1 à 100
 Créez une nouvelle classe dans votre projet « HelloIsima »
 Affiche ces nombres à l’écran
 Le code de base de la classe est le suivant:
 Remplace les multiples de 5 par « * »
public class NomDeLaClasse{
 Remplace les multiples de 7 par « ** »
public static void main(String[] args){
 Remplace les multiples de 5 et 7 par « *** »
// C’est ici que vous écrirez votre programme
 Calcul de factorielle
}
 Ecrire un programme qui calcule la factorielle de 15 et afficher le résultat à
} l’écran ainsi que tous les résultats intermédiaires
 Une fois votre programme écrit, créez une nouvelle configuration de  Nombre lu a rebours
lancement dans Eclipse et lancez-le pour en tester le fonctionnement  Ecrire un algorithme qui permet de Calculer le nombre lu à rebours d'un
nombre positif entré au clavier. Entrée: 1234  Affichage: 4321.
 Trouve le nombre
 Ecrire un programme qui choisit un nombre entier au hasard entre 1 et 10
 Laisse 3 chances à l’utilisateur pour le trouver (en l’indiquant au clavier)
 Lui demande ensuite s’il souhaite rejouer

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 63 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 64
Exercices Bonus Les tableaux (1)

 Les tableaux permettent de stocker plusieurs valeurs de


 Ecrire un programme qui affiche sur la console un même type dans une variable.
triangle de la forme suivante :  Les valeurs contenues dans la variable sont repérées par un indice
*  En langage java, les tableaux sont des objets
***
 Déclaration
*****
 Int [] tab;
 En paramètre, fournissez à l’application le nombre de String[] chaines;
lignes du triangle
 Création d'un tableau
 tab = new int [20]; // tableau de 20 int
 chaines = new String [100]; // tableau de 100 chaines
 Déclaration et création simultanées
 Int[] tab = new int[20];
 String[] chaines = new String[100];

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 65 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 66

Les tableaux (2) Les tableaux (3)

 Le nombre d'éléments du tableau est mémorisé.


 Java peut ainsi détecter à l'exécution le dépassement
 Initialisation
d'indice et générer une exception.
tab[0]=1;
 Mot clé length
tab[1]=2; //etc.
chaine[0] = new String( "Boule");  Il est récupérable par nomTableau.length
chaine[1] = new String( "Bill"); //etc int taille = tab.length; // taille vaut 20
 Création et initialisation simultanées  Comme en C/C++, les indices d’un tableau commencent à
String[] chaine = {"Boule","Bill"}; ‘ 0 ’.
Point [] pts = { new Point (0, 0), new Point (10, -1)};  Donc un tableau de taille 100 aura ses indices qui iront de 0
à 99.

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 67 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 68
Les tableaux (4) Les tableaux (6)

Tab1.java Tab1.java
Mémoire
public class Tab1 public class Tab1
{ {
public static void main (String args[]) public static void main (String args[])
{ {
Pour déclarer une variable tableau
int tab[ ] ; int tab[ ] ; 0x0000
0x258 tab
on indique le type des éléments du
tab = new int[4]; tab = new int[4];
tableau et le nom de la variable
tab[0]=5; tab[0]=5; 5
0 0x258
tableau suivi de [ ]
tab[1]=3; tab[1]=3; 3
0
tab[2]=7; tab[2]=7; 7
0
tab[3]=tab[0]+tab[1]; on utilise new <type> [taille]; pour tab[3]=tab[0]+tab[1]; 8
0
} réserver un espace mémoire au tableau }
} }

On peut ensuite affecter des valeurs au


différentes cases du tableau :
Les indices vont toujours
<nom_tableau>[indice]
de 0 à (taille-1)

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 69 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 70

Les tableaux (7) Les tableaux (8)

 On peut construire des tableaux à plusieurs dimensions


 Des tableaux à plusieurs dimensions sont en fait des tableaux de tableaux
Tab2.java Mémoire
public class Tab2 « matrice » est une référence vers un
{ int[][] matrice = new int[3][]; tableau contenant lui-même 3
0x0258
0x0000
public static void main (String args[]) tableaux de taille non définie
{
matrice[0] = new int[4]; Le premier élément de la matrice est
String tab[ ] ; 0x0106 0x258
tab = new String[4]; 0x0116 matrice[1] = new int[5]; une référence vers un tableau de 4
tab[0]=new String("Pierre"); 0x0126 entiers,…
matrice[2] = new int[3];
tab[1]=new String("Paul"); 0x0136
tab[2]=new String("Jacques"); Le premier élément du premier
tab[3]=new String("Philippe"); matrice[0][0] = 25; tableau de la matrice est un entier de
} valeur 25
"Pierre"
}
"Paul" Exemple:
"Jacques"  Créer et initialiser une matrice contenant deux tableaux de 2 et 3 entiers
"Philippe" respectivement
 Remplir les 5 « cases » du tableau avec des valeurs entières

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 71 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 72
Les tableaux (9) Utilisation des tableaux de taille dynamique
matriceDEntiers
 Les tableaux ont pour défaut d’avoir une taille fixée à priori.
int[][] matriceDEntiers;
 Java fourni des collections plus souples et simples d’utilisation.
matriceDEntiers = new int[2][];
 La gestion de la taille est automatisée et allège la tâche du
matriceDEntiers[0] = new int[2];
[0] programmeur.
matriceDEntiers[1] = new int[3];
25  Pour déclarer une variable de type tableau d’entiers :
matriceDEntiers[0][0] = 25; [0]
matriceDEntiers[0][1] = 76; [1]
 ArrayList<Integer> monTableau = new ArrayList<Integer>();
matriceDEntiers[1][0] = 13; 76  On peut remplacer Integer par n’importe quelle “class”
matriceDEntiers[1][1] = 45;  Pour ajouter une donnée au tableau :
matriceDEntiers[1][2] = 68; [1]  monTableau.add(3);
13
 Pour récupérer un élément en position k :
[0]
 int elem = monTableau.get(k);
45 [1]
[2]
68

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 73 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 74

Utilisation des tableaux de taille dynamique La classe String (1)


 Parcours d’un tableau
 Approche classique :  String n’est pas un type de base. Il s'agit d'une classe
for(int i=0; i<monTableau.size(); i++) définie dans l’API Java (Dans le package java.lang)
{ String s="aaa"; // s contient la chaîne "aaa"
int elemti = monTableau.get(i); String s=new String("aaa"); // identique à la ligne précédente
System.out.println(elemti);  La concaténation
}  l’opérateur + sert a concatener deux String :
String str1 = "Bonjour ! ";
 Approche “for each” String str2 = null;
for(int elemti : monTableau) str2 = "Comment vas-tu ?";
{ String str3 = str1 + str2; // Concaténation de chaînes :
System.out.println(elemti); //str3 contient " Bonjour ! Comment vas-tu ?"
}

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 75 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 76
Différences entre objets et types de base La classe String (2)

Mémoire  Longueur d’un objet String :


3 x  méthode int length() : renvoie la longueur de la chaîne
int x=3,y=3; 3 String str1 = "bonjour";
x == y est vrai y
int n = str1.length(); // n vaut 7
0x768  Sous-chaînes
 méthode String substring(int debut, int fin)
0x852
String s1= new String("abc"),  extraction de la sous-chaine depuis la position debut jusqu’à la
String s2=new String("abc"); abc position fin non-comprise.
s1 == s2 est faux... ....
String str2 = str1.substring(0,3); // str2 contient la valeur "bon"
 Quand on compare 2 variables d’un type de base on  le premier caractère d’une chaîne occupe la position 0
compare leur valeur. abc
 Quand on compare 2 objet avec les opérateurs on  le deuxième paramètre de substring indique la position du
....
compare leur référence (leur adresse en mémoire) premier caractère que l ’on ne souhaite pas copier
 Introduction de la méthode equals() pour les objets :
s1.equals(s2) est vrai

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 77 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 78

La classe String (3) La classe String (4)

 Récupération d’un caractère dans une chaîne  Les chaînes de caractères sont des objets :
 méthode char charAt(int pos) : renvoie le caractère situé à la  pour tester si 2 chaînes sont égales il faut utiliser la méthode
position pos dans la chaîne de caractère à laquelle on envoie se boolean equals(String str) et non ==
message  pour tester si 2 chaînes sont égales à la casse près il faut utiliser
String str1 = "bonjour"; la méthode boolean equalsIgnoreCase(String str)
char c= str1.charAt(3); // c contient le caractère 'j' String str1 = new String("BonJour");
 Modification des objets String String str2 = new String("bonjour");
 il est possible de modifier le contenu de la variable contenant la String str3 = new String( "bonjour");
chaîne (la variable ne référence plus la même chaîne). boolean a, b, c, d, e;
str1 = str1.substring(0,3) + " soir"; a = str1.equals("BonJour"); //a contient la valeur true
/* str1 contient maintenant la chaîne "bonsoir" */ b = (str2 = = str3); //b contient la valeur false
c = str1.equals(str2); //c contient la valeur false
d = str1.equalsIgnoreCase(str2); //d contient la valeur true
e = "bonjour".equals(str2); //e contient la valeur true

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 79 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 80
La classe String (5) La classe Math

 Quelques autres méthodes utiles  Les fonctions mathématiques les plus connues sont
 boolean startsWith(String str) : pour tester si une chaine de regroupées dans la classe Math qui appartient au package
caractère commence par la chaine de caractère str java.lang
 boolean endsWith(String str) : pour tester si une chaîne de
 les fonctions trigonométriques
caractère se termine par la chaine de caractère str
 les fonctions d’arrondi, de valeur absolue, ...
String str1 = "bonjour ";
 la racine carrée, la puissance, l’exponentiel, le logarithme, etc.
boolean a = str1.startsWith("bon"); //a vaut true
boolean b = str1.endsWith("jour"); //b vaut true  Ce sont des méthodes de classe (static)
double calcul = Math.sqrt (Math.pow(5,2) + Math.pow(7,2));
double sqrt(double x) : racine carrée de x
double pow(double x, double y) : x puissance y

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 81 2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 82

Exercices
 Etudiants
 Ecrire un programme permettant d’enregistrer les notes des
étudiants à un examen
 Le programme demande d’abord à l’utilisateur combien de notes il
souhaite saisir (soit N)
 Ensuite il demande à l’utilisateur d’introduire une à une les notes
des N étudiants (/20)
 Votre programme mémorise ces résultats
 Les affiche une fois la dernière note saisie
 Et affiche quelques statistiques de base:
 le nombre de réussites
 Le nombre d’échecs
 la moyenne totale

2023/2024 Programmation Orientée Objet – Java – LCE2 – ISIMA Enseignant : Soufien GDAIM 83

Vous aimerez peut-être aussi