0% ont trouvé ce document utile (0 vote)
140 vues61 pages

Cours de Programmation Java I

Le document décrit les concepts de base de la programmation orientée objet en Java, notamment la structure des classes, les membres comme les attributs et méthodes, et la création d'objets à partir des classes.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
140 vues61 pages

Cours de Programmation Java I

Le document décrit les concepts de base de la programmation orientée objet en Java, notamment la structure des classes, les membres comme les attributs et méthodes, et la création d'objets à partir des classes.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Langage Java I

COURS DE PROGRAMMATION JAVA I.


12/10/2018
INSTRUCTEUR : OTILAIRE MÉDARD
1
Chap. I Introduction au langage java
1-Introduction
Le langage Java est un langage généraliste de
programmation synthétisant des principaux langages
existants lors de sa création en 1995 par Sun Microsystems.
Il permet une programmation orientée-objet.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 2
INSTRUTEUR : OTILAIRE MÉDARD
2- Différents styles de programmation:
- Style applicatif
Fondé sur l'évaluation d'expressions qui ne dépendent que
de la valeur des arguments, et non de l'état de la
mémoire.
Ex: Lisp, Caml, ML, Haskel
- Style impératif
Fondé sur l'exécution d'instructions qui modifient l'état de
la mémoire. Il Utilise beaucoup les itérations et autres
structures de contrôle. Les structures de données sont
fondamentales.
Ex: Fortran, C, Pascal…
COURS DE PROGRAMMATION JAVA I.
12/10/2018 3
INSTRUTEUR : OTILAIRE MÉDARD
-Le style objet
C'est un style de programmation où l'on considère que des
composants autonomes (les objets) disposent des
ressources et des moyens d'interactions entre eux.
Ces objets représentent des données qui sont modélisées
par des classes.
Java n'est pas le seul langage objet, il y a aussi:
- Simula, Smalltalk, C++ …

COURS DE PROGRAMMATION JAVA I.


12/10/2018 4
INSTRUTEUR : OTILAIRE MÉDARD
3- Les avantages de la programmation objet
Le style objet favorise:
➢ la programmation modulaire;
➢ l'abstraction;
➢ la spécialisation.
L'objectif est de produire du code:
❖facile à développer, à maintenir, à faire évoluer, à
réutiliser, tout ou en partie, sans avoir besoin de le
dupliquer;
❖générique, et dont les spécialisations sont transparentes

COURS DE PROGRAMMATION JAVA I.


12/10/2018 5
INSTRUTEUR : OTILAIRE MÉDARD
4-Naissance et Environnement Java
Le langage java est né en 1995 chez Sun Microsystems.
Aujourd’hui racheté par Oracle.
La version actuelle Java 8 est une version d’Oracle.
Java est un langage:
➢orienté objet;
➢fortement typé: toute variable doit être déclarée avec un
type, Le compilateur vérifie que les utilisations des
variables sont compatibles avec leur type.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 6
INSTRUTEUR : OTILAIRE MÉDARD
Naissance et Environnement Java(suite)
Les types sont d'une part fournis par le langage et d’autre
part définis par des classes;
➢compilé: en bytecode; code intermédiaire et indépendant
de la machine;
➢Interprété: Le bytecode est interprété par une machine
virtuelle Java.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 7
INSTRUTEUR : OTILAIRE MÉDARD
Exemple d’un code sous java
public class HelloWorld {
public static void main(String[] args) {
[Link]("Bonjour à vous les TC2!");
}
}

COURS DE PROGRAMMATION JAVA I.


12/10/2018 8
INSTRUTEUR : OTILAIRE MÉDARD
4-1-Le bytecode
Le langage source Java est défini par la JLS (Java Language
Specification) éditée par Sun-Oracle
▪Le code source d'une classe contenue dans un fichier est
compilé avec la commande javac
▪Cela produit un code intermédiaire, appelé bytecode, qui
est le « langage machine » de la machine virtuelle Java
▪Le bytecode d'une classe est destiné à être chargé par une
machine virtuelle qui doit l'exécuter avec la commande
java.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 9
INSTRUTEUR : OTILAIRE MÉDARD
4-2-La machine virtuelle (JVM)
Son rôle est d'abstraire le comportement d'une machine pour le rendre le plus
possible indépendant de la plateforme.
Son comportement est défini par la JVM Spec édité par Sun-Oracle.
Une JVM est une implémentation de cette spec
Qui peut être adaptée à une plateforme d'accueil (Windows,Linux, Mac...)

