Gestion de
conférences
Objectifs : Héritage et utilisation et implémentation (implements) d’nterfaces.
A noter : A l’adresse http://java.sun.com/j2se/1.4.2/docs/api/, consulter la documentation sur les classes des API java.
On désire assurer la gestion des participants à une conférence internationale.
Les participants à cette conférence peuvent simplement assister aux diverses sessions, mais aussi être des conférenciers. Dans ce cas ils interviennent en tant qu'orateur dans une seule des sessions de la conférence.
Les sessions sont représentées par leur nom sous forme d'une chaîne de caractères. Pour chaque session, l’ordre de passage des orateurs est mémorisé.
Tous les participants et les conférenciers doivent s'inscrire. On connaît au moment de l'inscription si le participant est un conférencier ou non, mais le nom de la session peut être à ce moment encore indéterminé. Il se peut aussi qu'un conférencier change de session.
Dans tous les cas, un participant est représenté par un nom, un prénom, le nom de son organisation, éventuellement le nom de la session si c'est un conférencier, et son adresse.
Les fonctionnalités de l'application devront permettre de :
i. modifier la session d'un conférencier,
ii. éditer les étiquettes avec les adresses de tous les participants (pour leur envoyer le programme),
iii. éditer les étiquettes avec les adresses des conférenciers uniquement (pour les invitations),
iv. éditer la liste des participants à raison d'un participant par ligne, avec, si c'est un conférencier, le nom de sa session
Questions
1. Spécifier les classes (attributs et méthodes) et les relations entre ces classes (cardinalités)
2. Comment implémenter en java les relations ? Comment assurer leur consistance ?
3. Développer en java l’application
ANNEXE :
Les classes Java Collection
1) Java Collection
Les classes et interfaces dérivant de “Collection” permettent de gérer des groupes d’objets.
· L’interface Collection est un groupe d’objet qui peut contenir des doubles. |
· L’interface Set dérive de Collection en interdisant les doubles. |
· L’interface List dérive aussi de Collection. Elle permet les doubles et introduit une notion d’ordre (les objets ont tous un indice). |
· L’interface Map ne dérive ni de Set ni de Collection . Elle permet de ranger des objets repérés par une clé. |
Interface |
Classes implémentant l’interface |
|||
Set |
HashSet |
|
TreeSet |
|
List |
|
ArrayList |
|
LinkedList |
Map |
HashMap |
|
Treemap |
|
2) L’interface Set et l’interface List
Les classes implémentant l’interface Set se servent de la méthode equals() des objets pour vérifier qu’ils soient tous différents.
Les deux interfacent
définissent les méthodes suivantes. Pour chaque méthode on précise la différence
entre les deux interfaces.
boolean |
add(Object o) |
void |
clear() |
boolean |
contains(Object o) |
boolean |
isEmpty() |
Iterator |
iterator() |
boolean |
remove(Object o) |
int |
size() |
Object[] |
toArray() |
3) Les classes HashSet & TreeSet
Il y a deux implémentations de l’interface Set : HashSet et TreeSet. La classe
la plus utilisée est HashSet. Pour gérer l’ensemble de manière efficace, la
classe HashSet utilise la méthode hashCode() de la classe Objet. La plupart des
classes standard redéfinissent cette méthode. Il faudra faire de même avec vos
classes. La classe TreeSet est utile quand vous devez extraire les éléments
d’une collection de manière triée. Il est généralement plus rapide d’ajouter
les éléments à un HashSet et ensuite de le convertir en TreeSet pour les trier.
Exemple :
import
java.util.*; |
||
|
public static void main (String args[]){ |
|
|
|
Set set = new HashSet(); |
|
} |
|
} |
|
|
Ce programme écrit les deux collections suivantes :
[deux, un, quatre, trois]
[deux, quatre, trois, un]
L’élément dupliqué n’est présent qu’une fois et la seconde collection est triée par ordre alphabétique.