Les Java Beans…
Michel RIVEILL
[email protected] -http://rangiroa.essi.fr/riveill
Laboratoire I3S
2
Java Beans
http://java.sun.com/docs/books/tutorial/javabeans/index.ht
ml
composants logiciels (généralement graphique) pouvant
être composés dynamiquement
3
Programmation par composants
Java Beans
Objectif : permettre la programmation par composition
dynamique
Beans = composants réutilisables (visuel ou non) pour les
plates-formes Java
Composition dynamique
Assemblage dynamique de composants
Visualisation en ligne de l’application réalisée
intéressant pour la construction d’une interface
Caractéristiques
Un bean exporte différentes propriétés (attributs publics)
Communication par événement
Chaque bean est persistant
Introspection : permet de découvrir dynamiquement les
propriétés de chaque bean
4
JavaBeans
Bean : objet Java présentant certaines caractéristiques
syntaxiques (pattern)
Définition des attributs
Communication de type événement/réaction
Bean
Source
Bean
abonné_1
Bean
abonné_2
event
event
event
event
5
Java Beans - propriétés
Attributs publics pouvant être positionnés de l'extérieur
modes : read/write, read only ou write only
par d'autres beans ou par des outils (PropertyEditor)
portent par exemple sur :
la présentation (taille, couleur, position, …)
le comportement
Identification d'une propriété par des règles syntaxiques
setX(int i) et int getX() identifie la propriété X de type entier
mécanisme générique utilisé par les outils d’introspection
Exposé court
(suite page 31)
6
Java Beans - propriétés
Différents types de propriétés
simples
indexées : ensemble de valeur
liées - bound : un événement est notifié à chaque
modification de l’attribut
contraintes - constrained : notification du changement avec
vérification de la modification
un autre Bean peut interdire la modification de la valeur
utilisation non transparente
7
Java Beans
Evénements
objets java héritant de java.lang.EventObject
envoyés vers des beans abonnés à cet événement
Utilisation des Listener
Source
Source
Source Abonné
Abonn
Abonné
é
Abonné
Abonn
Abonné
é
Public interface EventListener {
void handleEvent(Event e);
}
Public interface
Public interface EventListener
EventListener {
{
void
void handleEvent
handleEvent(Event e);
(Event e);
}
}
implement
implement
s
s
8
Java Beans
Evénements
objets java héritant de java.lang.EventObject
envoyés vers des beans abonnés à cet événement
Un bean souhaitant réagir à un événement, s’enregistre auprès
d ’un beans capable de générer cet événement
Utilisation des Listener
Source
Source
Source Abonné
Abonn
Abonné
é
Abonné
Abonn
Abonné
é
Public synchronized
addListener(Listener l)
Public
Public synchronized
synchronized
addListener
addListener(
(Listener
Listener l)
l)
Source.addListener(this);
Source.addListener
Source.addListener(
(this
this);
);
9
Java Beans
Source
Source
Source
Abonné
Abonn
Abonné
é
Abonné
Abonn
Abonné
é
Public interface EventListener {
void handleEvent(Event e);
}
Public interface
Public interface EventListener
EventListener {
{
void
void handleEvent
handleEvent(Event e);
(Event e);
}
}
implements
implements
Public synchronized
addListener(Listener l)
Public
Public synchronized
synchronized
addListener
addListener(
(Listener
Listener l)
l)
Source.addListener(this);
Source.addListener
Source.addListener(
(this
this);
);
Event
Object
Event
Event
Object
Object
Event
Object
Event
Event
Object
Object
handleEvent(e)
handleEvent
handleEvent(e)
(e)
Vector Listeners
Vector
Vector Listeners
Listeners
10
Java Beans : introspection
mécanisme d’introspection
convention de nommage
utilisation de méthodes pour rechercher les attributs, les
événements, les méthodes
description explicites des méthodes, propriétés, événements
associés aux composants
11
Java Beans : persistance
Mise en œuvre
sauvegarde / restauration de l ’état à l ’aide de la
sérialisation Java
sauvegarde de l ’état après chaque modification d ’une
propriété
on peut choisir les propriétés qui seront sauvegardées
12
Java Bean : la BeanBox
13
Exemple : construire un bean jauge
A chaque appel de la méthode progress (), la jauge
évolue :
Choix de l ’objet graphique a étendre : « component »
permet de créer des composants graphiques « légers »
(i.e. qui n ’ont pas de fenêtre opaque associé - voir doc awt)
public class Gauge extends Component {
Un bean a un constructeur sans paramètre :
public Gauge() {
super();
}
14
Ecriture d ’un bean (suite)
Ecriture de la méthode publique progress() qui incrémente
le pointeur
public void progress(){
if(steps!=0){
theta = theta + (360/steps);
repaint();
}
}
15
Ecriture d ’un bean
Déclaration des méthodes permettant l ’accès aux
attributs :
Steps : nombre de pas pour faire le tour du cercle
lecture et écriture
MaximumSize
lecture seulement
public void setSteps
(int steps){
this.steps=steps;
progress();
}
public int getSteps(){
return steps;
}
public Dimension
getMaximumSize(){
return
new Dimension
(100, 100);
}
16
Ecriture d ’un bean
Ecriture de la méthode paint () permettant de visualiser la
progression du pointeur
public void paint(Graphics g){
g.drawOval(0, 0, 100, 100);
g.drawLine(50, 50,
(int) (50+50*Math.cos(theta*Math.PI/180)),
(int) (50+50*Math.sin(theta* Math.PI/180))
);
}
C ’est fini… il faut compiler le bean jauge (voir manuel du
B.D.K)
17
Tester le bean jauge
Charger le bean jauge (« Gauge ») dans la ToolBox
Placer le bean jauge (« Gauge ») dans la BeanBox, and
positionnner le nombre de pas à 10
Placer un bean « OurButton » dans la BeanBox
Avec le bean « OurButton » sélectionner, choisir dans le
menu Edit -> Events|mouseClick|buttonClicked, et tirer un
trait vers le bean jauge (« Gaude »)
Dans la boite de dialogue, sélectionner la méthode
progress()
Maintenant en cliquant sur le bouton, le pointeur avance
pour les 9 prochains clics.
Vous pouvez modifier le nombre de pas… et
recommencer
18
Construire une petite application avec 3
beans
Charge le bean Timer
Placer les bean « Gauge », « OurButton » et « Timer » dans la
BeanBox
Modifier le label du bean « OurButton » pour avoir « Start
Timer »
Lier l ’événement Events|mouseClick|buttonClicked associé au
bean « OurButton » à la méthode startTimer() du bean
«Time
Lier l ’événement Events|timer|timedOut du bean « Timer » à la
méthode progress() du bean « Gauge »
Selectionner le bean « Timer ». Positionner l ’attribut
« noOfTimeouts » à 10
Selectionner le bean « Gauge ». Positionner l ’attribut « steps »
à10
Cliquer sur le bouton « Start Timer » et vous devez voir
progresser la jauge pendant les 10 prochaines secondes !
19
Java Beans : évaluation
Intégration
au niveau source (Java...)
Visualisation de l’application
mais pas de son architecture
intéressant pour des composants graphiques
Environnement ‘BeanBox’
outils d’aide à la construction (vision exécution)
possibilité d’éditer les propriétés, les méthodes, mais plus
difficilement les liens entre les Beans
n’est pas orienté vers les applications réparties
Environnement ‘professionnel’
Intègrent tous aujourd’hui la notion de Beans
Permettent presque tous la visualisation de l’architecture
1 / 5 100%
Study collections
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !