Carnet d'adresses

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.

Contacts

Un contact représente les informations connues à propos d'une personne (ou entité) et comporte trois parties :

  • un nom
  • une adresse mail
  • des étiquettes

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.

Listes de diffusion

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 :

  • le contact doit avoir une certaine étiquette
  • le contact ne doit pas avoir une certaine étiquette

Fonctionnalités

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.

Serveur

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.

Sources

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).

Rapport

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) :

  • le nom des membres du groupe,
  • une introduction contenant une brève description du sujet (avec vos propres mots),
  • la description des fonctionnalités de votre programme, aidée de captures d'écran,
  • une présentation de la structure du programme, avec diagramme(s) de classes simplifié à l'appui,
  • une présentation des tables de la base de données, avec diagramme de classes complet à l'appui,
  • une explication, pour chaque écran, des améliorations ergonomiques que vous avez mises en œuvre,
  • une conclusion personnelle pour chaque auteur.

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%.

retour à la page d'accueil

retour au sommet