1
Programmation Java
Chapitre 1 : Introduction Java
Mehdi Mokni
2020/2021
2
Moyenne du module
70% Examen Finale
20% Devoir Surveillé
10% Contrôle Continue
3 Plan
Introduction Java
Classe et objet
Encapsulation
Héritage
Polymorphisme
Exceptions
Connexion Base de donnée
Interfaces
Lambda Expression
Collections
Stream
4 Objectifs
✓ Comprendre le paradigme OO et utiliser Java pour
le mettre en œuvre
✓ Notion de classe et d’objet
✓ Décrire les éléments-clé de la plate-forme Java
✓ Compiler et exécuter une application Java
✓ Décrire la syntaxe du langage
✓ Comprendre et utiliser les API de java
5
Aperçu : Orienté Objet
6 Orienté Objet
✓ La programmation orientée objet se base sur une
approche de conception et de développement de
logiciels
✓ Représenter les éléments du monde réel par des
entités informatiques appelés "objets" en adoptant un
haut niveau d'abstraction.
7 Orienté Objet
Approche procédurale :
"Que doit faire mon programme ?"
Approche orientée-objet :
"De quoi doit être composé mon programme ?"
8 Orienté Objet
Des objets similaires peuvent être informatiquement décrits par
une même abstraction : une classe
➢ même structure de données et méthodes de traitement
➢ valeurs différentes pour chaque objet
9
C++ vs Java
Pas de structures ni d’unions
Pas de typedef
Pas de variables ni de fonctions en dehors des classes
Pas d'héritage multiple de classes
Pas de surcharge d’opérateurs
Pas de passage par copie pour les objets
Pas de pointeurs, seulement des références
10
JAVA: La plateforme
11 Qu’est ce que « Java » ?
Un langage de programmation orienté objet.
Java est portable : il est indépendant de toute plate-forme
Quels types d’application pour « java » ?
Java SE Java ME Java EE Java Java Card
(Standard Edition) (Micro Edition) (Enterprise Edition) Embedded
Programme en Java interprété/
12
compilé ?
✓ Compiler le programme
- Traduire le programme dans un langage de bas niveau
(machine)
- [éventuellement optimisation]
- Produire un programme (code) exécutable
✓ Exécution
- Charger le programme en mémoire (typiquement en tapant
le nom du programme exécutable)
- Exécution
13 Programme JAVA (1)
Un programme Java est compilé et
interprété
-le code source est, directement,
Compilé interprété sans phase de
compilation, et c'est l'interprète qui
exécute ce code source, qu'il
interprète à la volée (JVM)
-le code source est soumis à un
compilateur, pour en faire un
fichier binaire compréhensible par
un microprocesseur (une sorte de Interprété
pré-fichier .exe)
14 Programme JAVA (2)
15 JAVA: la Plateforme
Plateforme = environnement hardware ou software sur lequel le
programme est exécuté.
La Java « Platform » se compose de :
✓ Java Virtual Machine (Java VM)
✓ Java Application Programming Interface (Java API)
16 Machine Virtuelle : JVM
Une machine virtuelle est un ordinateur fictif s’exécutant
sur un ordinateur réel :
Possède un langage natif propre et traduit un programme
écrit dans ce langage vers le langage natif de
l’ordinateur.
Définit les spécifications hardware de la plateforme
Lit le bytecode compilé (indépendant de la plateforme)
API: Java Application
17
Programming Interface
✓ L’API Java est structuré en libraires (packages)
✓ Les packages comprennent des ensembles fonctionnels de composants
(classes)
✓ Le noyau (core) de l’API Java (inclus dans toute implémentation complète
de la plateforme Java) comprend notamment :
▪ Essentials (data types, objects, string, array, vector, I/O, date,…)
▪ Applet
▪ Abstract Windowing Toolkit (AWT)
▪ Basic Networking (URL, Socket TCP or UDP, IP)
▪ Evolved Networking (Remote Method Invocation)
▪ Internationalization
▪ Security
…..
18
JAVA: Les versions
Release End of Free Extended
Version
date Public Updates Support Until
JDK Beta 1995 ? ?
19 JDK 1.0 January 1996 ? ?
JDK 1.1 February 1997 ? ?
J2SE 1.2 December 1998 ? ?
J2SE 1.3 May 2000 ? ?
J2SE 1.4 February 2002 October 2008 February 2013
J2SE 5.0 September 2004 November 2009 April 2015
Java SE 6 December 2006 April 2013 December 2018
Janvier 2010 Rachat de Sun par Oracle
Java SE 7 July 2011 April 2015 July 2022
Java SE 8 (LTS) March 2014 May 2026 December 2030
Java SE 9 September 2017 March 2018 N/A
Java SE 10 March 2018 September 2018 N/A
Java SE 11 (LTS) September 2018 October 2024 September 2026
Java SE 12 March 2019 September 2019 N/A
Java SE 13 September 2019 March 2020 N/A
Java SE 14 March 2020 September 2020 N/A
Java SE 15 September 2020 March 2021 N/A
Java SE 16 March 2021 September 2021 N/A
Java SE 17 (LTS) September 2021 TBA TBA
Legend
Older version, still
Old version Latest version Future release
maintained
20
JAVA: Les versions
Java 6 vs Java 7
Les améliorations proposées par la version SE 7 de Java :
▪ Performance, stabilité et sécurité accrues
▪ Améliorations du plug-in Java pour le développement et le déploiement des
applications Internet riches
▪ Une meilleure optimisation du code Java
▪ Améliorations de la machine virtuelle Java destinées à prendre en charge les
langages autres que Java
21 JAVA: Les versions
Java 7 vs Java 8
Les nouvelles fonctionnalités proposées par la version SE 8 de
Java:
- Lamda Expressions
- Generic Type changes and improvements
- Stream Collection Types ([Link])
- Functional Interfaces ([Link])
- Nashorn – The [Link] on JVM
- Date/Time changes ([Link])
- Type Annotations
22
JAVA: Notions, mots clés…
23 Notions fondamentales
- Classe / Objet / Instance
- Attributs / Méthodes
- Encapsulation
- Héritage
- Polymorphisme
24 JAVA: Classe
- les briques de constructions d’un programme JAVA sont les
classes,
LES ATTRIBUTS :
Partie statique les données (Propriétés) Les attributs représentent
la
description des données
propres à chaque classe
d'objets
le code les manipulant LES METHODES :
Partie dynamique Les méthodes représentent
(Méthodes)
l'ensemble des actions,
procédures, fonctions ou
opérations que l'on
peut associer à une classe
Classe
25 Les Identificateurs
• Nommer les classes, les variables, les méthodes, ...
• Un identificateur Java
✓ est de longueur quelconque
✓ commence par une lettre Unicode
✓ peut ensuite contenir des lettres ou des chiffres ou le caractère
✓ souligné«_ »
✓ ne doit pas être un mot réservé du langage (mot clé) (if, for,
✓ true, … )
• les caractères suivants sont autorisés pour construire un
identificateur Java : "$" , "_" , "μ" et les lettres accentuées.
[a..z, A..Z, $, _, μ ]{a..z, A..Z, $, _, μ, 0..9, Unicode}
26 Mots clés Java
Abstract boolean break byte
case catch char class
continue default do double
else extends final, finally
float for if implements
import instanceof, int interface
long native new null
package private protected public
return short static super
switch synchronized this throw
throws transient try
void volatile while
27 Règles de Nommage
Classe :
✓ 1ère lettre en majuscule
✓ Mélange de minuscule, majuscule avec la première lettre de
chaque mot en majuscule
✓ Donner des noms simples et descriptifs
Packages
✓ Tout en minuscule.
✓ Utiliser seulement [a-z], [0-9] et le point '.': Ne pas utiliser de tiret
'-', d'underscore '_', d'espace, ou d'autres caractères ($, *,
accents, ...).
Constante:
• Les constantes sont en majuscules et les mots sont séparés par
le caractère souligné« _ »: UNE_CONSTANTE
28 Types de données en Java
On distingue entre 2 grands groupes de types de données :
➢ types primitifs
➢ objets (instances de classe)
29 Types primitifs
• Valeur logique
✓ boolean (true/false)
• Nombres entiers
✓ byte (1 octet)
✓ short (2octets)
✓ int (4 octets)
✓ long (8 octets)
• Nombres non entiers (à virgule flottante)
✓ float (4 octets)
✓ double (8 octets).
• Caractère (un seul)
✓ char (2 octets)
30 Types primitifs et valeurs
31 Les enveloppeurs (Wrappers)
• Les primitives peuvent être "enveloppées" dans un objet
provenant d'une classe prévue
• Les enveloppeurs sont des objets pouvant contenir une
primitive et auxquels sont associés des méthodes permettant de
les manipuler
• Tous les enveloppeurs héritent de la classe Object et
bénéficient de plusieurs méthodes utilitaires (comparaison,
valeur maximale et minimale etc.)
32 Les enveloppeurs (Wrappers)
33 Les enveloppeurs (Wrappers)
public class MyClass {
public static void main(String[] args) {
int myint = 100;
Integer myInt = 100;
String myString = [Link]();
[Link]([Link]());
}
}
34 Structure conditionnelle/ittératif
Schémas conditionnels : Exécuter une série d'instructions
dans le cas où une condition est vraie, et d'exécuter une
autre série d'instructions dans le cas contraire
if (même syntaxe qu'en C/C++)
switch-case (même syntaxe qu'en C/C++)
Schémas itératifs : Le traitement itératif est utilisé pour
exécuter une ou plusieurs instructions plusieurs fois
for (même syntaxe qu'en C/C++)
while (même syntaxe qu'en C/C++)
do-while (même syntaxe qu'en C/C++)
35
JAVA: Premiers pas …
36 Outils de développement (1)
Pour développer un programme JAVA on utilise un IDE,
Afin de pouvoir créer une application JAVA consistante, on a
besoin du JDK,
Pour tester et lancer le code écrit, on doit, nécessairement,
disposer du JRE.
37 Outils de développement (2)
L’environnement qui permet d'exécuter les applications java.
JRE
(Java Runtime
Il est constitué de la JVM en particulier (Java Virtual Machine).
Environment)
Outils permettant de développer, compiler (javac), débuguer (jdb) et
JDK exécuter un programme java.
(Java Development
Kit)
Il y a aussi des outils d'archivage (jar), de génération de documentation
(javadoc).
38 Outils de développement (3)
Un programme regroupant un ensemble d'outils pour le développement
IDE de logiciels.
(Integrated
Development
Environment) En général, un IDE regroupe un éditeur de texte, un compilateur, des
outils automatiques de fabrication, et souvent un débogueur. (Exp:
Eclipse, Netbeans)
39 Hello World (Pré-configuration)
Installer le JDK sous Windows
Télécharger et d'exécuter le programme "[Link]"
depuis le site d’Oracle
[Link]
Paramétrer correctement la variable PATH
(Variables d’environnement )
[Link]
40 Premier Programme
41 Les commandes en JAVA
✓ Compiler avec la commande : Javac [Link]
➔Un fichier « [Link] » est généré
✓ Exécuter en lançant la machine virtuelle java et en
lui spécifiant le point d'entrée Java HelloWorld
✓ Utiliser args[0] pour lire le premier argument arg1 de
type String (args[1] pour arg2 ect)
Java HelloWorld arg1 arg2
42 Exécution du 1er Programme