Java
Java
Java
Java
Creative Commons
Contrat Paternité
Partage des Conditions Initiales à l'Identique
2.0 France
keulkeul.blogspot.com
http://creativecommons.org/licenses/by-sa/2.0/fr
et Souris
h Dans les années 90, vers une maturité des concepts objets
h Standardisation de C++
h Objectifs de la POO
h Facilité la réutilisation de code, encapsulation et abstraction
h Facilité de l’évolution du code
h Améliorer la conception et la maintenance des grands systèmes
h Programmation par « composants ». Conception d’un logiciel à la
manière de la fabrication d’une voiture
h Programmation Structurée
h Unité logique : le module
keulkeul.blogspot.com
et / ou
demarre
keulkeul.blogspot.com
ma voiture le moteur
h Les objets qui ont les mêmes états et les mêmes comporte-
ments sont regroupés : c’est une classe
h Les classes servent de « moules » pour la création des objets
Un objet est une instance d’une classe
h Un programme OO est constitué de classes qui permettent
de créer des objets qui s’envoient des messages
Voiture
Nom de la classe
- puissance : entier
- vitesse : réel
+ deQuellePuissance() : entier
Méthodes
- Sélecteur + demarre()
Voiture Moteur
keulkeul.blogspot.com
h Structuration du cours
h Présentation des concepts
h Illustration avec de nombreux exemples
h Des bulles d’aide tout au long du cours :
h Origine
h Créé par Sun Microsystems
h Cible : les systèmes embarqués (véhicules, électroménager, etc)
utilisant des langages dédiés incompatibles entre eux
h Dates clés
h 1991 : Introduction du langage « Oak » par James Gosling
h 1993 : Montée en puissance du Web grâce à Mosaic (l’idée d’adapter
Java au Web fait son chemin)
h 1995 : Réalisation du logiciel HotJava en Java permettant d’exécuter
des applets
keulkeul.blogspot.com
h Références
h WikiPedia : fr.wikipedia.org/wiki/java_%28technologie%29
h White papers : java.sun.com/docs/white/index.html
h Simple h Sûr
h Réparti h Performant
keulkeul.blogspot.com
h Interprété h Multitâches
h Source Java
h Fichier utilisé lors de la phase de programmation
h Le seul fichier réellement intelligible par le programmeur!
h Byte-Code Java
h Code objet destiné à être exécuté sur toute « Machine Virtuelle »
Java
h Provient de la compilation du code source
h WebPhones
h Téléphones portables
h Cartes à puces
h ...
keulkeul.blogspot.com
Packages
Description
Attributs
Méthodes
Classes
keulkeul.blogspot.com
h Java en action
h Auteur : Ian F. Darwin
h Éditeur : O’Reilly
h Edition : 2002 - 836 pages - ISBN : 2841772039
Bases du langage
h String[] argv
keulkeul.blogspot.com
Classes et Objets)
h L’autoboxing introduit depuis la version 5.0 convertit de
manière transparente les types primitifs
en références Cours Java - M. Baron - Page 26
Initialisation et constantes
h Initialisation
h Une variable peut recevoir une valeur au moment de sa déclaration :
Penser à l’initialisation
int n = 15;
boolean b = true;
au risque d’une erreur de
h Cette instruction joue le même rôle : compilation
int n;
int n; System.out.println(" n = " + n);
n = 15;
boolean b;
b = true;
h Constantes
h Ce sont des variables dont la valeur ne peut affectée qu'une fois
keulkeul.blogspot.com
h Choix
Il n’y a pas de mot-
h Si alors sinon : « if condition {…} else {…} » clé « then » dans la
structure Choix
h Itérations
h Boucle : « for (initialisation ; condition ; modification) { … } »
h Sélection bornée
keulkeul.blogspot.com
}
System.out.println("Adios...");
}
}
Se demander si
break est nécessaire
h Opérateurs arithmétiques
h Unaires : « +a, -b »
h Binaires : « a+b, a-b, a*b, a%b »
h Incrémentation et décrémentation : « a++, b-- »
h Affectation élargie : « +=, -=, *=, /= »
if (t) {...}
h Ou : « a || b », « a | b »
// Etablie un index de 0 à 10
int index = compteur % 10;
// Construction de l’affichage
System.out.println("Index:" + index +
keulkeul.blogspot.com
// Incrémentation de la boucle
compteur+= 1;
}
}
}
h a et b sont distincts
a b a b
keulkeul.blogspot.com
1 2 a=b 2 2
h Des références sur des objets (à voir dans la partie Classes et Objets)
1 Déclaration
h La déclaration précise simplement le type des éléments du tableau
int monTableau[];
2 Dimensionnement
h Le nombre d’éléments du tableau sera déterminé quand l’objet
tableau sera effectivement créé en utilisant le mot clé new
h La taille déterminée à la création du tableau est fixe, elle ne pourra
plus être modifiée par la suite
h Longueur d’un tableau : « monTableau.length »
monTableau 0 0 0
Cours Java - M. Baron - Page 35
Les tableaux en Java : Initialisation
3 Initialisation
h comme en C/C++ les indices commencent à zéro
h l’accès à un élément d’un tableau s’effectue suivant cette forme
entre {…}
int[] monTab = {1, 2, 3}
h est équivalent à
monTab = new int[3];
Cours Java - M. Baron - Page 36
monTab[0] = 1; monTab[1] = 2; monTab[2] = 3;
Les tableaux en Java : Synthèse
1 Déclaration
int[] monTableau;
2 Dimensionnement Ou 12 et 3
monTableau = new int[3]; int[] monTab = {1, 2,
3};
3 Initialisation
monTableau[0] = 1;
monTableau[1] = 2;
monTableau[2] = 3;
keulkeul.blogspot.com
/* Le début du commentaire
** Je peux continuer à écrire …
Jusqu’à ce que le compilateur trouve cela */
Classes et Objets
Voiture
Nom de la classe
- puissance : entier
Attributs - estDemarree : booléen
- vitesse : réel
+ deQuellePuissance(): entier
Méthodes
- Sélecteur + demarre()
keulkeul.blogspot.com
- Modificateurs
+ accélère (réel)
Visibilité
Cours Java - M. Baron - Page 43
Codage de la classe « Voiture »
Nom de la classe
public class Voiture {
if (estDemarree) {
Modificateurs }
vitesse = vitesse + v
}
}
if (estDemarree) {
double avecTolerance;
avecTolerance = v + 25;
vitesse = vitesse + avecTolerance
}
}
}
Cours Java - M. Baron - Page 46
Conventions en Java : de la rigueur et de la classe …
h Conventions de noms
h CeciEstUneClasse
h celaEstUneMethode(…)
h jeSuisUneVariable
h JE_SUIS_UNE_CONSTANTE
h Admet une valeur propre à l’objet pour chaque attribut déclaré dans
la classe
Représentation Voiture
explicite de la classe
Relation d’instanciation
« instance of »
maClio
- puissance = 4 Valeurs des
keulkeul.blogspot.com
attributs qui
- estDemarrée = true caractérisent
l’état de l’objet
- vitesse = 179.8 maClio
Voiture
« instance of »
h Affecter un objet
h « a = b » signifie a devient identique à b
h Les deux objets a et b sont identiques et toute modification de a
entraîne celle de b
a=b
∑ ∏ ∏
Cours Java - M. Baron - Page 51
Affectation et comparaison
saClio maClio
keulkeul.blogspot.com
- puissance = 4 - puissance = 4
∑ ∏ ∏ ∏
h Partie « statique »
h Ne varie pas d’une instance de classe à une autre
h Partie « dynamique »
keulkeul.blogspot.com
h Création
h Usage d’un Constructeur
h L’objet est créé en mémoire et les attributs de l’objet sont initialisés
h Utilisation
h Usage des Méthodes et des Attributs (non recommandé)
h Les attributs de l’objet peuvent être modifiés
h Les attributs (ou leurs dérivés) peuvent être consultés
null
h Déclaration
h Définit le nom et le type de l ’objet
h Un objet seulement déclaré vaut « null » monObjet
(mot réservé du langage)
h Actuellement
h On a utilisé le constructeur par défaut sans paramètre
h Le constructeur de Voiture
h Initialise vitesse à zéro
puissance = p;
estDemaree = false;
vitesse = 0;
}
...
}
h Création de la Voiture
h Déclaration de la variable maVoiture
h Création de l’objet avec la valeur 7 en paramètre du constructeur
h Utilité
h Lorsque l’on doit créer un objet sans pouvoir décider des valeurs de
ses attributs au moment de la création
h Il remplace le constructeur par défaut qui est devenu inutilisable dès
qu’un constructeur (avec paramètres) a été défini dans la classe
public class Voiture {
h Intérêts
h Possibilité d’initialiser un objet de plusieurs manières différentes
h On parle alors de surchage (overloaded)
h Le compilateur distingue les constructeurs en fonction
h de la position des arguments
h du nombre
public class Voiture {
...
public Voiture() {
h du type puissance = 4; ...
}
public Voiture(int p) {
keulkeul.blogspot.com
puissance = p; ...
}
Chaque constructeur
possède le même nom public Voiture(int p, boolean estDemaree) {
...
(le nom de la classe) }
}
Voiture
Ne pas oublier les - …
parenthèses pour les + deQuellePuissance() : entier
appels aux méthodes
+ demarre()
+ accélère (réel)
public class TestMaVoiture { + …
public static void main (String[] argv) {
if (maVoiture.deQuellePuissance() == 4) {
keulkeul.blogspot.com
// La voiture accélère
maVoiture.accélère(123.5);
Appel d’un sélecteur
}
}
Cours Java - M. Baron - Page 66
Envoi de messages : passage de paramètres
h Les objets
h Leur modification dans la méthode entraîne celle de l’original!!!
h Leur référence est recopiée et non pas les attributs
Cours Java - M. Baron - Page 67
Envoi de messages : passage de paramètres
}
- …
+ accélère (réel)
Appel d’un sélecteur avec
+ compare (Voiture) : entier
passage d’une référence
+ …
Cours Java - M. Baron - Page 68
L’objet « courant »
...
private boolean estDemarree;
private double vitesse;
Agrégation
4..5 1 0..1
public Voiture(int p) {
leMoteur = new Moteur(p);
1
...
Moteur }
...
keulkeul.blogspot.com
A discuter : si le moteur }
public Moteur(int p) {
puissance = p;
1 ...
}
Moteur ...
keulkeul.blogspot.com
public Voiture(int p) {
leMoteur = new Moteur(p,this);
...
}
1
...
keulkeul.blogspot.com
}
Moteur
Transmission de la
Création de
référence de l’objet
l’objet Moteur
courant
Cours Java - M. Baron - Page 74
Codage de l'association : composition
}
1
...
Moteur }
public Voiture(Galerie g) {
laGalerie = g;
...
}
0..1 ...
keulkeul.blogspot.com
Galerie }
System.gc();
// Fin du programme
System.exit(0);
System.out.println("Message non visible");
}
}
Cours Java - M. Baron - Page 78
Gestion des objets
System.out.println(maVoiture) // Voiture@119c082
ou
if (maVoiture.getClass() == Voiture.class) {...} // C ’est vrai
// également
h private
h public A revoir dans la
partie suivante
h protected
Cours Java - M. Baron - Page 83
Encapsulation : visibilité des membres d’une classe
+ public - private
h Exemple : encapsulation
public class Voiture {
// Démarrage de maVoiture
maVoiture.demarre();
maVoiture.makeCombustion(); // Erreur
}
}
h Initialisation
String maChaine = "Bonjour!"; // Cela ressemble à un type simple
h Longueur
maChaine.length(); // Avec les parenthèses car c'est une méthode
h Comparaison
maChaine.equals("Bonjour!"); // Renvoi vrai
keulkeul.blogspot.com
char
h Un exemple
keulkeul.blogspot.com
StringTokenizer st =
new StringTokenizer("Bonjour,
le monde|de|Java",", |");
while(st.hasMoreElements())
System.out.println("Element : " + st.nextElement());
h Usage
h Ce sont des constantes liées à une classe
h Elles sont écrites en MAJUSCULES Une constante de classe
est généralement
toujours visible
System.out.println("Poids maxi:" +
Variables et Voiture.PTAC_MAX);
Constantes de classe System.out.println(Voiture.nbVoitureCreees);
par le nom de la
...
}
classe Voiture }
h Usage
h Ce sont des méthodes qui ne s'intéressent pas à un objet particulier
h Utiles pour des calculs intermédiaires internes à une classe
h Utiles également pour retourner la valeur d'une variable de classe
en visibilité private
de classe.
...
1 Déclaration
Voiture[]
monTableau;
2 Dimensionnement Ou 12 et 3
monTableau = new Voiture[3]; Voiture[] monTab = {
new Voiture(5),
3 Initialisation new Voiture(7),
new Voiture(8)
monTableau[0] = new Voiture(5); };
monTableau[1] = new Voiture(7);
monTableau[2] = new Voiture(8);
keulkeul.blogspot.com
maVoiture.ajouterPassager(passagers);
h Ensemble de paramètres
...
}
Héritage
h Héritage
h Technique offerte par les langages de programmation pour
construire une classe à partir d’une (ou plusieurs) autre classe en
partageant ses attributs et opérations
h Intérêts
h Spécialisation, enrichissement : une nouvelle classe réutilise les
attributs et les opérations d ’une classe en y ajoutant et/ou des
opérations particulières à la nouvelle classe
h Redéfinition : une nouvelle classe redéfinit les attributs et
keulkeul.blogspot.com
Relation d’héritage
keulkeul.blogspot.com
VehiculePrioritaire VoitureElectrique
+ allumeGyrophare() + demarre()
VehiculePrioritaire VoitureElectrique
- gyrophare : booléen - disjoncteur : booléen
+ allumeGyrophare() + demarre()
- puissance : entier
Hérité de Voiture
- puissance : entier
Hérité de Voiture
- estDemarree : boolean - estDemarree : boolean
keulkeul.blogspot.com
h Définitions
h Attention
Voiture
Raffinement
Abstraction
Super-classe
VehiculePrioritaire
Sous-classe
VehiculePrioritaire est
h L’héritage permet
keulkeul.blogspot.com
une Voiture
h de généraliser dans le sens abstraction
h de spécialiser dans le sens raffinement
h Exemple : espèces
Mammifère
Cétacé Humain
h Héritage simple
h Une classe ne peut hériter que d’une seule autre classe
- gyrophare : booléen
+ allumeGyrophare() N’essayez pas d’hériter de plusieurs
classes (extends Voiture, Sante, …)
ça ne fonctionne pas
extends VehiculePrioritaire {
Ambulance
private String malade;
- malade : String ...
public void chercher(String ma) {
+ chercher(String)
...
}
}
h L’héritage
h Une sous-classe peut ajouter des nouveaux attributs et/ou méthodes
à ceux qu’elle hérite (surcharge en fait partie)
h Une sous-classe peut redéfinir (redéfinition) les méthodes à ceux dont
elle hérite et fournir des implémentations spécifiques pour celles-ci
- disjoncteur : ...
}
booléen
+ demarre()
Redéfinition de la
méthode
Cours Java - M. Baron - Page 112
Surcharge et redéfinition
Redéfinition Surcharge
} }
h Intérêt
h La redéfinition d’une méthode cache le code de la méthode héritée
super.nomSuperClasseMethodeAppelee(...);
keulkeul.blogspot.com
constructeurs de la super-classe
Implantation du constructeur
public Voiture(int p) {
this(p, new Galerie());
} de VoiturePrioritaire à partir
public Voiture(int p, Galerie g) {
de Voiture
puissance = p;
moteur = new Moteur(puissance);
galerie = g; public class VoiturePrioritaire
... extends Voiture {
}
keulkeul.blogspot.com
this.pInfo = pInfo;
}
}
public class Test {
public static void main (String[] argv) {
new B("Message du main");
}
}
Cours Java - M. Baron - Page 119
Usage des constructeurs : suite
puissance = p;
moteur = new Moteur(puissance);
galerie = g;
... Il n'est pas nécessaire
} d'écrire explicitement
... extends Object
}
Cours Java - M. Baron - Page 121
La classe Object : le mystère résolu
Avant redéfinition
public class Voiture { public class Test {
... public static void main (String[] argv) {
public Voiture(int p) { Voiture maVoiture = new Voiture(5);
this(p, new Galerie()); System.out.println(maVoiture);
} }
} public Sring toString()} {
return (this.getClass().getName() +
"@" + this.hashCode());
}
h Réalisation
h Utilisation du mot-clé protected devant la définition des méthodes
et/ou attributs
h Les membres sont accessibles dans la classe où ils sont définis, dans
toutes ses sous-classes Voiture
# demarre()
keulkeul.blogspot.com
h Définition
h Utilisation du mot-clé final
h Méthode : interdire une éventuelle redéfinition d’une méthode
Héritage et Polymorphisme
h Définition
h Un langage orienté objet est dit polymorphique, s’il offre la possibilité
de pouvoir percevoir un objet en tant qu’instance de classes variées,
selon les besoins
h Une classe B qui hérite de la classe A peut être vue comme un
sous-type du type défini par la classe A
Voiture
+ demarre() h Rappel
h voitureLarochelle est une instance de la
classe VoitureElectrique
keulkeul.blogspot.com
voitureLarochelle
Cours Java - M. Baron - Page 128
Polymorphisme et Java : surclassement
h A la compilation
h Lorsqu’un objet est « surclassé », il est vu par le compilateur comme
un objet du type de la référence utilisée pour le désigner
h Ses fonctionnalités sont alors restreintes à celles proposées par la
classe du type de la référence
public class Test {
public static void main (String[] argv) {
System.out.println(voitureLarochelle.getVoltage()); // Erreur
}
}
h Exemple : surclassement
public class Test {
public static void main (String[] argv) {
// Déclaration et création d’un objet Voiture
Voiture voitureLarochelle = new VoitureElectrique(...);
Voiture
keulkeul.blogspot.com
+ demarre()
Remarque : Quel code va être
effectivement exécuté lorsque le message
demarre() est envoyé à voitureLarochelle ?? voitureLarochelle
voitureLarochelle.demarre()
keulkeul.blogspot.com
VoitureElectrique
+ demarre() {
Constat : C’est la méthode demarre() super.demarre();
de VoitureElectrique qui est appelée. disjoncteur = true;
Puis elle appelle (par super…) la
}
méthode de la super-classe
Cours Java - M. Baron - Page 131
Polymorphisme et Java : lien dynamique
h A l’exécution
compilation
keulkeul.blogspot.com
h Surclassement (compilation)
estDemarre = true;
}
VoitureElectrique }
disjoncteur = true;
h Exemple : la géométrie
h Stocker des objets Forme de n’importe quel type (Rectangle ou
Cercle) puis les afficher
Stockage
Forme
- liste : Forme[ ]
- positionx : int
- positiony : int + ajouter(Forme)
+ afficherForme()
+ afficher()
...
keulkeul.blogspot.com
Cercle
Rectangle
- rayon : int
- largeur : int
- hauteur : int + afficher()
+ afficher() …
…
Cours Java - M. Baron - Page 137
Polymorphisme : un exemple typique
h Intérêt
h Force un objet à « libérer » les fonctionnalités cachées
par le surclassement
h Conversion de type explicite (cast). Déjà vu pour les types primitifs
ClasseA
ClasseA monObj = ...
ClasseB b = (ClasseB) monObj
h Exemple : downcasting
public class Test {
public static void main (String[] argv) {
Forme maForme = new Rectangle();
// Je ne peux pas utiliser les méthodes de la classe Rectangle
Réalisation de la
keulkeul.blogspot.com
conversion de l’objet de
Attention si la compatibilité est
fausse et si le cast est effectué type Forme en objet de
une exception de type type Rectangle
ClassCastException est levée
Cours Java - M. Baron - Page 140
La méthode « equals() »
Rappel de la classe
Voiture
Voiture
- puissance : int
- estDemarree : boolean
- vitesse : reel
… Cours Java - M. Baron - Page 141
La méthode « equals() »
h La classe VoitureDecapotable
h Hérite de Voiture
Voiture
C3Pluriel
DeuxChevaux - arceauxRetirés : booléen
- capoteAttachée : booléen + replieLeToit()
+ replieLeToit()
Cours Java - M. Baron - Page 145
Classes abstraites : exemple VoitureDecapotable
Attention : La classe
VoitureDecapotable ne
peut être instanciée
puisqu’elle est
abstraite
Cours Java - M. Baron - Page 147
Classes abstraites : exemple Forme
h Si une classe hérite d’une autre classe elle peut également implémen-
ter une ou plusieurs interfaces
public class NomClasse extends SuperClasse implements Inter1, ... {
...
} Cours Java - M. Baron - Page 150
Notion d’interface et Java
classes abstraites)
}
keulkeul.blogspot.com
h Utilisation
NomInte2 << Interface >>
+ …
mentaires
Cours Java - M. Baron - Page 155
Classes abstraites versus interfaces
h Les classes
h Elles sont complètement implémentées
h Une autre classe peut en hériter
h Les classes abstraites
h Sont partiellement implémentées
h Une autre classe non abstraite peut en hériter mais doit donner une
implémentation aux méthodes abstraites
h Une autre classe abstraite peut en hériter sans forcément donner une
implémentation à toutes les méthodes abstraites
h Ne peuvent pas être instanciées mais peuvent fournir un constructeur
keulkeul.blogspot.com
h Les interfaces
h Elles ne sont pas implémentées
h Toute classe qui implémente une ou plusieurs interfaces doit
implémenter toutes leurs méthodes (abstraites)Cours Java - M. Baron - Page
156
L’interface « Cloneable »
h Classes anonymes
h Sont des instanciations de classes et Demarrable uneInstance =
new Demarrable(){
des implémentations d’une classe public void demarre() {
// Code ici
abstraite ou d’une interface }
keulkeul.blogspot.com
};
h La ou les méthodes abstraites doivent
être implémentées au moment de l’instanciation
h classe interne
monMoteur = new Moteur(...);
Init monInit = new Init() {
public void initialisation() {
h Génération de byte-code : 3 fichiers }
...
};
h classe Voiture.class }
class Moteur {
...
h anonyme Voiture$1.class public Moteur(...) {Classe interne
...
}
h interne Voiture$Moteur.class }
}
keulkeul.blogspot.com
Les indispensables
0..*
0..* Attribut
Interface
h Exemples de packages
h java.lang : rassemble les classes de base Java (Object, String, …)
h java.util : rassemble les classes utilitaires (Collections, Date, …)
h java.io : lecture et écriture Cours Java - M. Baron - Page 161
Les packages : ok, mais pourquoi faire?
Nom complet
de la classe
java.util.Date
keulkeul.blogspot.com
ou
keulkeul.blogspot.com
import mesclasses.*;
import java.lang.*; // Ne sert à rien puisque par défaut Ecriture très
import java.io.*; lourde préférer
la solution avec
h Nom du paquetage avec le nom de la classe le mot clé import
java.io.ObjectOuput toto = new java.io.ObjectOuput(...)
Cours Java - M. Baron - Page 163
Les packages : leur « existence » physique
Package
Exemple : mesclassses.Voiture
Voiture.java
Classe
mesclasses
Le nom des
h Un package peut contenir packages est
h Des classes ou des interfaces toujours écrit en
minuscules
h Un autre package (sous-package)
keulkeul.blogspot.com
Package (mesclasses)
Exemple : mesclassses.ex1.Voiture Sous-package (ex1)
Classe (Voiture.java)
ex1
java
h Bibliothèque pure Java
Voiture Geom
Package voiture :
voiture.modele.VoitureElectrique
voiture
voiture.modele.Voiture
voiture.test.Test
Vos packages. A la
racine de Voiture vous
pouvez y placer des
keulkeul.blogspot.com
test
modele
informations d’aides à
l’utilisation de votre
package.
(Fichier de lancement
par exemple)
Test.java
VoitureElectrique.java Voiture.java
Cours Java - M. Baron - Page 166
Les packages : création et conseils
...
}
}
Voiture
La séparation entre
package, sous-packages
et classes se fait à l’aide
java voiture.test.Test de point « . » et non de
anti-slash « \ »
Packages différents
du package java.util et
public class Essai {
...
ZipFile du package
keulkeul.blogspot.com
public Essai() {
Date myDate = new Date(...);
ZipFile myZip = new ZipFile(...); java.util.zip
...
}
...
}
/**
* Description de la méthode Ajouter du sens et des
* Autres caractéristiques
précisions à vos codes.
*/
public Voiture(...) { Expliquer n’est pas
... traduire!!
}
}
Cours Java - M. Baron - Page 170
Javadoc et les commentaires
h Javadoc et intérêts
h Javadoc est aux classes ce que les pages de manuel (man) sont à
Unix ou ce que Windows Help est aux applications MS Windows
h Rédaction de la documentation technique des classes au fur et à
mesure du développement de ces mêmes classes puis génération
finale du html
h Utilisation
h L’entité documentée est précédée par son commentaire
h Suivre la description des méthodes, classes, …
h Utilisation de tags définit par javadoc permettant de typer certaines
informations (utilisation possible de balise html)
keulkeul.blogspot.com
...
h Jar et intérêts
h L’archiveur jar est l’outil standard pour construire les archives qui ont
le même objectif que les bibliothèques de programmes utilisées par
certains langages de programmation (lib par exemple)
java –verbose HelloWorld
MANIFEST.MF
h Création du jar avec un fichier manifeste :
jar cvfm hello.jar MANIFESTE.MF .
keulkeul.blogspot.com
h Vocabulaire
h Lancer ou déclencher (throw) une exception consiste à signaler les
erreurs
h Capturer ou attraper (catch) une exception permet de traiter les
erreurs Cours Java - M. Baron - Page 176
Exception
La classe
... // Autre méthodes et constructeurs
} catch (ErrConst e) {
System.out.println("Erreur Construction");
System.exit(-1);
}
}
}
h Explication
h Lorsqu’une situation exceptionnelle est rencontrée, une exception est
lancée Méthode n
Méthode
Méthode 22
bloc 2.1.2
keulkeul.blogspot.com
…
…
appel de Méthode
Méthode nn
bloc 2.2
méthode
} catch (ErrConst e) {
System.out.println("Erreur Construction");
System.exit(-1);
}
a.affiche();
a.affiche();
} catch (ErrConst e) {
System.out.println("Erreur Construction"); L’erreur exceptionnelle
System.exit(-1); est traitée par le bloc
}
...
catch
}
}
keulkeul.blogspot.com
Error Exception
keulkeul.blogspot.com
NullPointerException ErrConst
Pour définir de nouveaux
types d’exception, on sous-
classera la classe
Exception
Cours Java - M. Baron - Page 182
Exception : modélisation
e.printStackTrace();
System.exit(-1);
} Affichage de la liste des
}
...
méthodes
keulkeul.blogspot.com
...
public class Test {
}
public static void main(String[] argv) {
try {
... // Bloc dans lequel on souhaite détecter
les exceptions ErrConst et ErrDepl Attrape la nouvelle
} catch (ErrConst e) { exception de type
keulkeul.blogspot.com
ErrDepl
System.out.println("Erreur Construction");
System.exit(-1);
} catch (ErrDepl e) {
System.out.println("Erreur Déplacement");
System.exit(-1);
}
}
}
public Point(int x, int y) throws ErrConst { public Point(int x, int y) throws ErrConst {
if ((x < 0) || (y < 0)) throw new ErrConst(); checkXYValue(x,y);
this.x = x ; this.y = y; this.x = x ; this.y = y;
} }
private void checkXYValue(in x, int y) throws
ErrConst {
if ((x < 0) || (y < 0))
throw new ErrConst();
}
try {
...
qui ont fait échouer la
a = new Point(-2, 4); construction de Point
} catch (ErrConst e) {
System.out.println("Erreur Construction point");
System.out.println("Coordonnées souhaitées : "
+ e.getAbs() + " " + e.getOrd());
System.exit(-1);
}...
Cours Java - M. Baron - Page 189
Exception : finally
h Elle est exécutée quel que soit le résultat du bloc try (c’est-
à-dire qu’il ait déclenché ou non une exception)
} catch (ErrDepl e) {
clé finally, il est System.out.println("Erreur Déplacement");
} finally {
possible de System.out.println("Fin du programme");
System.exit(-1);
factoriser }
}
}
// Fermeture du fichier
if (closeTheFileFailed()) {
Le code devient de
codeErreur = - 4; plus en plus
conséquent
}
} else {
codeErreur = - 5;
}
}
Cours Java - M. Baron - Page 192
Exception : pour ou contre
...
}
}
mémoire, etc.)
myFile.close();
}
keulkeul.blogspot.com
inputLine = is.readLine();
Chaîne saisie
in.close();
out.close();
}
Transfert de
keulkeul.blogspot.com
données jusqu’à ce
que in ne fournisse Fermeture des flux
et par conséquent
plus rien
des fichiers
respectifs Cours Java - M. Baron - Page 199
Les flux binaires
in.close();
out.close();
}
}
Création du fichier
File portant le nom de name
- name : String
+ File(String nf) Vérifie si le fichier existe
+ createNewFile() physiquement
+ delete() : booléen
keulkeul.blogspot.com
TreeSet HashSet
HashSet ArrayList
On récupère
while (iter.hasNext()) {
On vérifie s’il y a
possibilité de ??? o = iter.next(); l’objet courant
récupérer un }
...
puis on passe au
objet suivant
Cours Java - M. Baron - Page 207
Les collections : Iterator
la méthode
add de la Ne pas modifier la collection
classe (add de LinkedList) pendant
LinkedList qu’on utilise l’itérateur (next())
myArrayList.add("Coucou");
myArrayList.add(34);
d’un objet)
keulkeul.blogspot.com
l’ensemble
Cours Java - M. Baron - Page 212
Les collections : HashSet
Point(int x, int y) {
Redéfinition des
this.x = x; this.y = y; méthodes hashCode()
et equals(Object)
}
public int hashCode() {
return x+y;
}
public boolean equals(Object pp) {
Point p = (Point)pp;
return ((this.x == p.x) &
(this.y == p.y));
}
public void affiche() {
System.out.print("[" + x + " "
+ y + "] ");
}
}
keulkeul.blogspot.com
Bilan
h Perspectives futures
h Le langage Java est en constante évolution. Chaque nouvelle
version apporte son lot de nouvelles fonctionnalités
keulkeul.blogspot.com