COURS DE PROGRAMMATION JAVA I.


12/10/2018 10
INSTRUTEUR : OTILAIRE MÉDARD
4-2-La machine virtuelle (JVM)
Elle peut être développée par Sun (HotSpot: open source GPL
depuis 2006) ou par d'autres: IBM, Jikes, etc.
Une JVM traduit le bytecode dans le langage machine de la
plateforme d'accueil.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 11
INSTRUTEUR : OTILAIRE MÉDARD
Technologie Java et groupes des produits

COURS DE PROGRAMMATION JAVA I.


12/10/2018 12
INSTRUTEUR : OTILAIRE MÉDARD
COURS DE PROGRAMMATION JAVA I.
12/10/2018 13
INSTRUTEUR : OTILAIRE MÉDARD
COURS DE PROGRAMMATION JAVA I.
12/10/2018 14
INSTRUTEUR : OTILAIRE MÉDARD
Chap. II Concepts de base de la programmation
orientée objet.
I- La classe java
1- Introduction :
Une classe regroupe un ensemble de données (qui
peuvent être des variables primitives ou des objets) et un
ensemble de méthodes de traitement de ces données.
2-Structure de la classe.
Une classe est définie par son nom et son package
d'appartenance.
Exemple: [Link]
COURS DE PROGRAMMATION JAVA I.
12/10/2018 15
INSTRUTEUR : OTILAIRE MÉDARD
Structure de la classe (suite)
Une classe peut contenir trois sortes de membres :
➢ les champs (fields) ou attributs;
➢ les méthodes (methods);
➢ les classes internes.
Les membres statiques sont les membres de la classe,
ils sont définis sur la classe et non sur les objets et les
membres non statiques (instance) ne peuvent exister
sans l’objet

COURS DE PROGRAMMATION JAVA I.


12/10/2018 16
INSTRUTEUR : OTILAIRE MÉDARD
Structure de la classe (suite)
La déclaration d'une classe se fait de la façon suivante :
Modificateurs class NomClasse
{
corps de la classe
}
Le nom de la classe doit débuter par une lettre majuscule

COURS DE PROGRAMMATION JAVA I.


12/10/2018 17
INSTRUTEUR : OTILAIRE MÉDARD
Structure de la classe (suite)
2-1. Les classes internes
Une classe Java peut contenir, outre des primitives, des
objets (du moins leurs références)et des définitions de
méthodes, il y’a aussi des définitions de classe. La classe
définie à l’intérieur d’une classe est appelé classe interne.
2-2. Les membres
Les membres sont des variables qui caractérisent une
classe. Notons que Java initialise par défaut les variables
membres.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 18
INSTRUTEUR : OTILAIRE MÉDARD
Structure de la classe (suite)
2-3. Les méthodes
Les méthodes sont les opérations ou les fonctions que l'on
peut effectuer sur une classe. On distingue deux types de
méthodes :
- les accesseurs(fonctions), qui ne modifient pas l’état et se
contente de retourner la valeur d’un champs ;
- les modificateurs(procédures), qui modifient l’état en
effectuant un calcul spécifique.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 19
INSTRUTEUR : OTILAIRE MÉDARD
Structure de la classe (suite)
2-4. Les constructeurs
Les constructeurs sont des méthodes particulières en ce
qu’elles portent le même nom que la classe à laquelle elles
appartiennent. Elles sont automatiquement exécutées lors
de la création d’un objet. Le constructeur par défaut ne
possèdent pas d’arguments.
▪Les constructeurs n’ont pas de type et ne retournent pas la
valeur.
▪Les constructeurs ne sont pas hérités par les classes
dérivées.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 20
INSTRUCTEUR : OTILAIRE MÉDARD
Structure de la classe (suite)

2-5. Surcharge
Les constructeurs, tout comme les méthodes, peuvent être surchargés dans le
sens où il peut y avoir plusieurs constructeurs dans une même classe, qui
possèdent le même nom (celui de la classe). Un constructeur s’identifie par sa
signature qui doit être différente des autres constructeurs.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 21
INSTRUTEUR : OTILAIRE MÉDARD
Structure de la classe (suite)

2-6. Les objets.


