Upload
boris-delloh-ouahou
View
237
Download
7
Embed Size (px)
Citation preview
7/25/2019 1 Support poo java premire partie 1
1/128
7/25/2019 1 Support poo java premire partie 1
2/128
IntroductionQualit logicielle
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
3/128
Rappels :Qualit dun Logiciel La qualit dun logiciel se mesure par rapport
plusieurs critres : Rpondre aux spcifications fonctionnelles :
Une application est cre pour rpondre , tout dabord, aux besoinsfonctionnels des entreprises.
Les performances: La rapidit dexcution et Le temps de rponse
o re e sur une arc ec ure ro us e. Eviter le problme de monte en charge
La maintenance: Une application doit voluer dans le temps. Doit tre ferme la modification et ouverte lextension Une application qui nvolue pas meurt. Une application mal conue est difficile maintenir, par suite
elle finit un jour la poubelle.
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
4/128
Qualit dun Logiciel La qualit dun logiciel se mesure par rapport plusieurs
critres : (Suite) Scurit
Garantir lintgrit et la scurit des donnes
Portabilit Doit tre capable de sexcuter dans diffrentes plateformes.
Capacit de communiquer avec dautres applications distantes. Disponibilit et tolrance aux pannes
apac e ourn r e serv ce ren s ype e c en s : Client lourd : Interfaces graphiques SWING Interface Web : protocole Http Tlphone : SMS .
Design des ses interfaces graphiques Charte graphique et charte de navigation Accs via diffrentes interfaces (Web, Tlphone, PDA, ,)
Cot du logiciel
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
5/128
Serveur dapplication : TOMCAT
Couche WEB CoucheMtier
CoucheDAO
Architecture J2EE
DonnesMtier
ContrleurServlet
Vue
ModleJavaBeans
1
2
3
4
5
6
Client Lger
HTML
CSS
Java Script
XML
Ajax
DAOHTTP
SGBDJSPFlash
erna e
JDBC
Client Lourd
AWT
SWING
SWT
RMI/EJB/CORBA/SOAP
STRUTSJSFSpring MVC
Intgration avec Spring ou EJB
Coucheservice
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
6/128
Programmation Oriente Objet
Java
6
M.Youssfi
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
7/128
Programme Java? Programmation oriente Objet Java
Objet et Classe Hritage et accessibilit Polymorphisme Collections
Exceptions et Entres Sorties Interfaces graphique AWT et SWING Accs aux bases de donnes Threads et Sockets
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
8/128
Quest ce que java?
Langage de programmation orient objet (Classe, Objet,Hritage, Encapsulation et Polymorphisme)
Avec java on peut crer des applicationmultiplateformes. Les applications java sont portables.Cest--dire, on peut crer une application java dans une
8
p a e orme onn e e on peu ex cu er sur n mpor equelle autre plateforme. Le principe de java est : Write Once Run Every Where Open source: On peut rcuprer le code source de java.
Ce qui permet aux dveloppeurs, en cas de besoin, dedvelopper ou modifier des fonctionnalits de java.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
9/128
Quest ce que java?
Java est utilis pour crer : Des applications Desktop Des applets java (applications java destines sexcuter dans une page web) Des applications pour les smart phones Des applications embarques dans des cartes puces Des application JEE (Java Entreprise Edition)
Pour crer une application java, il faut installer un kit de dveloppementjava
9
JSDK : Java Standard Developpement Kit, pour dvelopper les applicationDeskTop JME : Java Mobile Edition, pour dvelopper les applications pour les
tlphones potables JEE : Java Entreprise Edition, pour dvelopper les applications qui vont
sexcuter dans un serveur dapplication JEE (Web Sphere Web Logic,JBoss). JCA : Java Card Editon, pour dvelopper les applications qui vont
sxcuter dans des cartes puces.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
10/128
Diffrents modes de compilation
Code source Code source Code source
Natif Byte CodeByte Code JITJIT
Java est un langage compil et interprt Compilation en mode natif Compilation Byte Code Compilation en mode JIT(Just In Time)
10
Compilation
Langage Machine
Edition de lien
Programme.Exe
Compilation
Byte Code
Interprtation parLa JVM en mode byte code(Traduit en code machineet excute instruction par
Instruction )
Compilation
Byte Code
Interprtation parLa JVM en mode JIT
(Traduit tout le programmeByte Code en programme
machine puis lexcute )[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
11/128
Installation de java Le Kit de dveloppement java JDK peut tre tlcharg
gratuitement partir du site de Sun Microsystem son diteurprincipal (www.java.sun.com).
Le JDK contient 3 trois pacquages : J2Sdk1.6.exe : Kit de dveloppement proprement dit Jre1.6.exe : Machine virtuelle java jdk15-doc.zip : Documentation java
- - - -
11
dans le rpertoire c:\program files\java et installe galement jre1.6dans le mme dossier.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
12/128
Ce que contient le JDK
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
13/128
Kit de dveloppement java
Les programmes ncessaire au dveloppement java sontplacs dans le rpertoire c:\jdk1.5\bin savoir: javac.exe : Compilateur java. java.exe : Interprteur du bytecode java. appletviewer.exe : Pour tester les applets java. Jdb.exe : Dbogueur java. Java .exe : dsassembleur du b tecode.
13
Javadoc.exe : Gnrer la documentation de vos programmesjava. Javah.exe : Permet de lier des programmes Java avec des
mthodes natives, crites dans un autre langage et dpendantdu systme.
jar.exe : Permet de compresser les classes Java ainsi que tousles fichiers ncessaires l'excution d'un programme(graphiques, sons, etc.). Il permet en particulier d'optimiser lechargement des applets sur Internet.
jarsigner.exe : Un utilitaire permettant de signer les fichiersarchives produits par jar.exe.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
14/128
Configuration de l environnement La configuration de l'environnement comporte deux
aspects :- Dfinir la variable denvironnement path qui indique
le chemin d'accs aux programmes excutables :Cette variable path devrait contenir le chemin duJDK utilis:- ath= C:\Pro ram Files\Java\ dk1.6.0 13\bin; ..
14
_
- Quand elle excute une application java, la JVMconsulte la variable denvironnement classpath quicontient le chemin daccs aux classes javautilises par cette application.- classpath= .; c:\monProjet\lib; c:\programmation
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
15/128
Configurer la variable denvironnement path sous windows
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
16/128
Outils de dveloppement java
Un Editeur de texte ASCII: on peut utiliser un simple
diteur comme notepad de windows mais il estprfrable d utiliser un diteur conu pour laprogrammation java exemples: Ultraedit, JCreator, .
16
plus prfr pour les dveloppeur java. Il est gratuit etcest un environnement ouvert.
Autres IDE java : JDevlopper de Oracle. JBuilder de Borland.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
17/128
Premier programme java
Remarques: Le nom du fichier java doit tre le mme que celui de la classe
qui contient la fonction principale main. Pour compiler le programme source, il faut faire appel au
programme javac.exe qui se trouve dans le dossier c:\jdk1.2\bin.
17
rpertoire, il faut ajouter la commande : path c:\jdk1.2\bin dans lefichier autoexec.bat. Aprs compilation du programme PremierProgramme.java, il y a
gnration du fichier PremierProgramme.class qui reprsente le
ByteCode de programme. Pour excuter ce programme en byte code, il faut faire appel au
programme java.exe qui reprsente l interprter du bytecode.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
18/128
Premier programme java
public classPremierProgramme {
public static voidmain(String[] args) {
System.out.println("First Test");
}}
Lancer un diteur de texte ASCII et Ecrire le code source de ce programme. Enregistrer ce fichier dans un nouveau rpertoire c:\exojava sous le nom
PremierPro ramme. ava
18
Compiler ce programme sur ligne de commande Dos :c:\exojava>javac PremierProgramme.java Corriger les Erreurs de compilation Excuter le programme sur ligne de commande
c:\exojava>java PremierProgramme
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
19/128
Premire Application
graphiqueimportjavax.swing.*;
importjava.awt.*;
public classFirstGraphicApp {
public static voidmain(String[] args) {// Crer une nouvelle fentre
JFrame jf=newJFrame("Titre");
//Crer les composants graphiques
= " "
19
JTextField t=newJTextField(12);JButton b=newJButton("OK");
//Dfinir une technique de mise en page
jf.setLayout(newFlowLayout());
//Ajouter les composants la fentre
jf.add(l);jf.add(t);jf.add(b);
//Dfinir les dimensions de la fentre
jf.setBounds(10, 10, 400, 400);
//Afficher la fentre
jf.setVisible(true);
}
} [email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
20/128
Premire Appletimportjava.applet.Applet;
importjava.awt.*;
public classFirstApplet extendsApplet{
public voidinit(){
add(newLabel("Nom:"));
add(newTextField(12));
add(newList());
add(newButton("OK"));
}
public voidpaint(Graphics g) {
20
. , , ,
}}
Rdiger le programme source. Enregistrer le fichier sous le nom FirstApplet.java Compiler le programme source et corriger les erreurs. Crer un page HTML qui affiche l applet sur un navigateur web:
7/25/2019 1 Support poo java premire partie 1
21/128
Deuxime Applet avec Gestion des vnements
importjava.applet.Applet;importjava.awt.*;
importjava.awt.event.*;
public classDeuxiemeApplet extendsApplet implements ActionListener{
// Dclarer etcrer les composants graphiques
Label lNom=newLabel("Nom:"); TextField tNom=newTextField(12);
List listNoms=newList(); Buttonb=newButton("OK");
// Initialisation de l'applet
public voidinit() {
// Ajouter les composants l'applet
add(lNom);add(tNom);add(listNoms);add(b);
// En cliquant sur le bouton b le gestionnaire
21
// des vnnements actionPerformed s'excute
b.addActionListener(this);}
//Mthode qui permet de grer les vnements
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b){
// Lire le contenu de la zone de texte
String nom=tNom.getText();// Ajouter ce contenu dans la liste
listNoms.add(nom);
}
}
}
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
22/128
Structures fondamentales dulangage java
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
23/128
Structure du langage java
Au niveau syntaxe, Java est un langage deprogrammation qui ressemble beaucoup au langagec++
Toute fois quelques simplifications ont tr v r r i n ri
23
doptimisation. Dans cette partie nous ferons une prsentation
succincte des types primitifs, les enveloppeurs,dclarations des variables, le casting des primitives,les oprateurs arithmtiques et logiques, lesstructures de contrle (if, swich, for et while)
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
24/128
Les primitives
Java dispose des primitives suivantes :
Primitive tendue Taille
char 0 65 535 16 bits -
24
short -32 768 +32 767 16 bitsint -2 147 483 648 + 2 147 483 647 32 bitslong 64 bitsfloat de 1.4E-45 3.40282347E38 32 bitsdouble 64 bitsboolean true ou false 1 bitvoid - 0 bit
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
25/128
Utilisation des primitives Les primitives sont utilises de faon trs simple. Elles
doivent tre dclares, tout comme les handles d'objets,avec une syntaxe similaire, par exemple :
int i;
char c;
25
boolean fini; Les primitives peuvent tre initialises en mme temps que
la dclaration.
int i = 12;char c = 'a';
boolean fini = true;
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
26/128
Utilisation des primitives
Comment choisir le nom dune variable: Pour respecter la typologie de java, les nom des
variables commencent toujours par un caractre enminuscule et pour indiquer un sparateur de mots,onutilise les majuscules. Exemples:
int nbPersonnes;
26
r ng nom ersonne; Valeurs par dfaut des primitives:
Toutes les primitives de type numrique utilisescomme membres d'un objet sont initialises la
valeur 0. Le type boolean est initialis la valeurfalse.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
27/128
Casting des primitives
Le casting des primitives Le casting (mot anglais qui signifie moulage),galement appel cast ou, parfois, transtypage,
consiste effectuer une conversion d'un type versun autre type.
27
Le casting peut tre effectu dans deux conditionsdiffrentes Vers un type plus gnral. On parle alors desur-castingou
desur-typage. Vers un type plus particulier. On parle alors de sous-
castingou desous-typage.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
28/128
Casting des primitives Sur-casting : Le sur-casting peut se faireimplicitement ou explicitement.
Exemples : int a=6; // le type int est cod sur 32 bits long b; // le type long est cod sur 64 bits
Casting implicite : b=a;
28
b=(long)a; Sous-Casting : Le sous-casting ne peut
se faire quexplicitement.1: float a = (float)5.5;
2 : double c = (double)a;4 : i n t d = 8 ;5 : byte f = (byte)d;
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
29/128
Les enveloppeurs (wearpers)
Classe PrimitiveCharacter charByte byteShort short
Les primitives sont enveloppes dans des objets appels
enveloppeurs (Wearpers ). Les enveloppeurs sont des classe
29
n eger n
Long longFloat floatDouble doubleBoolean boolean
Void -BigInteger - -BigDecimal -
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
30/128
Utilisation des primitives et enveloppeurs Exemple:
doublev1=5.5; // v1 est une primitive
Double v2=newDouble(5.6); // v2 est un objet
longa=5; // a est une primitive
Long b=newLong(5); // b est un objet
Long c= 5L; // c est un objetSystem.out.println("a="+a);
System.out.println("b="+b.longValue());
System.out.println("c="+c.byteValue());
30
System.out.println("V1="+v1);
System.out.println("V2="+v2.intValue());
Rsultat:
a=5 b=5 c=5 V1=5.5 V2=5
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
31/128
Oprateurs
Oprateur d affectation: x=3;// x reoit 3
x=y=z=w+5;// z reoit w+5, y reoit z et x reoit y Les oprateurs arithmtiques deux oprandes:
+ : addition
31
- : soustract on * : multiplication / : division % : modulo (reste de la division euclidienne)
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
32/128
Oprateurs Les oprateurs arithmtiques deux oprandes
(Les raccourcis)x = x + 4; ou x+=4;z = z * y; ou Z*=y;
v = v % w; ou v%=w; Les oprateurs relationnels:
== : quivalent < : plus petit que
32
> : plus grand que
= : plus grand ou gal != : non quivalent
Les oprateurs dincrmentations et de
dcrmentation: ++ : Pour incrmenter(i++ ou ++i) -- : Pour dcrmenter(i- ou --i)
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
33/128
Oprateurs
Les oprateurs logiques && Et (deux oprandes) || Ou (deux oprandes ) ! Non (un seul oprande)
L'oprateur trois oprandes ?: condition ? ex ression si vrai : ex ression si faux
33
_ _ _ _
exemple : x = (y < 5) ? 4 * y : 2 * y;Equivalent :
if (y < 5)x = 4 * y ;
elsex = 2 * y ;
[email protected] | ENSET UniversitHassan II Mohammedia
S d l
7/25/2019 1 Support poo java premire partie 1
34/128
Structures de contrle
L'instruction conditionnelle ifLa syntaxe de l'instruction if peut tre dcrite de la faon suivante:if (expression) instruction;
ou :
if (expression) {
instruction1;
instruction2;
}
'
34
if (expression) {
instruction1;
}
else {
instruction2;}
[email protected] | ENSET UniversitHassan II Mohammedia
St t d t l
7/25/2019 1 Support poo java premire partie 1
35/128
Structures de contrle
Les instructions conditionnelles imbriquesJava permet d'crire ce type de structure sous la forme :if (expression1) {
bloc1;
}
else if (expression2) {
bloc2;
35
}
else if (expression3) {
bloc3;
}
else {
bloc5;
}
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
36/128
Structures de contrle: L'instruction switchSyntaxe :switch( variable) {
case valeur1: instr1;break;
case valeur2: instr2;break;
case valeurN: instrN;break;
default: instr;break;
}
Exemple:importjava.util.Scanner;public classTest {
public static voidmain(String[] args) {
36
System.out.print("Donner un nombre:");
Scanner clavier=newScanner(System.in);
intnb=clavier.nextInt();
switch(nb){
case1 : System.out.println("Lundi");break;
case2 : System.out.println("Mardi");break;
case3 : System.out.println("Mercredi");break;
default:System.out.println("Autrement");break;
}}}
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
37/128
Structures de contrle
La boucle for
La boucle for est une structure employe pour excuter un blocd'instructions un nombre de fois en principe connu l'avance. Elle utilise la syntaxe suivante :
for initialisation test incrmentation
37
instructions;}
Exemple :for(inti = 2; i < 10;i++) {
System.out.println("I="+i);}
[email protected] | ENSET UniversitHassan II Mohammedia
d
7/25/2019 1 Support poo java premire partie 1
38/128
Structures de contrle Sortie d'une boucle par return
int[] tab=new int[]{4,6,5,8};
for(inti= 0; i < tab.length; i++) {
if(tab[i] == 5) {
returni;}
Branchement au moyen des instructions break et continue break:
38
intx = 10;
for(inti = 0; i < 10; i++) {
x--;
if(x == 5)break;
}
System.out
.println(x); continue:for(inti = 0; i < 10; i++) {
if(i == 5) continue;
System.out.println(i);
}
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
39/128
Structures de contrle L instruction Whilewhile (condition){
BlocInstructions;
}
L instruction do ..
Exemple :ints=0;inti=0;
while(i
7/25/2019 1 Support poo java premire partie 1
40/128
Programmation oriente objetavec JAVA
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
41/128
Mthode oriente objet La mthode oriente objet permet de concevoir une application sous
la forme d'un ensemble d'objets relis entre eux par des relations Lorsque que l'on programme avec cette mthode, la premire
question que lon se pose plus souvent est :
qu'est-ce que je manipule ? , Au lieu de qu'est-ce que je fait ? .
L'une des caractristiques de cette mthode permet de concevoir denouveaux objets partir d'objets existants.
41
n peut onc r ut ser es o ets ans p us eurs app cat ons. La rutilisation du code fut un argument dterminant pour venter lesavantages des langages objets. Pour faire la programmation oriente objet il faut maitriser les
fondamentaux de lorient objet savoir: Objet et classe Hritage Encapsulation (Accessibilit) Polymorphisme
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
42/128
Objet
Un objet est une structure informatique dfinie par un tat et uncomportement
Objet=tat + comportement Ltat regroupe les valeurs instantanes de tous les attributs de lobjet. Le comportement regroupe toutes les comptences et dcrit les actions
et les ractions de lobjet. Autrement dit le comportement est dfini parles oprations que lobjet peut effectuer.
Ltat dun objet peut changer dans le temps.
42
Gnralement, cest le comportement qui modifie ltat de lobjet Exemples:
v1:Voiture
Couleur="rouge"
Carburant=20
Puissance=120
demarrer()
accelerer()
Freiner()
tat de lobjet
Comportement
:Fenetre
titre="WinWord"
largeur=400
hauteur=300
Deplacer()
agrandir()
fermer()[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
43/128
Identit dun objet
En plus de son tat, un objet possde une identitqui caractrise son existence propre.
Cette identit sappelle galement rfrence ouhandle de lobjet
43
En terme informatique de bas niveau, lidentit dunobjet reprsente son adresse mmoire. Deux objets ne peuvent pas avoir la mme identit:
cest--dire que deux objet ne peuvent pas avoir lemme emplacement mmoire.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
44/128
Classes
Les objets qui ont des caractristiques communessont regroups dans une entit appel classe.
La classe dcrit le domaine de dfinition dunensemble dobjets.
44
Les gnralits sont contenues dans les classe et
les particularits dans les objets. Les objets informatique sont construits partir de
leur classe par un processus qui sappellelinstanciation. Tout objet est une instance dune classe.
[email protected] | ENSET UniversitHassan II Mohammedia
C i i d l
7/25/2019 1 Support poo java premire partie 1
45/128
Caractristique dune classe Une classe est dfinit par:
Les attributs Les mthodes
Les attributs permettent de dcrire ltat de des objets de cette classe. Chaque attribut est dfini par:
Son nom Son type ventuellement sa valeur initiale
45
Les mthodes permettent de dcrire le comportement des objets de
cette classe. Une mthode reprsente une procdure ou une fonction qui permet
dexcuter un certain nombre dinstructions. Parmi les mthode dune classe, existe deux mthodes particulires:
Une mthode qui est appele au moment de la cration dun objet decette classe. Cette mthode est appele CONSTRUCTEUR Une mthode qui est appele au moment de la destruction dun objet.
Cette mthode sappelle le DESTRUCTEUR
[email protected] | ENSET UniversitHassan II Mohammedia
R i UML d l
7/25/2019 1 Support poo java premire partie 1
46/128
Reprsentation UML dune classe
Une classe est reprsent par un rectangle 3compartiments: Un compartiment qui contient le nom de la classe Un compartiment qui contient la dclaration des attributs Un com artiment ui contient les mthodes
46
Exemples:Compte
code : int
solde : floatCompte(float soldeInitial)
verser(float mt):void
retirer(float mt):void
getSolde():float
Nom de la classe
Attributs
MthodesOu
Oprations
[email protected] | ENSET UniversitHassan II Mohammedia
L l t t k d d k
7/25/2019 1 Support poo java premire partie 1
47/128
Les classes sont stockes dans des packages
Les packages offrent un mcanisme gnral pour la partition desmodles et le regroupement des lments de la modlisation
Chaque package est reprsent graphiquement par un dossier Les packages divisent et organisent les modles de la mme
manire que les dossier organisent le systme de fichier
47
Nomdu paquetage
[email protected] | ENSET UniversitHassan II Mohammedia
A ibili b d l
7/25/2019 1 Support poo java premire partie 1
48/128
Accessibilit au membres dune classe Dans java, il existe 4 niveaux de protection :
private (-) : Un membre priv dune classe nestaccessible qu lintrieur de cette classe.
protected (#) : un membre protg dune classe estaccessible : Lintrieur de cette classe Aux classes drives de cette classe.
48
ux c asses u m me pac age. public (+) : accs partir de toute entit interne ouexterne la classe Autorisation par dfaut : dans java, en labsence
des trois autorisations prcdentes, lautorisation par
dfaut est package. Cette autorisation indique queuniquement les classes du mme package ontlautorisation daccs.
[email protected] | ENSET UniversitHassan II Mohammedia
E l di l t ti d l
7/25/2019 1 Support poo java premire partie 1
49/128
metier
Exemple dimplmentation dune classe
avec Java package metier;public class Compte {// Attributs
private int code;
protected float solde;
// Constructeur
public Compte(int c,float s){
code=c;
solde=s;
}
Compte
- code : int
# solde : float
+ Compte(int code, float solde)
49
// Mthode pour verser un montant
public voidverser(float mt){solde+=mt;
}
// Mthode pour retirer un montant
public voidretirer(float mt){
solde-=mt;
}
// Une mthode qui retourne l'tat du compte
public String toString(){
return(" Code="+code+" Solde="+solde);
}
}
+ verser(float mt):void
+ retirer(float mt):void
+ toString():String
[email protected] | ENSET UniversitHassan II Mohammedia
Cration des objets dans java
7/25/2019 1 Support poo java premire partie 1
50/128
Cration des objets dans java Dans java, pour crer un objet dune classe , On utilise la commande
new suivie du constructeur de la classe. La commande new Cre un objet dans lespace mmoire et retourne
ladresse mmoire de celui-ci. Cette adresse mmoire devrait tre affecte une variable qui
reprsente lidentit de lobjet. Cette rfrence est appele handle.package test;
importmetier.Compte;
public classApplication {
c1:Compte
Code=1
c1:Compte
Code=1
c1:Compte
code=1
50
public static voidmain(String[] args) {
Compte c1=newCompte(1,5000);
Compte c2=newCompte(2,6000);
c1.verser(3000);
c1.retirer(2000);
System.out.println(c1.toString());
}
}
Solde=5000
verser(float mt)
retirer(float mt)
toString()
c2:Compte
code=2
solde=6000
verser(float mt)
retirer(float mt)
toString()
Solde=8000
verser(float mt)
retirer(float mt)
toString()
solde=6000
verser(float mt)
retirer(float mt)
toString()
Code=1 Solde= [email protected] | ENSET UniversitHassan II Mohammedia
C tr t r p r df t
7/25/2019 1 Support poo java premire partie 1
51/128
Constructeur par dfaut Quand on ne dfinit aucun constructeur pour une classe, lecompilateur cre le constructeur par dfaut. Le constructeur par dfaut na aucun paramtre et ne fait
aucune initialisation
Exemple de classe :Exemple de classe :Exemple de classe :Exemple de classe :
public class Personne {
// Les Attributs
Instanciation en utilisant leInstanciation en utilisant leInstanciation en utilisant leInstanciation en utilisant le
constructeur par dfaut :constructeur par dfaut :constructeur par dfaut :constructeur par dfaut :
51
private intcode;
privateString nom;
// Les Mthodes
public voidsetNom(String n){
this.nom=n;
}
publicString getNom(){
returnnom;
}
}
Personne p=newPersonne();
p.setNom("AZER");
System.out.println(p.getNom());
[email protected] | ENSET UniversitHassan II Mohammedia
Getters et Setters
7/25/2019 1 Support poo java premire partie 1
52/128
Les attributs privs dune classe ne sont accessibles qu lintrieur de la classe.
Pour donner la possibilit dautres classes daccder aux membres privs, ilfaut dfinir dans la classes des mthodes publiques qui permettent de : lire la variables privs. Ce genre de mthodes sappellent les accesseurs ou Getters modifier les variables privs. Ce genre de mthodes sappellent les mutateurs ou
Setters
Les getters sont des mthodes qui commencent toujours par le mot get etfinissent par le nom de lattribut en crivant en majuscule la lettre qui vient justeaprs le get. Les getters retourne toujours le mme type que lattributcorrespondant. Par exemple, dans la classe CompteSimple, nous avons dfini un attribut priv :
52
pr vate tr ng nom;
Le getter de cette variable est :public String getNom( ){return nom;
}
Les setters sont des mthodes qui commencent toujours par le mot set etfinissent par le nom de lattribut en crivant en majuscule la lettre qui vient justeaprs le set. Les setters sont toujours de type void et reoivent un paramtrequi est de meme type que la variable: Exemple:
public void setNom( String n ){this.nom=n;
} [email protected] | ENSET UniversitHassan II Mohammedia
Encapsulation Diagramme de squence :
7/25/2019 1 Support poo java premire partie 1
53/128
ppublic classApplication {
public static voidmain(String[] args) {
Personne p=newPersonne();
p.setNom("AZER");
System.out.println(p.getNom());
}
}
Comportement
p:Personne:Application
:Application
p1:Personnecrer()
setNom("AZER")
getNom()
Diagramme de squence :
53
Code = 1nom=AZER
Etat
setNom()
Etat
ompor emen
Retourne AZER
p.seNom("AZER")
p.getNom()
Gnralement, ltat dun objet est priv ou protg et son comportement est publique
Quand ltat de lobjet est priv Seules les mthode de ses qui ont le droit dy accder
Quand ltat de lobjet est protg, les mthodes des classes drives et les classes
appartenant au mme package peuvent galement y [email protected] | ENSET UniversitHassan II Mohammedia
Membres statiques dune classe
7/25/2019 1 Support poo java premire partie 1
54/128
Membres statiques d une classe. Dans lexemple de la classe Compte, chaque objet Compte
possde ses propres variables code et solde. Les variables codeet solde sont appeles variables dinstances.
Les objets dune mme classe peuvent partager des mmes
variables qui sont stockes au niveau de la classe. Ce genre devariables, sappellent les variables statiques ou variables declasses.
54
classe et partag par tous les objets de cette classe. Comme un attribut une mthode peut tre dclare statique, ce
qui signifie quelle appartient la classe et partage par toutesles instances de cette classe.
Dans la notation UML, les membres statiques dune classe sontsouligns.
[email protected] | ENSET UniversitHassan II Mohammedia
Exemple: package metier;
7/25/2019 1 Support poo java premire partie 1
55/128
p Supposant nous voulions ajouter la
classe Compte une variable qui permet
de stocker le nombre le comptes crs. Comme la valeur de variable nbComptes
est la mme pour tous les objets, celle-cisera dclare statique. Si non, elle seraduplique dans chaque nouveau objetcr.
La valeur de nbComptes est au dpartinitialise 0, et pendant la crationdune nouvelle instance (au niveau duconstructeur), nbCompte est incrmente
public class Compte {
// Variables dinstances
private int code;private float solde;
// Variable de classe ou statique
private static int nbComptes;
public Compte(float solde){
this.code=++nbComptes;
this.solde=solde;}
// Mthode pour verser un montant
public voidverser(float mt){
solde+=mt;
55
pour initialiser le code du compte.
}
// Mthode pour retirer un montantpublic voidretirer(float mt){
solde-=mt;
}
// retourne l'tat du compte
public String toString(){
return(" Code="+code+" Solde="+solde);
}
// retourne la valeur de nbComptes
public static int getNbComptes(){
return(nbComptes);
}
}
Compte
- code : int
# solde : float
- nbComptes:int
+ Compte(float solde)
+ verser(float mt):void
+ retirer(float mt):void
+ toString():String
+ getNbComptes():int [email protected] | ENSET UniversitHassan II Mohammedia
Application de test
7/25/2019 1 Support poo java premire partie 1
56/128
pp
package test;
importmetier.Compte;
public classApplication {
public static voidmain(String[] args) {
Compte c1=newCompte(5000);
Compte c2=newCompte(6000);
c1:Compte
Code=1
Solde=5000
c2:Compte
code=2
solde=6000
c1:Compte
Code=1
Solde=8000
c1:Compte
code=1
solde=6000
Classe Compte
nbCompte=0
getNbComptes()
Classe Compte
nbCompte=1
getNbComptes()
Classe Compte
nbCompte=2
getNbComptes()
56
.
c1.retirer(2000);
System.out.println(c1.toString());
System.out.println(Compte.nbComptes)
System.out.println(c1.nbComptes)}
}
verser(float mt)
retirer(float mt)
toString()
verser(float mt)
retirer(float mt)
toString()
verser(float mt)
retirer(float mt)
toString()
verser(float mt)
retirer(float mt)
toString()
Code=1 Solde= 600022 [email protected] | ENSET UniversitHassan II Mohammedia
Destruction des objets : Garbage Collector
7/25/2019 1 Support poo java premire partie 1
57/128
Destruction des objets : Garbage Collector Dans certains langages de programmation, leprogrammeur doit s occuper lui mme de dtruire les
objets inutilisables. Java dtruit automatiquement tous les objets
inutilisables en utilisant ce qu on appelle le garbagecollector (ramasseur d ordures). Qui s excuteautomatiquement ds que la mmoire disponible est
57
.
Tous les objets qui ne sont pas retenus par deshandles seront dtruits. Ce phnomne ralenti parfois le fonctionnement de
java. Pour signaler au garbage collector que vous voulerdtruire un objet dune classe, vous pouvez faire appel
la mthode finalize() redfinie dans la classe.
[email protected] | ENSET UniversitHassan II Mohammedia
Exercice 1 : Modlisation dun segment
7/25/2019 1 Support poo java premire partie 1
58/128
Exercice 1 : Modlisation d un segment
On souhaite crer une application qui permet de manipuler des segments. Un segment est dfini par la valeur de ses deux extrmits extr1 et extr2. Pour crer un segment, il faut prciser les valeurs de extr1 et extr2. Les oprations que lon souhaite excuter sur le segment sont :
ordonne() : mthode qui permet dordonner extr1 et extr2 si extr1 est suprieur extr2
extr1 extr2
58
. appartient(int x) : retourne si x appartient au segment ou non. toString() : retourne une chane de caractres de type SEGMENT[extr1,extr2]
Faire une reprsentation UML de la classe Segment. Implmenter en java la classe Segment Crer une application TestSegment qui permet de :
Crer objet de la classe Segment avec les valeurs extr1=24 et extr2=12. Afficher ltat de cet objet en utilisant la mthode toString(). Afficher la longueur de ce segment. Afficher si le point x=15, appartient ce segment. Changer les valeurs des deux extrmits de ce segment. Afficher nouveau la longueur du segment.
[email protected] | ENSET UniversitHassan II Mohammedia
Diagramme de classes
7/25/2019 1 Support poo java premire partie 1
59/128
Diagramme de classes
Segment
+ extr1 : int
+ extr2 : int
+ Segment (int e1,int e2)
+ ordonne()
+ etLon ueur : int
TestSegment
+ main(String[] args):void
59
+ appartient(int x) : boolean
+ toString() : String
[email protected] | ENSET UniversitHassan II Mohammedia
Solution : Segment.javapackage fig;
7/25/2019 1 Support poo java premire partie 1
60/128
packagefig;
public class Segment {
public int extr1;public int extr2;
// Constructeur
public Segment(int a,int b){
extr1=a;extr2=b;ordonne();
}
public voidordonne(){
if(extr1>extr2){
int z=extr1;
extr1=extr2;
60
extr2=z;
}
}
public int getLongueur(){
return(extr2-extr1);
}
public boolean appartient(int x){
if((x>extr1)&&(x
7/25/2019 1 Support poo java premire partie 1
61/128
pp
packagetest;
importjava.util.Scanner;
importfig.Segment;
public classApplication {
public static voidmain(String[] args) {Scanner clavier=newScanner(System.in);
System.out.print("Donner Extr1:");inte1=clavier.nextInt();
System.out.print("Donner Extr2:");inte2=clavier.nextInt();
Longueur dusegment[13,67] est :54
Donner X:77 N'appartient pas au segment[13,67]
61
Segment s=newSegment(e1, e2);
System.out.println("Longueur du"+s.toString()+" est :"+s.getLongueur());
System.out.print("Donner X:");intx=clavier.nextInt();
if(s.appartient(x)==true)
System.out.println(x+" Appartient au "+s);
else
System.out.println(x+" N'appartien pas au "+s);
}
}[email protected] | ENSET Universit
Hassan II Mohammedia
Excution de la classe TestSegment
7/25/2019 1 Support poo java premire partie 1
62/128
Pour excuter une application(Classe qui contient la mthodemain) avec Eclipse, on cliqueavec le bouton droit de la sourissur la classe, puis on choisitdans le menu contextuel, Run
As > Java Application
62
Donner Extr1:67
Donner Extr2:13
Longueur dusegment[13,67] est :54
Donner X:7
7 N'appartient pas au segment[13,67]
[email protected] | ENSET UniversitHassan II Mohammedia
Exercice 2
7/25/2019 1 Support poo java premire partie 1
63/128
Une cercle est dfini par : Un point qui reprsente son centre : centre(x,y) et un rayon.
On peut crer un cercle de deux manires : Soit en prcisant son centre et un point du cercle. Soit en prcisant son centre et son rayon
Les oprations que lon souhaite excuter sur un cercle sont : getPerimetre() : retourne le primtre du cercle getSurface() : retourne la surface du cercle.
appartient(Point p) : retourne si le point p appartient ou non lintrieur du cercle.
toStrin : retourne une chane de caractres de t e CERCLE x R
C(x,y)
P(x,y)
R
63
1. Etablir le diagramme de classes
2. Crer les classe Point dfinie par: Les attributs x et y de type int
Un constructeur qui initialise les valeurs de x et y.
Une mthode toString().
3. Crer la classe Cercle
4. Crer une application qui permet de :a. Crer un cercle dfini par le centre c(100,100) et un point p(200,200)b. Crer un cercle dfini par le centre c(130,100) et de rayon r=40c. Afficher le primtre et le rayon des deux cercles.d. Afficher si le point p(120,100) appartient lintersection des deux cercles ou non.
[email protected] | ENSET UniversitHassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
64/128
Hritage et accessibilit
M.Youssfi
[email protected] | ENSET Universit
Hassan II Mohammedia
Hritage
7/25/2019 1 Support poo java premire partie 1
65/128
g
Dans la programmation oriente objet, lhritageoffre un moyen trs efficace qui permet larutilisation du code.
En effet une classe peut hriter dune autre classe
65
es a r u s e es m o es. Lhritage, quand il peut tre exploit, fait gagner
beaucoup de temps en terme de dveloppementet en terme de maintenance des applications.
La rutilisation du code fut un argument dterminantpour venter les mthodes orientes objets.
[email protected] | ENSET UniversitHassan II Mohammedia
Exemple de problme
7/25/2019 1 Support poo java premire partie 1
66/128
p p Supposons que nous souhaitions crer une application qui permet demanipuler diffrents types de comptes bancaires: les compte simple,
les comptes pargnes et les comptes payants. Tous les types de comptes sont caractriser par:
Un code et un solde
Lors de la cration dun compte, son code qui est dfini automatiquement enfonction du nombre de comptes crs; Un compte peut subir les oprations de versement et de retrait. Pour ces
deux oprations, il faut connatre le montant de lopration.
66
Un compte simple est un compte qui possde un dcouvert. Ce qui
signifie que ce compte peut tre dbiteur jusqu la valeur dudcouvert.
Un compte Epargne est un compte bancaire qui possde en plus unchamp tauxIntert et une mthode calculIntrt() qui permet demettre jour le solde en tenant compte des interts.
Un ComptePayant est un compte bancaire pour lequel chaqueopration de retrait et de versement est payante et vaut 5 % dumontant de lopration.
[email protected] | ENSET UniversitHassan II Mohammedia
Diagramme de classes
7/25/2019 1 Support poo java premire partie 1
67/128
Compte
- code : int# solde : float- nbComptes : int
+ Compte ( )+ verser (float mt) : void+ retirer (float mt) : void+ toString() : String
67
CompteSimple- decouvert : float
+ CompteSimple (float dec)
+ retirer (float mt) : void+ toString() : String
CompteEpargne- taux : float
+ CompteEparge (float taux)
+ catculInterets () : void+ toString() : String
ComptePayant
+ ComptePayant ( )
+ verser (float mt) : void+ retirer (float mt) : void+ toString() : String
[email protected] | ENSET UniversitHassan II Mohammedia
Implmentation java de la classe Compte
7/25/2019 1 Support poo java premire partie 1
68/128
public class Compte {
private int code;
protected float solde;
private static int nbComptes;
public Compte( ){
++nbComptes;
code=nbComptes;
this.solde=0;
68
public voidverser(float mt){
solde+=mt;}
public voidretirer(float mt){
if(mt
7/25/2019 1 Support poo java premire partie 1
69/128
g
La classe CompteSimple est une classe qui hrite de la classeCompte.
Pour dsigner lhritage dans java, on utilise le mot extendspublic class CompteSimple extends Compte {
}
69
tout ses membres sauf le constructeur. Dans java une classe hrite toujours dune seule classe. Si une classe nhrite pas explicitement dune autre classe, elle
hrite implicitement de la classe Object.
La classe Compte hrite de la classe Object. La classe CompteSimple hrite directement de la classe Compte
et indirectement de la classe Object.
[email protected] | ENSET UniversitHassan II Mohammedia
Dfinir les constructeur de la classe drive
7/25/2019 1 Support poo java premire partie 1
70/128
Le constructeur de la classe drive peutfaire appel au constructeur de la classeparente en utilisant le mot super() suivi deses paramtres.
public class CompteSimple extends Compte {
70
pr va e oa ecouvert;
//constructeurpublicCompteSimple(floatdecouvert){
super();
this.decouvert=decouvert;
}
}
[email protected] | ENSET Universit
Hassan II Mohammedia
Redfinition des mthodes
7/25/2019 1 Support poo java premire partie 1
71/128
Quand une classe hrite dune autre classe, elle peut redfinirles mthodes hrites.
Dans notre cas la classe CompteSimple hrite de la classeCompte la mthode retirer(). nous avons besoin de redfinircette mthode pour prendre en considration la valeur dudcouvert.
public class CompteSimple extends Compte {
71
private float decouvert;
// constructeurpublic CompteSimple(float decouvert){
super();
this.decouvert=decouvert;
}
// Redfinition de la mthode retirerpublic voidretirer(floatmt) {
if(mt-decouvert
7/25/2019 1 Support poo java premire partie 1
72/128
Dans la mthode redfinie de la nouvelle classe drive, on peutfaire appel la mthode de la classe parente en utilisant le motsuper suivi dun point et du nom de la mthode
Dans cette nouvelle classe drive, nous allons redfinir galementla mthode toString().
public class CompteSimple extends Compte {private float decouvert;
// constructeur
72
// Redfinition de la mthode retirer
public void retirer(float mt) {
if(mt+decouvert>solde)
solde-=mt;
}
// Redfinition de la mthode toString
publicString toString() {return("Compte Simple "+super.toString()+"
Dcouvert="+decouvert);
}
}[email protected] | ENSET Universit
Hassan II Mohammedia
Hritage la loupe : Instanciation
7/25/2019 1 Support poo java premire partie 1
73/128
Quand on cre une instance duneclasse, la classe parente estautomatiquement instancie et lobjetde la classe parente est associ lobjet cr travers larfrence super injecte par le
: Compte
- code=1
- solde=0
+ verser()
+ retirer()+ toString()
73
CompteSimple cs=new CompteSimple(5000);
Lors de linstanciation, lhritage entreles classes est traduit par unecomposition entre un objet de la classe
instancie et dun objet de la classeparente qui est cr implicitement.
cs : CompteSimple
- decouvert=5000
- super =
+ retirer()
+ toString()
[email protected] | ENSET Universit
Hassan II Mohammedia
Surcharge
7/25/2019 1 Support poo java premire partie 1
74/128
Dans une classe, on peut dfinir plusieurs constructeurs. Chacunayant une signature diffrentes (paramtres diffrents)
On dit que le constructeur est surcharg On peut galement surcharger une mthode. Cela peut dire
quon peut dfinir, dans la mme classe plusieurs mthodes quiont le mme nom et des signatures diffrentes;
La si nature dune mthode dsi ne la liste des ar uments avec
74
leurs types.
Dans la classe CompteSimple, par exemple, on peut ajouter unautre constructeur sans paramtre
Un constructeur peut appeler un autre constructeur de la mmeclasse en utilisant le mot this() avec des paramtres ventuels
[email protected] | ENSET Universit
Hassan II Mohammedia
Surcharge de constructeurs
7/25/2019 1 Support poo java premire partie 1
75/128
public class CompteSimple extends Compte {private float decouvert;
//Premier constructeur
publicCompteSimple(floatdecouvert){
super();
this.decouvert=decouvert;
}
//Deuxime constructeur
75
publicCompteSimple(){
this(0);}
}
On peut crer une instance de la classe CompteSimple en faisant appel
lun des deux constructeur :
CompteSimple cs1=new CompteSimple(5000);
CompteSimple cs2=new CompteSimple();
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
76/128
Accessibilit
76
[email protected] | ENSET Universit
Hassan II Mohammedia
Accessibilit
7/25/2019 1 Support poo java premire partie 1
77/128
Les trois critres permettant d'utiliser une classe sont Qui, Quoi,O. Il faut donc : Que l'utilisateur soit autoris (Qui). Que le type d'utilisation souhait soit autoris (Quoi). Que l'adresse de la classe soit connue (O).
Pour utiliser donc une classe, il faut :
77
Connaitre le package ou se trouve la classe ( ) Importer la classe en spcifiant son package.
Quest ce quon peut faire avec cette classe: Est-ce quon a le droit de linstancier Est-ce quon a le droit dexploiter les membres de ses instances Est-ce quon a le droit dhriter de cette classe. Est-ce quelle contient des membres statiques
Connaitre qui a le droit daccder aux membres de cetteinstance.
[email protected] | ENSET Universit
Hassan II Mohammedia
Les packages (O)
7/25/2019 1 Support poo java premire partie 1
78/128
Nous avons souvent utilis la classe System pourafficher un message : System.out.prinln() ,
En consultant la documentation de java, nous allonsconstater que le chemin d accs complet la classeSystem est java.lang.System.
78
lang du dossier java. java.lang.System est le chemin d accs qui prsentela particularit d utiliser un point . commesparateur.
Java.lang qui contient la classe System est appel package
[email protected] | ENSET Universit
Hassan II Mohammedia
Les packages (O)
7/25/2019 1 Support poo java premire partie 1
79/128
79
[email protected] | ENSET Universit
Hassan II Mohammedia
Les packages (O)
7/25/2019 1 Support poo java premire partie 1
80/128
Notion de package: Java dispose d'un mcanisme pour la recherche des classes. Au moment de lexcution, La JVM recherche les classes en priorit :
Dans le rpertoire courant, c'est--dire celui o se trouve la classeappelante, si la variable d'environnement CLASSPATH n'est pasdfinie ;
Dans les chemins spcifis par la variable d'environnementCLASSPATH si celle-ci est dfinie.
Linstruction package:
80
Si vous souhaitez qu'une classe que vous avez cre appartienne un
package particulier, vous devez le spcifier explicitement au moyen del'instruction package, suivie du nom du package. Cette instruction doit tre la premire du fichier. Elle concerne toutes les classes dfinies dans ce fichier.
Linstruction import Pour utiliser une classe, il faut
Soit crire le nom de la classe prcde par son package. Soit importer cette classe en la dclarant dans la clause import. Et dans
ce cas l, seul le nom de la classe suffit pour [email protected] | ENSET Universit
Hassan II Mohammedia
Les packages (O) Application:
packagetest;
importa.b.c.Client;
public classApplication {
public static void main(String[] args) {
7/25/2019 1 Support poo java premire partie 1
81/128
packagea.b.c;
public classClient {
private intcode;
privateString nom;
publicClient(intcode, String nom) {
this.code= code;
this.nom= nom;}
publicString getNom(){
return(nom);
public static voidmain(String[] args) {
Client c=newClient(2,"Salih");
System.out.println("Nom="+c.getNom());
}
}
81
public intgetCode(){
returncode;}
}
Pour Compiler la classe Client.java sur ligne de commande: javac -d cheminbin Client.java
cheminbin reprsente le dossier des fichiers .class.
[email protected] | ENSET Universit
Hassan II Mohammedia
Les packages (O)
Les fichiers .jar
7/25/2019 1 Support poo java premire partie 1
82/128
j Les fichiers .jar sont des fichiers compresss comme les fichiers .zip selon un
algorithme particulier devenu un standard. Ils sont parfois appels fichiers d'archives ou, plus simplement, archives. Ces
fichiers sont produits par des outils de compression tels que Pkzip (sous DOS) ouWinzip (sous Windows), ou encore par jar.exe.
Les fichiers .jar peuvent contenir une multitude de fichiers compresss avecl'indication de leur chemin d'accs. Les packages standard de Java sont organiss de cette manire, dans un fichier
nomm rt.jar plac dans le sous-rpertoire lib du rpertoire o est install le JDK.
82
Dans le cas d'une installation standard de Java 6 sur le disque C:, le chemin d'accscomplet la classe System est donc : c:\jdk1.6\jre\lib\rt.jar\java\lang\System
Cration de vos propres fichiers .jar ou .zip
Vous pouvez utiliser le programme jar.exe du jdk pour crer les fichiers.jar
Syntaxe : jar [options] nomarchive.jar fichiers
Exemple qui permet darchive le contenu du dossier a : C:\AJ2\TP_ACC\bin> jar cf archive.jar a
[email protected] | ENSET Universit
Hassan II Mohammedia
Ce qui peut tre fait(Quoi)
7/25/2019 1 Support poo java premire partie 1
83/128
Nous avons maintenant fait le tour de la question O ? Pour qu'une classe puisse tre utilise (directement ou par
l'intermdiaire d'un de ses membres), il faut non seulement trecapable de la trouver, mais aussi qu'elle soit adapte l'usage
que l'on veut en faire. Une classe peut servir plusieurs choses :
Crer des objets, en tant instancie.
83
Crer de nouvelles classes, en tant tendue.
On peut utiliser directement ses membres statiques (sans qu'ellesoit instancie.) On peut utiliser les membres de ses instances.
Les diffrents modificateurs qui permettent dapporter des
restrictions lutilisation dune classe sont: abstract, final, static, synchronized et native
[email protected] | ENSET Universit
Hassan II Mohammedia
Classe abstraite
7/25/2019 1 Support poo java premire partie 1
84/128
Une classe abstraite est une classe qui ne peut pas treinstancie. La classe Compte de notre modle peut tre dclare
abstract pour indiquer au compilateur que cette classe ne
peut pas tre instanci. Une classe abstraite est gnralement cre pour en faire
riv r n v r ri
84
publicabstractclass Compte {private int code;
protected float solde;
private static int nbComptes;
// Constructeurs
// Mthodes
}[email protected] | ENSET Universit
Hassan II Mohammedia
Les mthodes abstraites
7/25/2019 1 Support poo java premire partie 1
85/128
Une mthode abstraite peut tre dclare lintrieur dune classe abstraite.
Une mthode abstraite est une mthode quina pas de dfinition.
85
doit tre redfinie dans las classes drives. Exemple :
On peut ajouter la classe Compte une mthode
abstraite nomme afficher() pour indiquer quetous les comptes doivent redfinir cette mthode.
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
86/128
Interfaces Une interface est une sorte de classe abstraite qui ne contient que des mthodes
7/25/2019 1 Support poo java premire partie 1
87/128
abstraites. Dans java une classe hrite dune seule classe et peut hriter en mme temps de
plusieurs interface. On dit quune classe implmente une ou plusieurs interface. Une interface peut hriter de plusieurs interfaces. Exemple dinterface:
public interface Solvable {public voidsolver();
public double getSole();
}
87
Pour indiquer que la classe CompteSimple implmente cette insterface on peutcrire:
public class CompteSimple extends Compte implements Solvable {
private float decouvert;
public voidafficher() {
System.out.println("Solde="+solde+" Dcouvert="+decouvert);
}
public double getSole() {return solde;
}
public voidsolver() {
this.solde=0;
}}
[email protected] | ENSET Universit
Hassan II Mohammedia
Classe de type final
7/25/2019 1 Support poo java premire partie 1
88/128
Une classe de type final est une classes qui ne peut pas tredrive.
Autrement dit, on ne peut pas hriter dune classe final. La classe CompteSimple peut tre dclare final en crivant:public final class CompteSimple extends Compte {
88
public voidafficher() {
System.out.println("Solde="+solde+"
Dcouvert="+decouvert);
}
}
[email protected] | ENSET Universit
Hassan II Mohammedia
Variables et mthodes final
7/25/2019 1 Support poo java premire partie 1
89/128
Une variable final est une variable dont la valeur ne peut paschanger. Autrement dit, cest une constante: Exemple : final double PI=3.14;
Une mthode final est une mthode qui ne peut pas treredfinie dans les classes drives. Exemple : La mthode verser de la classe suivante ne peut pas
tre redfinie dans les classes drives car elle est dclare final public class Compte {
89
private int code;protected float solde;
private static int nbComptes;
public finalvoidverser(float mt){
solde+=mt;
}
public voidretirer(float mt){
if(mt
7/25/2019 1 Support poo java premire partie 1
90/128
qui appartiennent la classe et sont partags par toutes les instancesde cette classe. Les membres statiques ne sont pas instancis lors de linstanciation de
la classe Les membres statiques sont accessible en utilisant directement le nom
de la classe qui les contient. Il nest donc pas ncessaire de crer une instance dune classe pour
utiliser les membres statiques.
90
la classe qui les contient.
Exemple dutilisation: double d=Math.sqrt(9);
Ici nous avons fait appel la mthode sqrt de la classe Math sans creraucune instance. Ceci est possible car la mthode sqrt est statique.
Si cette mthode ntait pas statique, il faut tout dabord crer un objet de laclasse Math avant de faire appel cette mthode: Math m=new Math(); double d=m.sqrt(9);
Les seuls membres dune classe, qui sont accessibles, sansinstanciation sont les membres statiques.
[email protected] | ENSET Universit
Hassan II Mohammedia
Qui peut le faire (Qui): private:
L' t i ti private t l l t i ti Ell ' li bd' l ( i bl th d t l i t )
7/25/2019 1 Support poo java premire partie 1
91/128
L'autorisation private est la plus restrictive. Elle s'applique aux membresd'une classe (variables, mthodes et classes internes). Les lments dclars private ne sont accessibles que depuis la classe qui
les contient. Ce type d'autorisation est souvent employ pour les variables qui ne doivent
tre modifies ou lues qu' l'aide d'un getter ou d'un setter.
public: Un membre public dune classe peut tre utilis par nimporte quelle autres
classe. En UML le membres ublic sont indi us ar le si ne +
91
protected:
Les membres d'une classe peuvent tre dclars protected. Dans ce cas, l'accs en est rserv aux mthodes des classes appartenant
au mme package aux classes drives de ces classes, ainsi qu'aux classes appartenant aux mmes packages que les classes drives.
Autorisation par dfaut : package L'autorisation par dfaut, que nous appelons package, s'applique aux classes,
interfaces, variables et mthodes. Les lments qui disposent de cette autorisation sont accessibles toutes les
mthodes des classes du mme package.
[email protected] | ENSET Universit
Hassan II Mohammedia
Rsum: Hritage U l t h it d t l tili t l tt d
7/25/2019 1 Support poo java premire partie 1
92/128
Une classe peut hriter dune autre classe en utilisant le motextends. Une classe Hrite dune autre tout ses membres sauf le
constructeur. Il faut toujours dfinir le constructeur de la nouvelle classe
drive. Le constructeur de la classe drive peut appeler le constructeur
de la classe parente en utilisant le mot super(), avec la liste des
92
. Quand une classe hrite dune autre classe, elle a le droit de
redfinir les mthodes hrites. Dans une mthode redfinie, on peut appeler la mthode de la
classe parente en crivant le mot super suivi dun point et dunom de la mthode parente. (super.mthode()).
Un constructeur peut appeler un autre constructeur de la mmeclasse en utilisant le mot this() avec des paramtres duconstructeur.
[email protected] | ENSET Universit
Hassan II Mohammedia
Rsum: Accessibilt P tili l il f t it
7/25/2019 1 Support poo java premire partie 1
93/128
Pour utiliser une classe il faut connaitre: O trouver la classe (package) Quels sont les droits daccs cette classe (Quoi?)
Quelles sont les classes qui ont le droit daccder aux membresde cette classe (Qui?)
93
Pour utiliser une classe il faut importer son package en utilisantlinstruction import
Pour dclarer le package dappartenance dune classe on utiliselinstruction package
La variable denvironnement classpath permet de dclarer leschemins ou la JVM trouvera les classes dune application
[email protected] | ENSET Universit
Hassan II Mohammedia
Rsum: Accessibilt
Quoi?b t t
7/25/2019 1 Support poo java premire partie 1
94/128
Quoi? abstract : Une classe abstraite est une classe qui ne peut pas tre instancie. Une mthode abstraite est une mthode qui peut tre dfinie lintrieur dune classe
abstraite. Cest une mthode qui na pas de dfinition. Par consquent, elle doit treredfinie dans les classes drives.
Une interface est une sorte de classe abstraite qui ne contient que des mthodesabstraites. Dans java une classe hrite toujours dune seule classe et peut implmenter plusieurs
interfaces.
94
Une classe final est une classe qui ne peut pas tre drive.
Une mthode final est une mthode qui ne peut pas tre redfinie dans les classesdrives. Une variable final est une variable don la valeur ne peut pas changer On utilise final pour deux raisons: une raison de scurit et une raison doptimisation
static: Les membres statiques dune classe appartiennent la classe et partags par toutes ses
objets Les membres statiques sont accessible en utilisant directement le nom de la classe Les membres statiques sont accessible sans avoir besoin de crer une instance de la
classe qui les contient Les membres statiques sont galement accessible via les instances de la classe qui les
[email protected] | ENSET Universit
Hassan II Mohammedia
Rsum: Accessibilt
Q i?
7/25/2019 1 Support poo java premire partie 1
95/128
Qui? Java dispose de 4 niveaux dautorisations: private : protected:
ublic:
95
package (Autorisation par dfaut)
[email protected] | ENSET Universit
Hassan II Mohammedia
Travail faire
7/25/2019 1 Support poo java premire partie 1
96/128
Implmenter la classe Compte
Implmenter la classe CompteSimple Implmenter la classe CompteEpargne
96
mp men er a c asse omp e ayan Crer une application pour tester les
diffrentes classes.
[email protected] | ENSET Universit
Hassan II Mohammedia
Compte.javapackage metier; // Getters et Setters
public int getCode() {
7/25/2019 1 Support poo java premire partie 1
97/128
public abstract class Compte {
private int code;
protected float solde;
private static int nbComptes;
public Compte(float s){
code=++nbComptes;
this.solde=s;
return code;
}
public float getSolde() {
return solde;
}
public static int getNbComptes() {return nbComptes;
}
}
97
}
public voidretirer(float mt){
if(mt
7/25/2019 1 Support poo java premire partie 1
98/128
public final class CompteSimpleextends Compte {
private float decouvert;
// Constructeurs
public CompteSimple(float s,float d){super(s);
this.decouvert=d;
}
return decouvert;
}
public voidsetDecouvert(floatdecouvert) {
this.decouvert = decouvert;
}}
98
super();
}
public voidretirer(float mt) {
if(solde+decouvert>mt) solde-=mt;
}
public String toString() {
return "Compte Simple"+super.toString()+"
Solde="+solde;}
[email protected] | ENSET Universit
Hassan II Mohammedia
CompteEpargne.javapackage metier;
public class CompteEpargne extends
// Getters et Setters
public float getTaux() {return taux;
7/25/2019 1 Support poo java premire partie 1
99/128
public class CompteEpargne extendsCompte {
private float taux;
//Constructeurs
public CompteEpargne() {this(0,6);
}
return taux;
}
public voidsetTaux(float taux) {
this.taux = taux;
}
}
99
solde,float taux) {
super(solde);
this.taux=taux;}
public voidcalculInterets(){
solde=solde*(1+taux/100);
}
public String toString() {
return "Compte Epargne"+super.toString()+" Taux="+taux;
}
[email protected] | ENSET Universit
Hassan II Mohammedia
ComptePayant.javapackage metier;
7/25/2019 1 Support poo java premire partie 1
100/128
public class ComptePayantextends Compte {
// Constructeur
public ComptePayant(floatsolde) {
super(solde);
}
public voidverser(float mt) {
100
.verser m ;
super.retirer(mt*5/100);
}public voidretirer(float mt) {
super.retirer(mt);
super.retirer(mt*5/100);
}
public String toString() {
return super.toString();
}
}
[email protected] | ENSET Universit
Hassan II Mohammedia
Application TestCompte.javapackage test;
import metier *;
// Test de ComptePayant
ComptePayant c3=newComptePayant(5000);
7/25/2019 1 Support poo java premire partie 1
101/128
import metier. ;
public class TestCompte {
public static voidmain(String[] args) {
// Tester la classe Compte Simple
CompteSimple c1=new CompteSimple(8000,4000);
System.out.println(c1.toString());c1.verser(3000);
c1.retirer(5000);
c1.setDecouvert(5500);
p y ( );
System.out.println(c3);
c3.verser(6000);
c3.retirer(4000);
System.out.println(c3);
}
}
101
ys em.ou .pr n n c . o r ng ;
// Tester la classe Compte Epargne
CompteEpargne c2=new CompteEpargne(50000,5);
System.out.println(c2.toString());
c2.verser(30000);
c2.retirer(6000);
c2.calculInterets();
System.out.println(c2.toString());
c2.setTaux(6);
c2.calculInterets();
System.out.println(c2);
[email protected] | ENSET Universit
Hassan II Mohammedia
7/25/2019 1 Support poo java premire partie 1
102/128
Polymorphisme
102
[email protected] | ENSET Universit
Hassan II Mohammedia
Polymorphisme
7/25/2019 1 Support poo java premire partie 1
103/128
Le polymorphisme offre aux objets lapossibilit d appartenir plusieurs catgories la fois.
103
,
appris l'cole qu'il tait impossibled'additionner des pommes et des oranges Mais, on peut crire l expression suivante:
3 pommes + 5 oranges = 8 fruits
[email protected] | ENSET Universit
Hassan II Mohammedia
Polymorphisme
7/25/2019 1 Support poo java premire partie 1
104/128
Le sur-casting des objets: Une faon de dcrire l'exemple consistant additionner des
pommes et des oranges serait d'imaginer que nous disonspommes et oranges mais que nous manipulons en fait des fruits.Nous pourrions crire alors la formule correcte :
104
3 (fruits) pommes
+ 5 (fruits) oranges---------------------------------------------
= 8 fruits
Cette faon de voir les choses implique que les pommes et les
oranges soient "transforms" en fruits pralablement l'tablissement du problme. Cette transformation est appelesur-casting
[email protected] | ENSET Universit
Hassan II Mohammedia
Instanciation et hritage
7/25/2019 1 Support poo java premire partie 1
105/128
Considrons lexemple suivant:
Fruit
poids:int
105
affiche():void
Pomme
Pomme(int p)affiche():void
affichePoids()
Orange
Orange(int p)affiche():void
affichePoids()
[email protected] | ENSET Universit
Hassan II Mohammedia
Instanciation et hritagepublic abstract classFruit{
intpoids;publicFruit(){
public classOrange extendsFruit{
publicOrange(intp){poids=p;
7/25/2019 1 Support poo java premire partie 1
106/128
p
System.out.println("Cration d'un
fruit");
}
public voidaffiche(){
System.out.println("c'est un fruit");}
}
p p
System.out.println("cration d'une
Orange de "+poids+" grammes ");
}
public voidaffiche(){
System.out.println("C'est uneOrange");
}
public voidaffichePoids(){
106
public classPolymorphisme{
public static voidmain(String[] args){
Pomme p=newPomme(72);
Orange o=newOrange(80);
}
}
pu c c ass omme ex en s ru
publicPomme(intp){
poids=p;
System.out.println("cration d'une pomme
de "+poids+" grammes ");
}
public voidaffiche(){
System.out.println("C'est une pomme");
}
public voidaffichePoids(){
System.out.println("le poids de la pomme
est:"+poids+" grammes");
}
}
System.out.pr nt n" e po s e a
Orange est:"+poids+" grammes");
}}
[email protected] | ENSET Universit
Hassan II Mohammedia
Instanciation et hritage
7/25/2019 1 Support poo java premire partie 1
107/128
Le rsultat affich par le programme est:Cration d'un fruit
Cration d'une pomme de 72 grammes
Cration d'un fruit
'
Instanciation et hritage
107
Nous constatons qu'avant de crer une Pomme,le programme cre un Fruit, comme le montrel'excution du constructeur de cette classe. Lamme chose se passe lorsque nous crons une
Orange
[email protected] | ENSET Universit
Hassan II Mohammedia
Sur-casting des objets
7/25/2019 1 Support poo java premire partie 1
108/128
public classPolymorphisme2{public static voidmain(String[] args){
// Sur-casting implicite
Considrons lexemple suivant:
108
Fruit f1=newOrange(40);
// Sur-casting expliciteFruit f2=(Fruit)newPomme(60);
// Sur-casting implicite
f2=newOrange(40);
}
}
[email protected] | ENSET Universit
Hassan II Mohammedia
U bj t d t P t t ff t h dl d tSur-casting des objets
7/25/2019 1 Support poo java premire partie 1
109/128
Un objet de type Pomme peut tre affect un handle de typefruit sans aucun problme : Fruit f1; f1=new Pomme(60);
Dans ce cas lobjet Pomme est converti automatiquement en
Sur casting des objets
109
. On dit que lobjet Pomme est sur-cast en Fruit. Dans java, le sur-casting peut se faire implicitement. Toutefois, on peut faire le sur-casting explicitement sans quil soit
ncessaire. La casting explicit se fait en prcisant la classe vers laquelle on
convertit lobjet entre parenthse. Exemple : f2=(Fruit)new Orange(40);
[email protected] | ENSET Universit
Hassan II Mohammedia
Sous-Casting des objets
7/25/2019 1 Support poo java premire partie 1
110/128
public class Polymorphisme3{public static voidmain(String[] args){
Fruit f1;
Considrons lexemple suivant:
110
f1=new Pomme(60);
f2=new Orange(40);f1.affichePoids();
((Pomme)f1).affichePoids();
}
}
rreur e comp a on:Polymorphisme3.java:5: cannot resolve symbol
symbol : method affichePoids ()location: class Fruit
f1.affichePoids();
^
1 error
Solution : Sous-casting explicit
[email protected] | ENSET Universit
Hassan II Mohammedia
Ce message indique que lobjet f1 qui est de type Fruit ne possde pasSous-casting des objets
7/25/2019 1 Support poo java premire partie 1
111/128
Ce message indique que l objet f1 qui est de type Fruit ne possde pasla mthode affichePoids().
Cela est tout fait vrai car cette mthode est dfinie dans les classesPomme et Oranges et non dans la classe Fruit.
En fait, mme si le handle f1 pointe un objet Pomme, le compilateur netient pas en considration cette affectation, et pour lui f1 est un Fruit.
Il faudra donc convertir explicitement lobjet f1 qui de type Fruit en
g j
111
Pomme.
Cette conversion sappelle Sous-casting qui indique la conversion dunobjet dune classe vers un autre objet dune classe drive.
Dans ce cas de figure, le sous-casting doit se faire explicitement. Lerreur de compilation peut tre vit en crivant la syntaxe suivante :
((Pomme)f1).affichePoids();
Cette instruction indique que lobjet f1 , de type Fruit, est converti enPomme, ensuite la mthode affichePoids() de lobjet Pomme est appelce qui est correcte.
[email protected] | ENSET Universit
Hassan II Mohammedia
Dans la plupart des langages lorsque le compilateur rencontre un appel deLate Binding
7/25/2019 1 Support poo java premire partie 1
112/128
Dans la plupart des langages, lorsque le compilateur rencontre un appel demthode, il doit tre mme de savoir exactement de quelle mthode il s'agit.
Le lien entre l'appel et la mthode est alors tabli au moment de la compilation.Cette technique est appeleearly binding, que l'on pourrait traduire parliaison
prcoce. Java utilise cette technique pour les appels de mthodes dclares final. Elle a l'avantage de permettre certaines optimisations.
g
112
, ,dulate binding(liaison tardive).
Dans ce cas, le compilateur n'tablit le lien entre l'appel et la mthode qu'aumoment de l'excution du programme.
Ce lien est tabli avec la version la plus spcifique de la mthode. Dans notre cas, nous la mthode affiche() possde 3 versions dfinies dans les
classes Fruit, Pomme et Orange. Grce au late binding, java est capable de dterminer, au moment de
lexcution, quelle version de mthode qui sera appele ce que nous pouvonsvrifier par le programme suivant :
[email protected] | ENSET Universit
Hassan II Mohammedia
public class Polymorphisme4{Late Binding
7/25/2019 1 Support poo java premire partie 1
113/128
public class Polymorphisme4{
public static voidmain(String[] args){
Fruit f1;
Fruit f2;
f1=new Pomme(60);
f2=new Orange(40);
f1.affiche();//((Pomme)f1).affiche();
g
113
f2.affiche();
}
}
Lexcution de ce programme donne :Cration d'un fruitCration d'une pomme de 60 grammesCration d'un fruit
Cration d'une orange de 40 grammesC'est une pommeC'est une Orange
[email protected] | ENSET UniversitHassan II Mohammedia
Polymorphisme
7/25/2019 1 Support poo java premire partie 1
114/128
Pour rsumer, un objet est une instance de : sa classe, toutes les classes parentes de sa classe, toutes les interfaces qu'il implmente,
114
toutes les interfaces parentes des interfaces qu'ilimplmente,
toutes les interfaces qu'implmentent les classes parentes desa classe,
toutes les interfaces parentes des prcdentes.
[email protected] | ENSET UniversitHassan II Mohammedia
T bl C ll i
7/25/2019 1 Support poo java premire partie 1
115/128
Tableaux et Collections
[email protected] | ENSET Universit
Hassan II Mohammedia
Tableaux de primitives liste0
123
5
1223
7/25/2019 1 Support poo java premire partie 1
116/128
Tableaux de primitives: Dclaration :
Exemple : Tableau de nombres entiers int liste
456
78910
116
liste est un handle destin pointer vers un tableau dentier
Cration du tableau liste = new int[11];
Manipulation des lments du tableau: liste[0]=5; liste[1]=12; liste[3]=23;
for(int i=0;i
7/25/2019 1 Support poo java premire partie 1
117/128
Fruit[] lesFruits;
Cration du tableau lesFruits = newFruit[5];
Cration des objets: lesFruits[0]=newPomme(60); lesFruits[1]=newOrange(100);
34
affiche()
affichePoids()
:Orange
poids=60
affiche()
Manipulation des objets:
for(inti=0;i
7/25/2019 1 Support poo java premire partie 1
118/128
Supprimer un objet du tableau Rechercher des objets selon des critres Trier le tableau dobjets Contrler les objets du tableau Etc
Dans un problme, les tableaux peuvent tre utiliss quand la
118
mens on u a eau es xe. Dans le cas contraire, il faut utiliser les collections Java fournit plusieurs types de colections:
ArrayList Vector Iterator HashMap Etc
Dans cette partie du cours, nous allons prsenter uniquementcomment utiliser les collections ArrayList, Vector, Iterator et HashMap
Vous aurez loccasion de dcouvrir les autres collections dans lesprochains cours [email protected] | ENSET Universit
Hassan II Mohammedia
Collection ArrayList ArrayList est une classe du package java.util, qui implmente linterface List. Dclaration dune collection de type List qui devrait stocker des objets de typeFruit:
List fruits;
7/25/2019 1 Support poo java premire partie 1
119/128
List Fruit fruits;
Cration de la liste: fruits=newArrayList();
Ajouter deux objets de type Fruit la liste: fruits.add(newPomme(30)); fruits.add(newOrange(25));
119
En utilisant la boucle classique for
for(inti=0;i
7/25/2019 1 Support poo java premire partie 1
120/128
List fruits;
// Cration de la liste
fruits=newArrayList();
// Ajout de 3 objets Pomme, Orange et Pomme la liste
fruits.add(newPomme(30));
120
fruits.add(newPomme(60));
// Parcourir tous les objetsfor(inti=0;i
7/25/2019 1 Support poo java premire partie 1
121/128
Cration de la liste: fruits=newVector();
Ajouter deux objets de type Fruit la liste: fruits.add(newPomme(30));
fruits.add(newOrange(25));
121
En utilisant la boucle classique for
for(inti=0;i
7/25/2019 1 Support poo java premire partie 1
122/128
Vector fruits;
// Cration du vecteur
fruits=newVector();
// Ajout de 3 objets Pomme, Orange et Pomme au vecteur
fruits.add(newPomme(30));
122
fruits.add(newPomme(60));
// Parcourir tous les objetsfor(inti=0;i
7/25/2019 1 Support poo java premire partie 1
123/128
collection. Exemple :
Cration dun vecteur de Fruit.Vector fruits=newVector();
Ajouter des fruits aux vecteurfruits.add(newPomme(30));
123
fruits.add(newOrange(25));
fruits.add(newPomme(60));
Cration dun Iterator partir de ce vecteurIterator it=fruits.iterator();
Parcourir lIterator:while(it.hasNext()){
Fruit f=it.next();
f.affiche();
}
Notez bien que, aprs avoir parcouru un iterator, il devient [email protected] | ENSET Universit
Hassan II Mohammedia
Collection de type HashMap
La collection HashMap est une classe qui implmente linterface Map. Cettecollection permet de crer un tableau dynamique dobjet de type Object quisont identifis par une cl.Dclaration et cration dune collection de type HashMap qui contient des
7/25/2019 1 Support poo java premire partie 1
124/128
Dclaration et cration d une collection de type HashMap qui contient desfruits identifis par une cl de type String : Map fruits=newHashMap();
Ajouter deux objets de type Fruit la colelction fruits.put("p1", newPomme(40));
fruits. ut("o1", newOran e(60));
key value
p1
:Pommefruits
124
Rcuprer un objet ayant pour cl "p1 Fruit f=fruits.get("p1");
f.affiche();
Parcourir toute la collection:Iterator it=fruits.keySet().iterator();
while(it.hasNext()){
String key=it.next();
Fruit ff=fruits.get(key);
System.out.println(key);
ff.affiche();
}
o:Orange
[email protected] | ENSET UniversitHassan II Mohammedia
Associations entre classes
Une agence gre plusieurs clients.
7/25/2019 1 Support poo java premire partie 1
125/128
g g p Chaque client possde un seul compte Le compte peut tre soit un compteSimple ou un
compteEpargne.
125
Agence Client
CompteSimple CompteEpargne
Compte
1 *1
1
gre
possde
[email protected] | ENSET UniversitHassan II Mohammedia
Traduction des association
La premire association gre de type ( 1---*) entre Agence etClient se traduit par :
7/25/2019 1 Support poo java premire partie 1
126/128
Client se traduit par : Cration dun tableau dobjets Client ou dun vecteur comme
attribut de la classe Agence. Ce tableau ou ce vecteur sert rfrencer les clients de lagence.
----
126
Cration dun handle de type Compte dans la classe Client. Ce handle sert rfrencer lobjet Compte de ce client.
La troisime rgne de gestion est une relation dhritage et nonune association.
[email protected] | ENSET UniversitHassan II Mohammedia
Traduction des association
7/25/2019 1 Support poo java premire partie 1
127/128
Agence Client
Compte
1 *1
1
ossde
127
CompteSimple CompteEpargne
gre
Agence a=new Agence();Client cli=new Client();CompteSimple c1=new CompteSimple();
cli.monCompte=c1;a.addClient(cli);
[email protected] | ENSET UniversitHassan II Mohammedia
Exemple de diagramme
dobjets
Agence a=new Agence();Client cli=new Client();CompteSimple c1=new CompteSimple();cli.monCompte=c1;
a.lesClients.addElement(cli);
7/25/2019 1 Support poo java premire partie 1
128/128
a: Agence
cli: Client
lesClients
monCompte
c1: CpteSimple
128
: Client
monCompte
: CpteEpargne
: Client
monCompte
: CpteSimple
addClient(Client c)
[email protected] | ENSET UniversitHassan II Mohammedia