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 :

  1. pour un participant : s’inscrire,
  2. pour l’organisateur :

                                       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

 

 

Représentation UML

 

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)
Ajoute un élément à la collection d’objets. Pour Set si l’objet existe déjà la méthode renvoie false et l’objet n’est pas ajouté.


 

void

clear()
Enlève tous les éléments de la collection.

boolean

contains(Object o)
Renvoie true si la collection contient l’élément o.

boolean

isEmpty()
Renvoie true si la collection est vide.

Iterator

iterator()
Renvoie un objet de type iterator qui permet de parcourir tous les éléments. Pour List les éléments sont parcouru dans l’ordre. Pour Set l’ordre n’est pas important (il peut être différent à chaque fois).

boolean

remove(Object o)
Enlève l’objet o de la collection.

int

size()
Renvoie le nombre d’élément de la collection.

Object[]

toArray()
Renvoie un tableau d’objets contenant tous les éléments de la collection. Pour List les éléments sont stockés dans l’ordre. Pour Set l’ordre n’est pas important (il peut être différent à chaque fois).

 

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 class HashTreeSetEx{

 

public static void main (String args[]){

 

 

Set set = new HashSet();
set.add("un");
set.add("deux");
set.add("trois");
set.add("quatre");
set.add("un");
System.out.println(set);
Set sortedSet = new TreeSet(set);
System.out.println(sortedSet);

 

}

 

}

 

 

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.