QCM : Le Modèle à
Composants de SUN
(JavaBeans)
Chapitre 3 - Questions et Solutions
SECTION 1 : INTRODUCTION ET
PRÉSENTATION (Slides 1-4)
Q1. Qu'est-ce qu'un JavaBean selon la définition de
SUN ?
a. Une classe Java qui hérite de JComponent
b. Un composant logiciel réutilisable qui peut être manipulé visuellement dans un outil de développement
c. Un fichier de configuration XML pour les applications Java
d. Une interface Java qui définit les règles de programmation
Réponse : b)
Explication : Slide 1 - Définition officielle de SUN : « Un JavaBean est un composant logiciel réutilisable qui peut être
manipulé visuellement dans un outil de développement ».
Q2. Quel est l'avantage principal des JavaBeans
disponibles "sur étagère" ?
a. Ils sont toujours gratuits
b. Ils peuvent être paramétrés et assemblés de façon visuelle et interactive pour former des composites
c. Ils fonctionnent uniquement sur Linux
d. Ils ne nécessitent aucun apprentissage
Réponse : b)
Explication : Slide 1 - Les JavaBeans sont des éléments logiciels qui peuvent être paramétrés et assemblés (de façon
visuelle et interactive) pour former des composites.
Q3. Quel est le rôle principal du BDK (Bean
Development Kit) ?
a. Compiler les fichiers Java en bytecode
b. API de base de développement et d'assemblage de composants Beans
c. Serveur d'applications pour exécuter les Beans
d. Système de gestion de base de données pour Beans
Réponse : b)
Explication : Slide 3 - BDK (Bean Development Kit) est l'API de base de développement et d'assemblage de
composants Beans.
Q4. Quels environnements peuvent être utilisés pour
assembler des JavaBeans ?
a. Uniquement NetBeans
b. Beanbox, NetBeans, Borland JBuilder, Eclipse
c. Uniquement Eclipse
d. Uniquement Visual Age
Réponse : b)
Explication : Slide 3 - Les environnements d'assemblage incluent : beanbox, netbeans, Borland JBuilder, Eclipse.
Q5. Qu'est-ce que la phase "Design-Time" pour un
JavaBean ?
a. L'exécution du Bean dans une application normale
b. Développement d'un Bean, son intégration avec d'autres pour composer un Bean composite à l'aide d'un outil
spécialisé
c. La compilation du Bean
d. La sauvegarde de l'état du Bean
Réponse : b)
Explication : Slide 4 - Design-Time : Développement d'un Bean, son intégration avec d'autres pour composer un Bean
composite à l'aide d'un outil spécialisé.
SECTION 2 : CARACTÉRISTIQUES
TECHNIQUES (Slides 5-8)
Q6. De combien de manières un Bean dévoile-t-il son
comportement ?
a. 2 manières
b. 3 manières : propriétés, méthodes et événements
c. 4 manières
d. 1 seule manière
Réponse : b)
Explication : Slide 5 - Un Bean dévoile son comportement de 3 manières : Par ses propriétés (attributs), par certaines
méthodes publiques, par les événements qu'il peut émettre ou recevoir.
Q7. Quel design pattern est utilisé pour les propriétés
JavaBean ?
a. Singleton
b. Factory
c. Pattern d'accesseurs/modificateurs (getter/setter) avec nommage normalisé
d. Strategy
Réponse : c)
Explication : Slide 8 - Les JavaBeans respectent un design pattern sur le nommage des accesseurs et modificateurs
(getXxx/setXxx).
Q8. Quel est l'objectif principal de l'introspection dans
JavaBeans ?
a. Afficher une interface graphique
b. Déterminer dynamiquement les caractéristiques d'un Bean (propriétés, méthodes, événements)
c. Compiler le code Java
d. Créer une base de données
Réponse : b)
Explication : Slide 6 - Introspection : Mécanisme permettant de déterminer d'une manière dynamique les
caractéristiques d'un Bean.
Q9. Quelle est la condition obligatoire pour un
JavaBean qui possède une partie graphique ?
a. Implémenter l'interface Serializable pour permettre la sauvegarde de son état
b. Implémenter l'interface Cloneable
c. Implémenter l'interface Comparable
d. Implémenter l'interface Runnable
Réponse : a)
Explication : Slide 8 - Les Beans devraient implémenter l'interface serializable : ceci est obligatoire pour les Beans qui
possèdent une partie graphique pour permettre la sauvegarde de leur état.
Q10. Sous quel format les JavaBeans sont-ils distribués
?
a. Fichier .class
b. Fichier .exe
c. Fichier d'archive .jar
d. Fichier .dll
Réponse : c)
Explication : Slide 6 - Distribution sous forme de fichier d'archive .jar. Un fichier .jar contient des classes, des beans, des
icônes, des sons, des images, un fichier manifeste, etc.
SECTION 3 : LES PROPRIÉTÉS (Slides
9-12)
Q11. Qu'est-ce qui distingue un attribut d'une propriété
JavaBean ?
a. La visibilité (public vs private)
b. La présence d'accesseurs et de modificateurs + respect du design pattern de nommage
c. Le type de données
d. La localisation dans la classe
Réponse : b)
Explication : Slide 9 - Ce qui distingue un attribut d'une propriété : La présence d'accesseurs et de modificateurs et le
respect d'un design pattern sur le nommage.
Q12. Combien de catégories de propriétés existent dans
JavaBeans ?
a. 2 catégories
b. 3 catégories
c. 4 catégories : simples, indexées, liées et liées avec contraintes
d. 5 catégories
Réponse : c)
Explication : Slide 9 - Il existe 4 catégories de propriétés : Propriétés simples, propriétés indexées, propriétés liées et
propriétés liées avec contraintes.
Q13. Quel est le nom standard pour une méthode de
lecture d'une propriété ?
a. readXxx()
b. getXxx() ou isXxx() pour les booléens
c. fetchXxx()
d. loadXxx()
Réponse : b)
Explication : Slide 10 - Méthode de lecture = « getter » ou « accesseur » (« get »+ nom propriété avec 1ière lettre en
majuscule). « is » peut être utilisé pour les booléens.
Q14. Quelle est la caractéristique d'une propriété
indexée ?
a. Elle ne peut avoir qu'une seule valeur
b. Elle possède plusieurs valeurs stockées dans un tableau
c. Elle est toujours liée à une autre propriété
d. Elle est obligatoirement sérialisée
Réponse : b)
Explication : Slide 11 - Les propriétés indexées (indexed properties) : Ce sont des propriétés qui possèdent plusieurs
valeurs stockées dans un tableau.
Q15. Qu'est-ce qu'une propriété liée (bound property) ?
a. Une propriété qui dépend d'une autre
b. Une propriété qui peut informer d'autres composants du changement de sa valeur
c. Une propriété sauvegardée automatiquement
d. Une propriété non modifiable
Réponse : b)
Explication : Slide 12 - Les propriétés liées permettent d'informer d'autres composants du changement de valeur.
Changer JavaBean1 provoque un changement du JavaBean2.
SECTION 4 : PROPRIÉTÉS LIÉES ET
CONSTRAINED (Slides 13-17)
Q16. Quel est le rôle de la classe
PropertyChangeSupport ?
a. Valider les modifications de propriétés
b. Stocker les abonnés et les avertir des changements
c. Sérialiser les propriétés
d. Créer des fichiers de sauvegarde
Réponse : b)
Explication : Slide 13 - PropertyChangeSupport stocke les abonnés et les avertir. Elle définit des méthodes pour
ajouter/supprimer des écouteurs et envoyer des notifications.
Q17. Quel est le nom de la méthode pour s'abonner aux
changements d'une propriété liée ?
a. subscribePropertyChange()
b. onPropertyChange()
c. addPropertyChangeListener()
d. observePropertyChange()
Réponse : c)
Explication : Slide 13 - Pour s'abonner : addPropertyChangeListener(PropertyChangeListener l). Pour se désabonner :
removePropertyChangeListener(PropertyChangeListener l).
Q18. Quelle interface doit implémenter un Bean qui
souhaite être abonné aux changements ?
a. ChangeListener
b. PropertyChangeListener
c. ObserverListener
d. EventListener
Réponse : b)
Explication : Slide 13 - L'abonné doit implémenter l'interface PropertyChangeListener et sa méthode
propertyChange(PropertyChangeEvent evt).
Q19. Qu'est-ce qu'une propriété liée avec contraintes
(constrained property) ?
a. Une propriété dont le nom ne peut pas changer
b. Similaire aux propriétés liées mais permettant la gestion du droit de « veto »
c. Une propriété qui ne peut pas être modifiée
d. Une propriété dépendante d'une classe parent
Réponse : b)
Explication : Slide 17 - Les constrained properties permettent la gestion du droit de « veto » : Un Bean externe peut
valider ou empêcher une modification.
Q20. Quelle exception est levée lorsqu'une constrained
property est rejetée ?
a. ModificationException
b. VetoException
c. PropertyVetoException
d. ConstraintException
Réponse : c)
Explication : Slide 17 - Utiliser PropertyVetoException dans la méthode setUnePropriete(String s) throws
PropertyVetoException .
SECTION 5 : ÉVÉNEMENTS,
INTROSPECTION ET PERSISTANCE
(Slides 23-31)
Q21. Qu'est-ce qu'un "Listener" ou "écouteur" dans les
JavaBeans ?
a. Un Bean qui contrôle d'autres Beans
b. Un composant qui souhaite être informé des événements d'un Bean source
c. Une classe abstraite d'interface graphique
d. Un gestionnaire de mémoire
Réponse : b)
Explication : Slide 23 - Un Bean est la source et les autres composants qui souhaitent être informés sont nommés «
Listeners » ou « écouteurs ».
Q22. Quel est le pattern de nommage pour les méthodes
d'enregistrement d'écouteurs ?
a. registerXxxListener(XXXListener li)
b. addXxxListener(XXXListener li) et removeXxxListener(XXXListener li)
c. subscribeXxx(XXXListener li)
d. observeXxx(XXXListener li)
Réponse : b)
Explication : Slide 23 - Les écouteurs s'enregistrent en appelant addXXXListener(XXXListener li) pour enregistrer et
removeXXXListener(XXXListener li) pour enlever.
Q23. Qu'est-ce que la classe Introspector et quel est son
rôle ?
a. Afficher l'interface graphique du Bean
b. Standardiser la recherche des propriétés, méthodes et événements du Bean
c. Créer une base de données des Beans
d. Compiler les fichiers Java
Réponse : b)
Explication : Slide 24 - La classe [Link] standardise la recherche des propriétés, méthodes et
événements du Bean. Elle retourne un objet BeanInfo.
Q24. Qu'est-ce que la classe BeanInfo et à quoi sert-elle
?
a. Un fichier de configuration XML
b. Une classe qui contient des informations sur un Bean et possède plusieurs méthodes pour les obtenir
c. Un gestionnaire de propriétés
d. Une interface d'affichage
Réponse : b)
Explication : Slide 26 - BeanInfo contient des informations sur un Bean et possède plusieurs méthodes :
getPropertyDescriptors(), getMethodDescriptors(), getEventSetDescriptors().
Q25. Quel est l'objectif principal de la persistance dans
JavaBeans ?
a. Améliorer les performances
b. Sauvegarder l'état actif d'un Bean sans utiliser de SGBD
c. Créer une copie du Bean
d. Compiler le Bean
Réponse : b)
Explication : Slide 29 - La persistance permet à un Bean de sauvegarder son état actif. La sérialisation est le support de
la persistance pour sauvegarder dans des fichiers (.ser).
Q26. Quel mot-clé Java permet de marquer un attribut
pour qu'il ne soit pas sérialisé ?
a. volatile
b. synchronized
c. transient
d. final
Réponse : c)
Explication : Slide 29 - Utiliser « transient » pour exclure des attributs de la sérialisation. Exemple : private transient
String password (password ne sera pas sauvegardé).
Q27. Comment instancier un JavaBean sérialisé à partir
d'un fichier ?
a. MonBean MB = new MonBean();
b. MonBean MB = (MonBean)[Link](CL,"[Link]");
c. MonBean MB = [Link]("[Link]");
d. Impossible, il faut utiliser un fichier XML
Réponse : b)
Explication : Slide 31 - Pour instancier un JavaBean sérialisé : utiliser [Link](ClassLoader, String) en passant
le chemin du fichier .ser.
Q28. Quel est le rôle des classes ObjectOutputStream et
ObjectInputStream ?
a. Créer des fichiers de configuration
b. Gérer les connexions réseau
c. Sérialiser et dé-sérialiser des objets respectivement
d. Compiler du code Java
Réponse : c)
Explication : Slide 30 - ObjectOutputStream sérialise un objet ou un graphe d'objets. ObjectInputStream dé-sérialise un
objet précédemment sérialisé.
SECTION 6 : CONCEPTS AVANCÉS
Q29. Quel contenu peut être inclus dans un fichier .jar
pour un JavaBean ?
a. Uniquement les fichiers .class du Bean
b. Classes, prototypes sérialisés, fichiers help HTML, icônes, sons, images et fichier manifeste
c. Uniquement les fichiers de configuration
d. Uniquement les fichiers .ser
Réponse : b)
Explication : Slide 28 - Un fichier .jar contient : classes, prototypes sérialisés de Beans (.ser), fichier help HTML, icônes
(fichier .icon au format gif), sons, images, etc.
Q30. Quel est l'objectif d'un fichier manifeste (manifest)
pour un JavaBean ?
a. Lister toutes les classes disponibles
b. Définir les propriétés du Bean
c. Déclarer que certaines classes du fichier .jar sont des Beans avec le flag "Java-Bean: True"
d. Créer une base de données
Réponse : c)
Explication : Slide 28 - Pour définir un Bean dans le manifeste : Name: [Link] et Java-Bean: True. La création
se fait avec : jar −cfm [Link] [Link] [Link]
GRILLE DE CORRECTION
Question Réponse Difficulté
Q1 b Facile
Q2 b Facile
Q3 b Facile
Q4 b Facile
Q5 b Facile
Q6 b Facile
Q7 c Moyen
Question Réponse Difficulté
Q8 b Moyen
Q9 a Moyen
Q10 c Facile
Q11 b Moyen
Q12 c Facile
Q13 b Moyen
Q14 b Facile
Q15 b Moyen
Q16 b Moyen
Q17 c Facile
Q18 b Moyen
Q19 b Moyen
Q20 c Moyen
Q21 b Facile
Q22 b Moyen
Q23 b Moyen
Q24 b Moyen
Q25 b Moyen
Q26 c Moyen
Q27 b Difficile
Q28 c Facile
Q29 b Moyen
Q30 c Difficile
NOTATION
27-30/30 : Excellent
21-26/30 : Très Bien
15-20/30 : Bien
8-14/30 : À revoir
0-7/30 : Relire le chapitre
Bon courage !
Crédits : Basé sur le cours "Le modèle à composants de SUN (JavaBeans)" - Mme KEDJAR Saâdia