Un objet est une instance d’une classe. Pour créer un objet, il est nécessaire de
déclarer
une variable dont le type est la classe à instancier, puis de faire appel à un
constructeur de cette classe.
Exemple:
Cercle mon_rond;
mon_rond = new Cercle();
Les objets sont manipulés via des références (adresses mémoire)

COURS DE PROGRAMMATION JAVA I.


12/10/2018 22
INSTRUTEUR : OTILAIRE MÉDARD
COURS DE PROGRAMMATION JAVA I.
12/10/2018 23
INSTRUTEUR : OTILAIRE MÉDARD
II- Héritage.

1. Introduction
Dans un langage de programmation orientée objet, on peut définir une classe à
différent niveaux d’abstraction permettant ainsi de factoriser certains attributs
communs à plusieurs classes.
Chaque classe dérive d’une classe de niveau supérieur, appelée sur-classe. Cela
est vrai pour toutes les classes sauf une. Il s’agit de la classe Object, qui est
l’ancêtre de toutes les classes.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 24
INSTRUTEUR : OTILAIRE MÉDARD
2- Principe de l’héritage
L’idée principale de l’héritage est d’organiser les classes de manière
hiérarchique. La relation d’héritage est unidirectionnelle et, si une classe
B hérite d’une classe A, on dira que B est une sous classe de A. Cette
notion de sous-classe signifie que la classe B est un cas particulier de la
classe A et donc que les objets instanciant la classe B instancient
également la classe A.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 25
INSTRUTEUR : OTILAIRE MÉDARD
III. Encapsulation
Lors de la conception d’un programme orienté-objet, le programmeur
doit identifier les objets et les données appartenant à chaque objet mais aussi
des droits d’accès qu’ont les autres objets sur ces données. L’encapsulation de
données dans un objet permet de cacher ou non leur existence aux autres
objets du programme.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 26
INSTRUTEUR : OTILAIRE MÉDARD
IV. Accessibilité
En Java, il existe quatre catégories d’autorisations d’accès, spécifiés par les
modificateurs suivants : private, protected, public et la quatrième catégorie
correspond à l’absence de modificateur.
1-public
Les classes, les interfaces, les variables (primitives ou objets) et les méthodes
peuvent être déclarées public. Les éléments public peuvent être utilisés par
n’importe qui sans restriction ; il est accessible à l'extérieur de la classe.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 27
INSTRUTEUR : OTILAIRE MÉDARD
[Link]
Cette autorisation s’applique uniquement aux membres de classes, c’est-à-dire
aux variables (objets ou primitives), aux méthodes et aux classes internes.
Dans ce cas, l’accès en est réservé aux méthodes des classes appartenant au
même package et aux classes dérivées de ces classes.
Plus simplement, on retiendra qu’un élément déclaré protected n’est visible que
dans la classe où il est défini et dans ses sous-classes.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 28
INSTRUTEUR : OTILAIRE MÉDARD
L’autorisation [Link]
défaut s’applique auxpar défaut
classes, interfaces, variables et
méthodes.
Les éléments qui disposent de cette autorisation sont accessibles à toutes les
méthodes des classes du même package.
4. private
L’autorisation private est la plus restrictive. Elle s’applique aux membres d’une
classe (variables, méthodes, classes internes). Les éléments déclarés private ne
sont accessibles que depuis la classe qui les contient

COURS DE PROGRAMMATION JAVA I.


12/10/2018 29
INSTRUTEUR : OTILAIRE MÉDARD
Private(suite)
Ce type d’autorisation est souvent employé pour les variables qui ne doivent
être lues ou modifiées qu’à l’aide d’un accesseur ou d’un modificateur.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 30
INSTRUTEUR : OTILAIRE MÉDARD
V. Méthodes et classes abstraites

1.Méthodes abstraites

Une méthode déclarée abstract ne peut être exécutée. En


fait, elle n’a pas d’existence réelle. Sa déclaration indique
simplement que les classes dérivées doivent la redéfinir.
2. Classes abstraites

C’est une classe qu’on ne peut pas directement instancier


car certaines de ses méthodes ne sont pas implémentées.
Une classe abstraite peut donc contenir des variables, des
méthodes implémentées et des signatures de méthode à
implémenter.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 31
INSTRUTEUR : OTILAIRE MÉDARD
3. Les interfaces
Une classe peut contenir des méthodes abstraites et des méthodes non
abstraites. Cependant, il existe une catégorie particulière de classes qui porte
que des méthodes abstraites. Il s’agit des interfaces. Une interface définit un
comportement qui doit être implémenté par une classe, sans implémenter ce
comportement. C’est un ensemble de méthodes abstraites, et de constantes.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 32
INSTRUTEUR : OTILAIRE MÉDARD
Exemple

interface Tronc_Commun { void tc3(); }

class Ig implements Tronc_Commun {


public void tc3() {
[Link](“IG 3eme annee"); }
}
class Rt implements Tronc_Commun {
public void tc3() { [Link](“RT 3eme annee"); }
}
class Mr implements Tronc_Commun {
public void tc3() { [Link](“MR 3eme annee"); }
}

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


{
Tronc_Commun[ ] tab = { new Ig(), new Rt() , new Mr() };
Tronc_Commun i : tab)
i. tc3();
}
} 12/10/2018
COURS DE PROGRAMMATION JAVA I.
INSTRUTEUR : OTILAIRE MÉDARD
33
VI. Polymorphisme
Le polymorphisme est la faculté attribuée à un objet d’être une
instance de plusieurs classes.
Il y a une seule classe “réelle” qui est celle dont le constructeur a été appelé en
premier mais il peut aussi être déclaré avec une classe supérieure à sa classe
réelle. Cette propriété est très utile pour la création d’ensembles regroupant
des objets de classes différentes

COURS DE PROGRAMMATION JAVA I.


12/10/2018 34
INSTRUTEUR : OTILAIRE MÉDARD
ChpIV Accès aux bases de
données en Java
I-Introduction

JDBC : Java Data Base Connectivity est un framework


permetant l’accès aux bases de données relationnelles
dans un programme java, Indépendamment du type de
la base utilisée (mySQL, Oracle, Postgres ...)

II-Principes généraux d'accès à une BDD

L’accès à une base de données sous java est géré en 4


étapes:

COURS DE PROGRAMMATION JAVA I.


12/10/2018 35
INSTRUTEUR : OTILAIRE MÉDARD
Principes généraux d'accès à
une
❖Première étape:
BDD (suite)
Préciser le type de driver que l'on veut utiliser.
Le driver permet de gérer l'accès à un type particulier de SGBD.

❖Deuxième étape
Récupérer un objet « Connection » en s'identifiant auprès du SGBD et en
précisant la base utilisée.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 36
INSTRUTEUR : OTILAIRE MÉDARD
Principes généraux d'accès à
une BDD (suite)
❖Troisième Etapes
A partir de la connexion, créer un « statement » (état) correspondant à
une requête particulière
Exécuter ce statement au niveau du SGBD et Fermer le statement
❖Dernière étape
Se déconnecter de la base en fermant la connexion.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 37
INSTRUTEUR : OTILAIRE MÉDARD
III-Connexion au SGBD
La Classe [Link] gère le contrôle et de la connexion au SGBD.
La Méthodes principales static void registerDriver(Driver driver) le driver
(objet driver) pour un type de SGBD particulier.
NB: Le driver est dépendant du SGBD utilisé
static Connection getConnection( String url, String user, String password) crée
une connexion permettant d'utiliser une base
url : identification de la base considérée sur le SGBD

COURS DE PROGRAMMATION JAVA I.


12/10/2018 38
INSTRUTEUR : OTILAIRE MÉDARD
Connexion au SGBD(suite)
NB: Le format de l'URL est dépendant du SGGB utilisé.
user : est le nom de l'utilisateur qui se connecte à la base
password : est le mot de passe de l'utilisateur
L’Interface [Link] prépare l'exécution d'instructions sur la base de
2 types d’instructions.
❑Instruction simple : classe Statement
Elle exécute directement et une fois l'action sur la base

COURS DE PROGRAMMATION JAVA I.


12/10/2018 39
INSTRUTEUR : OTILAIRE MÉDARD
Connexion au SGBD(suite)
❑Instruction paramétrée : classe PreparedStatement, cette instruction est
générique, des champs sont non remplis. Elle permet une pré-compilation de
l'instruction optimisant les performances.
Pour chaque exécution, on précise les champs manquants.
Pour ces 2 instructions, on utilise 2 types d'ordres possibles

COURS DE PROGRAMMATION JAVA I.


12/10/2018 40
INSTRUTEUR : OTILAIRE MÉDARD
Connexion au SGBD(suite)
❖Update : mise à jour du contenu de la base
❖Query : consultation (avec un select) des données de la base
Les méthodes principales de Connection Statement createStatement()
retourne un état permettant de réaliser une instruction simple et
PreparedStatement prepareStatement(String order) retourne un état
permettant de réaliser une instruction

COURS DE PROGRAMMATION JAVA I.


12/10/2018 41
INSTRUCTEUR : OTILAIRE MÉDARD
Connexion au SGBD(suite)
paramétrée et pré-compilée pour un ordre order. Dans l'ordre, les champs
libres (au nombre quelconque) sont précisés par des ?.
Ex : ''select nom from clients where ville=?'‘
Lors de l'exécution de l'ordre, on précisera la valeur du champ.

La méthode void close() ferme la connexion avec le SGBD.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 42
INSTRUCTEUR : OTILAIRE MÉDARD
III-1: Instruction simple
La classe Statement gère deux instruction:
❖Le ResultSet executeQuery(String ordre), elle exécute un ordre de type
SELECT sur la base, il retourne un objet de type ResultSet contenant tous
les résultats de la requête.

❖Le int executeUpdate(String ordre), elle exécute un ordre de type INSERT,


UPDATE, ou DELETE

COURS DE PROGRAMMATION JAVA I.


12/10/2018 43
INSTRUTEUR : OTILAIRE MÉDARD
III-2: Instruction paramétrée
Classe PreparedStatement gère aussi deux types d’instructions mais avant
d'exécuter l'ordre, on remplit les champs avec la méthode void
set[Type](int index, [Type] val)
Ex : void setString(int index, String val).
❖Le ResultSet executeQuery() exécute un ordre de type SELECT sur la base
et elle Retourne un objet de type ResultSet contenant tous les résultats de
la requête.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 44
INSTRUTEUR : OTILAIRE MÉDARD
Instruction paramétrée(Suite)
❖Le int executeUpdate() Exécute un ordre de type INSERT, UPDATE, ou
DELETE.

III-3. Lecture des résultats.


La Classe ResultSet contient les résultats d'une
requête SELECT de plusieurs lignes contenant
plusieurs colonnes on y accède ligne par ligne
puis valeur par valeur dans la ligne pour
changer de ligne, on utilise la

COURS DE PROGRAMMATION JAVA I.


12/10/2018 45
INSTRUTEUR : OTILAIRE MÉDARD
Lecture des résultats(suite).
méthode boolean next() qui permet se place à la ligne suivante s'il y en a une.
Elle retourne true si le déplacement a été fait, false s'il n'y avait pas d'autre
ligne,
la méthode boolean previous() permet de se place à la ligne précédente s'il y
en a une, elle retourne true si le déplacement a été fait, false s'il n'y avait pas
de ligne précédente et
la boolean absolute(int index) qui permet de se placer à la ligne numérotée,
elle retourne true si le déplacement a été fait, false sinon.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 46
INSTRUTEUR : OTILAIRE MÉDARD
Exemple: Accès à une base Mysql
contenant 2 tables:
Client et Compte.

Voir les TP sur deltabank.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 47
INSTRUTEUR : OTILAIRE MÉDARD
ChpV. Gestion des exceptions
1-Introduction.
La gestion d’exception est un mécanisme qui permet de
reporter des erreurs vers les méthodes appelantes, avec
la possibilité d'intercepter/traiter ou de propager.

En Java comme en C++, le mécanisme de remonté


d’erreur est gérée par le langage.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 48
INSTRUTEUR : OTILAIRE MÉDARD
2-Types d'exceptions
Il existe en Java tout une hiérarchie de types d'exceptions:
➢Throwable est la classe « mère » de toutes les
exceptions;
➢Les Error correspondent à des exceptions qu'il est rare
d'attraper;
➢Les RuntimeException que l'on peut rattraper mais que
l'on n'est pas obligé.
Les Exception que l'on est obligé d'attraper

COURS DE PROGRAMMATION JAVA I.


12/10/2018 49
INSTRUTEUR : OTILAIRE MÉDARD
Types d'exceptions(suite)
(try/catch) ou de dire que la méthode appelante devra
s'en occuper (throws).

3-Exceptions levées par la VM


Les exceptions levées par la VM correspondent :
➢Erreur de compilation ou de lancement
NoClassDefFoundError, ClassFormatError
➢problème d'entrée/sortie :
IOException, AWTException

COURS DE PROGRAMMATION JAVA I.


12/10/2018 50
INSTRUTEUR : OTILAIRE MÉDARD
Exceptions levées par la VM
(Suite)
➢problème de ressource :
OutOfMemoryError, StackOverflowError
➢des erreurs de programmation (runtime)
NullPointerException,
ArrayIndexOutOfBoundsException,
ArithmethicException

COURS DE PROGRAMMATION JAVA I.


12/10/2018 51
INSTRUTEUR : OTILAIRE MÉDARD
4- Attraper une exception
L’instruction try/catch permet d'attraper les exceptions.
Exemple:
public class CatchExceptionExample {
public static void main(String[] args) {
int value;
try {
value=[Link](args[0]);
} catch(NumberFormatException e) {
value=0;
}
[Link]("value "+value);
}
}
COURS DE PROGRAMMATION JAVA I.
12/10/2018 52
INSTRUTEUR : OTILAIRE MÉDARD
Attraper une exception(suite)
Éviter les catch(Throwable). La directive throws Indique qu'une exception
peut être levée dans le code mais que celui-ci ne la gère pas (pas de
try/catch).
Exemple:
public static void f(String author) throws OhNoException {
if ("dan brown".equals(author))
throw new OhNoException("oh no");
}

COURS DE PROGRAMMATION JAVA I.


12/10/2018 53
INSTRUTEUR : OTILAIRE MÉDARD
Attraper une exception(suite)
L’instruction throws n'est obligatoire que pour les
Exceptions mais pas pour les erreurs (Error) ni pour ou
les runtimes (RuntimeException).

Une exception peut être capturée ou propagée selon le


contexte.

COURS DE PROGRAMMATION JAVA I.


12/10/2018 54
INSTRUTEUR : OTILAIRE MÉDARD
Attraper une exception(suite)
Exemple:
public static Config initConfig(String userName) throws IOException {
Config conf = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(userName+"_config");
conf = new Config(userName);
} catch (FileNotFoundException e) {
// no config file for this user...
[Link]([Link]);
fis = new FileInputStream("default_config");
conf = new Config(userName);
}
readConfFromInputStream(conf,fis);
[Link]();
return conf;
}

COURS DE PROGRAMMATION JAVA I.


12/10/2018 55
INSTRUTEUR : OTILAIRE MÉDARD
Attraper une exception(suite)
Le bloc finally sert à exécuter un code quoi qu'il arrive (fermer un fichier,
une connexion, libérer une ressources)

COURS DE PROGRAMMATION JAVA I.


12/10/2018 56
INSTRUTEUR : OTILAIRE MÉDARD
Attraper une exception(suite)
Exemple
public class FinallyExceptionExample {
public static void main(String[] args) {
ReentrantLock lock = new ReentrantLock();
[Link]();
try {
doSomething();
} finally {
[Link]()
}
}
}

COURS DE PROGRAMMATION JAVA I.


12/10/2018 57
INSTRUTEUR : OTILAIRE MÉDARD
5-Exceptions et programmeur
Le programmeur doit utiliser des exceptions pour assurer :
➢ Que son code est bien utilisé (précondition)
➢ Que l'état de l'objet est bon (précondition)
➢ Que le code fait ce qu'il doit faire (post-
condition/invariant)

Habituellement, les Pré-conditions


sont utilisées pour vérifier les paramètres

COURS DE PROGRAMMATION JAVA I.


12/10/2018 58
INSTRUTEUR : OTILAIRE MÉDARD
Exceptions et programmeur(suite)
NullPointerException et IllegalArgumentException, elles
permettent de vérifier aussi l'état de l'objet
IllegalStateException

Post-conditions sont utilisées pour vérifier que les opérations ont


bien été effectués: assert, AssertionError

COURS DE PROGRAMMATION JAVA I.


12/10/2018 59
INSTRUTEUR : OTILAIRE MÉDARD
Exceptions et programmeur(suite)
Invariants sont utilisées pour vérifier que les invariants de l'algorithme sont
préservés: assert et AssertionError

COURS DE PROGRAMMATION JAVA I.


12/10/2018 60
INSTRUTEUR : OTILAIRE MÉDARD
Exemple

COURS DE PROGRAMMATION JAVA I.


12/10/2018 61
INSTRUTEUR : OTILAIRE MÉDARD

Vous aimerez peut-être aussi