Documente Academic
Documente Profesional
Documente Cultură
M.Youssfi
CSS Servlet 3
Java Script 4
HTTP Modle DAO
XML 5 Mtier
Java Donnes
6
Ajax Beans
Vue
Hibernate
Flash JSP STRUTS
JSF Couche
Spring MVC service JDBC SGBD
Intgration avec Spring ou EJB
Client Lourd
AWT RMI/EJB/CORBA/SOAP
SWING
SWT
M.Youssfi
boolean fini;
b=5
c=5
V1=5.5
V2=5
v1:Voiture :Fenetre
Couleur="rouge" titre="WinWord"
Carburant=20
tat de lobjet largeur=400
Puissance=120 hauteur=300
demarrer() Deplacer()
code : int
Attributs
solde : float
Compte(float soldeInitial) Mthodes
verser(float mt):void Ou
Oprations
retirer(float mt):void
getSolde():float med@youssfi.net | ENSET Universit
Hassan II Mohammedia 46
Les classes sont stockes dans des packages
Nom
du paquetage
Retourne AZER
setNom()
p.seNom("AZER")
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
med@youssfi.net y accder
| ENSET Universit
Hassan II Mohammedia 53
Membres statiques dune classe.
Dans lexemple de la classe Compte, chaque objet Compte
possde ses propres variables code et solde. Les variables code
et 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 de
variables, sappellent les variables statiques ou variables de
classes.
Un attribut statique dune classe est un attribut qui appartient la
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 toutes
les instances de cette classe.
Dans la notation UML, les membres statiques dune classe sont
souligns.
System.out.println(Compte.nbComptes)
System.out.println(c1.nbComptes)
}
}
Code=1 Solde= 6000
2 med@youssfi.net | ENSET Universit
2 Hassan II Mohammedia 56
Destruction des objets : Garbage Collector
Dans certains langages de programmation, le
programmeur doit s occuper lui mme de dtruire les
objets inutilisables.
Java dtruit automatiquement tous les objets
inutilisables en utilisant ce qu on appelle le garbage
collector (ramasseur d ordures). Qui s excute
automatiquement ds que la mmoire disponible est
infrieure un certain seuil.
Tous les objets qui ne sont pas retenus par des
handles seront dtruits.
Ce phnomne ralenti parfois le fonctionnement de
java.
Pour signaler au garbage collector que vous vouler
dtruire un objet dune classe, vous pouvez faire appel
la mthode finalize() redfinie dans la classe.
med@youssfi.net | ENSET Universit
Hassan II Mohammedia 57
Exercice 1 : Modlisation dun segment
extr1 extr2
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
getLongueur() : mthode qui retourne la longueur du segment.
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.
med@youssfi.net | ENSET Universit
Hassan II Mohammedia 58
Diagramme de classes
Segment TestSegment
+ extr1 : int
+ extr2 : int + main(String[] args):void
+ Segment (int e1,int e2)
+ ordonne()
+ getLongueur() : int
+ appartient(int x) : boolean
+ toString() : String
Donner Extr1:67
Donner Extr2:13
Longueur dusegment[13,67] est :54
Donner X:7
7 N'appartient pas au segment[13,67]
M.Youssfi
+ Compte ( )
+ verser (float mt) : void
+ retirer (float mt) : void
+ toString() : String
public Compte( ){
++nbComptes;
code=nbComptes;
this.solde=0;
}
public void verser(float mt){
solde+=mt;
}
public void retirer(float mt){
if(mt<solde) solde-=mt;
}
public String toString(){
return("Code="+code+" Solde="+solde);
}
}
med@youssfi.net | ENSET Universit
Hassan II Mohammedia 68
Hritage : extends
La classe CompteSimple est une classe qui hrite de la classe
Compte.
Pour dsigner lhritage dans java, on utilise le mot extends
public class CompteSimple extends Compte {
}
La classe CompteSimple hrite de la classe CompteBancaire
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.
// constructeur
// Redfinition de la mthode retirer
public void retirer(float mt) {
if(mt+decouvert>solde)
solde-=mt;
}
// Redfinition de la mthode toString
public String toString() {
return("Compte Simple "+super.toString()+"
Dcouvert="+decouvert);
}
} med@youssfi.net | ENSET Universit
Hassan II Mohammedia 72
Hritage la loupe : Instanciation
: Compte
Quand on cre une instance dune
- code=1
classe, la classe parente est
- solde=0
automatiquement instancie et lobjet
+ verser()
de la classe parente est associ + retirer()
lobjet cr travers la + toString()
rfrence super injecte par le
compilateur
CompteSimple cs=new CompteSimple(5000);
cs : CompteSimple
Lors de linstanciation, lhritage entre - decouvert=5000
les classes est traduit par une - super =
composition entre un objet de la classe + retirer()
instancie et dun objet de la classe + toString()
parente qui est cr implicitement.
// Mthode abstraite
public abstract void afficher();
Une mthode final est une mthode qui ne peut pas tre
redfinie 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 {
private int code; protected float solde;
private static int nbComptes;
public CompteEpargne(float
solde,float taux) {
super(solde);
this.taux=taux;
}
public void calculInterets(){
solde=solde*(1+taux/100);
}
public String toString() {
return "Compte Epargne
"+super.toString()+" Taux="+taux;
}
Fruit
poids:int
Fruit()
affiche():void
Pomme Orange
Pomme(int p) Orange(int p)
affiche():void affiche():void
affichePoids() affichePoids()
f1=new Pomme(60);
for(int i=0;i<liste.length;i++){
System.out.println(liste[i]);
}
Tableaux dobjets
0
Dclaration : :Pomme 1
Exemple : Tableau dobjets Fruit poids=60 2
Fruit[] lesFruits; affiche() 3
Cration du tableau affichePoids() 4
lesFruits = new Fruit[5];
:Orange
Cration des objets:
lesFruits[0]=new Pomme(60); poids=60
((Pomme)lesFruits[i]).affichePoids(); affichePoids()
else
((Orange)lesFruits[i]).affichePoids();
}
Un tableau dobjets est un tableau de handles
1 Compte
Agence Client 1
1 * possde
gre
CompteSimple CompteEpargne
1 Compte
Agence Client 1
1 * possde
lesClients:Vector monCompte:Compte
gre
CompteSimple CompteEpargne
monCompte
a: Agence
lesClients
: Client : CpteEpargne
monCompte
: Client : CpteSimple
addClient(Client c)
monCompte