Vous devrez dans ce projet concevoir et développer une application qui permet la gestion d'un carnet d'adresses.
Vous produirez un programme écrit en Java utilisant uniquement des classes originales et les classes vues en cours. Un rapport d'activité y sera joint. Le travail sera fait en binôme ou trinôme, et devra être terminé avant le dimanche 25 octobre 2026 à 23h59.
La partie logicielle sera développée dès le départ à l'aide du serveur Gitea du département. Le rapport prendra la forme d'un fichier au format PDF joint aux sources.
Un contact représente les informations connues à propos d'une personne (ou entité) et comporte trois parties :
Le nom est un texte de longueur très variable. Il ne doit pas être vide, ne peut pas contenir de saut de ligne et doit contenir au moins une lettre ou un chiffre.
L'adresse mail est un texte de 254 octets au maximum (octets et pas caractères). Elle ne
doit pas être vide, ne peut pas contenir de caractères blancs et doit contenir le
caractère @.
Les étiquettes sont des qualificatifs qui s'appliquent à ce contact, comme client, 2023 ou europe. Elles sont choisies parmi une liste prédéfinie mais pas exhaustive. Le nombre d'étiquettes liées à un contact peut être 0, et n'a pas de limite supérieure mais devrait rarement dépasser la dizaine.
On partira du principe que le nombre de contacts gérés dans notre application peut facilement atteindre plusieurs centaines. Notez bien que ni le nom ni l'adresse mail ne sont uniques parmi les contacts.
Une liste de diffusion est un groupe de contacts constitué dans le but d'envoyer des messages à tous les membres de la liste à la fois. Cette liste n'est pas fixe mais déterminée dynamiquement en retenant seulement les contacts qui satisfont aux critères souhaités.
Chaque liste aura un nom unique, sous la forme d'un texte de 50 caractères maximum. Elle aura également un certain nombre (non nul) de critères pour ses contacts, qui ne peuvent prendre que deux formes :
L'utilisateur doit avoir accès aux opérations basiques (CRUD) sur les contacts, les étiquettes et les listes de diffusion. Il peut également placer l'adresse d'un contact dans le presse-papier (pour le coller dans un logiciel d'envoi de mail). Dans le cas d'une liste de diffusion, une action similaire doit copier les adresses de tous les contacts de la liste, séparés par des virgules. Vous pouvez pour cela avoir recours aux classes Clipboard et StringSelection.
Une partie importante de la note portera sur l'ergonomie de vos interfaces.
Les contacts et les listes de diffusion devant être préservés d'une session à une autre, un serveur de base de données vous servira à retenir les informations correspondantes.
Les problèmes liés à l'accès à cette base ne devront pas être seulement envoyés vers la sortie sur erreur. Vous devrez communiquer graphiquement avec l'utilisateur.
Les sources de votre projet (et pas les fichiers .class)
devront être disponibles à tout moment sur le serveur Gitea du département. Votre dépôt sera privé, nommé
obligatoirement SAE31_2026 et incluera Luc Hernandez (login :
hernand) et Benjamin Bordais (login : bordais) dans la
liste des collaborateurs. Le nombre de soumissions, leur date et l'équilibre entre leurs
auteurs influeront sur la note finale.
Pour chaque classe, vous prévoierez un fichier source. Suivez les
consignes habituelles
scrupuleusement. La définition de chaque classe et de chaque membre de classe sera
précédée d'un commentaire formaté pour permettre la génération de documentation technique
par l'outil javadoc (ceci est
un exemple de fichier source bien commenté).
Vous devrez respecter l'organisation du code vue au début de l'année. Toutes vos classes
appartiendront à un package. Un fichier Makefile (basé sur cet exemple) devra permettre la compilation de votre
projet et la création d'une archive jar, et un but factice nommé
run devra en permettre l'exécution. Transcrivez bien toutes les dépendances
entre vos fichiers dans les règles. Vérifiez également que l'archive soit exécutable sans
aucune autre dépendance que la présence d'une JVM (version 11 et plus).
Le rapport d'avancement prendra la forme d'un fichier PDF disponible avec les sources sur le serveur Gitea. Vous y inclurez au moins les éléments suivants (mais la liste n'est pas exhaustive) :
Soignez la présentation ! L'orthographe, la grammaire, les pages de garde, la table des matières, les en-tête et pieds de page ne sont pas en option...
Notez bien que le rapport ne doit pas contenir d'extrait du code source du projet, étant donné que le correcteur peut aller le consulter directement s'il en éprouve le besoin. N'hésitez pas en revanche à illustrer vos propos par des schémas. Ceux-ci peuvent être construits directement dans le logiciel de traitement de texte s'il le permet, ou dans un logiciel dédié, tel que Inkscape ou Draw (tous deux gratuits). Les diagrammes UML seront de préférence réalisés à l'aide de StarUML. Faites bien attention à ce que tous les diagrammes soient lisibles avec un facteur d'affichage de 100%.