Braquelaire Tristan Sollaud Timothée IN-501-A1 SHOAL Projet de Réseau et Programmation Objet 2012 / 2013 Note de Synthe se
Sommaire I. Présentation générale :...1 A. La Connexion :... 1 B. L interface Principale :... 2 C. Les fonctionnalités :... 2 1) Poster un statut... 2 2) L ajout d ami... 3 3) Les News... 3 4) Ses propres statuts : «My Wall»... 3 5) Les statuts d un ami :... 3 6) La déconnexion... 4 7) La reconnexion... 4 II. La conception :...5 A. Les paquetages :... 5 B. Les classes métier... 5 C. Diagramme simplifié des classes métier... 6 III. Conclusion...7 Annexes : Captures d écran...8
Introduction : Le projet détaillé dans cette note s intitule Shoal. Il a été développé durant notre 5 ème semestre de Licence Informatique à l université de Bordeaux1. Il s agissait de réaliser un réseau social décentralisé en java. Shoal tire son nom de l anglais «Shoal of fich», qui signifie «Banc de poisson». I. Présentation générale : A. La Connexion : Le logiciel démarre directement sur un formulaire de connexion/création de compte utilisateur. Formulaire de connexion : compte inconnu. Les comptes sont enregistrés sous forme de fichier «< adresse mail >.profile», dans le répertoire d installation du logiciel. La sauvegarde du profile est enfaite une copie de l objet «Profile» sérialisé, que nous décrirons dans une autre partie. Comme on le remarque sur la capture d écran ci-dessus, nous avons géré les erreurs éventuelles. De plus, afin de limiter ces dernières, nous n autorisons l accès aux boutons «connection» et «create profile» que lorsque tous les champs sont renseignés de manière correcte. Cette vérification est réalisée grâce aux événements des composants graphiques et à l utilisation d expressions régulières. Une fois le compte désiré créée (ou connecté), l utilisateur connecté bascule directement sur l interface principale (et unique) du réseau social. Tristan Braquelaire, Timothée Sollaud 21/12/2012 1
B. L interface Principale : Depuis cette interface principale, toutes les fonctionnalités du réseau social sont accessibles : - Ajout de statut. - Ajout d ami. - Consultation des News. - Consultation de son «Wall». - Consultation du «Wall» de ses amis. - Deconnexion Wall d un ami (Cf. Annexes) Poster un statut Ajout d ami Liste d amis Mon Wall (Cf. Annexes) News Fenêtre principale de Shoal C. Les fonctionnalités : 1) Poster un statut Pour poster un statut, l utilisateur doit renseigner au moins un caractère dans le champ de saisie (JTextField) prévu à cet effet, afin de pouvoir cliquer sur le bouton «Post». Lorsque le bouton «Post» est cliqué, le texte entré, assorti de la date (type : Date) est ajouté à la liste des statuts du profile puis envoyé à l ensemble des amis connectés. Ceux-ci verront alors le nouveau statut s afficher en temps réel. Tristan Braquelaire, Timothée Sollaud 21/12/2012 2
2) L ajout d ami Pour ajouter un ami, il faut connaitre l adresse IP de celui-ci ainsi que le port d écoute qu il a choisi pour son application. On peut alors renseigner ces données dans le champ d ajout d ami de l interface principale, en respectant le format «ip:port». Si la chaine saisie est «valide», c est-à-dire, qu elle respecte ce format, en proposant des valeurs possibles d adresse IP et de port, le bouton «Add» se dégrise et peut être cliqué. Lorsque l utilisateur clique sur celui-ci, si le serveur demandé peut être contacté, alors le futur ami contacté reçoit une demande d ajout d ami, qui se symbolise par l affichage d une pop-up (JDialog). Pop-up d ajout d ami (JDialog) Notre «ami» peut alors choisir d accepter ou de refuser l ajout. S il refuse, aucun des deux protagonistes ne verra sa lise d ami modifiée. De plus, pour ne pas vexer le demandeur, nous n avons pas envoyé de retour du refus. En revanche, si le récepteur accepte l invitation, il nous ajoute à ses amis et récupère la liste de tous nos statuts qui a été envoyée avec la demande. Puis il nous envoi en retour une acceptation de la demande contenant la liste de tous ses statuts. Ainsi nous pouvons à notre tour, ajouter notre nouvel ami à notre liste d ami. 3) Les News Chaque fois qu on poste ou reçois un nouveau statut, celui-ci est ajouté à nos news. Les news contiennent donc tous les statuts de toutes nos connaissances. Elles sont visibles dans l onglet «News» de la fenêtre principale. 4) Ses propres statuts : «My Wall» On peut consulter uniquement sa liste de statuts, dans l onglet «My Wall». Chaque fois qu un statut est ajouté à la liste de statut de l utilisateur connecté, cela déclenche un événement «StatusAdded» qui permet de mettre à jour l interface graphique. Le profil de l utilisateur (son pseudo et son mail) est également affiché sur cet onglet. 5) Les statuts d un ami : Lorsque l utilisateur double clic dans sa liste d ami, sur le nom d un de ses amis, cela ouvre un nouvel onglet semblable à son propre mur, dans lequel on trouve le profile, ainsi que tous les statuts de l ami en question. Contrairement aux autres type d onglets, ceux dédiés aux amis peuvent être fermés à l aide du bouton «Close tab» qu ils présentent. Tristan Braquelaire, Timothée Sollaud 21/12/2012 3
6) La déconnexion Lors de la fermeture de la fenêtre principale, le programme se quitte proprement. C est-à-dire qu en plus de clore sa socket d écoute, il émet un signal de déconnexion à tous nos amis connectés, afin de les prévenir de notre déconnexion. 7) La reconnexion Lors de la reconnexion, on souhaite récupérer les statuts de nos amis. Pour cela, la phase de reconnexion avec nos amis s effectue en trois temps : Etape 1 On envoie la date du dernier statut qu on a reçu de l'ami Etape 2 L'ami reçoit. Il nous renvoie la date du dernier statut qu'il à de nous ainsi que la liste des statuts qu'il nous manquait L'ami est hors ligne, rien n'est reçu Etape 3 On récupère ses statuts et on lui renvoie ceux qu'il lui manquait de nous. Tristan Braquelaire, Timothée Sollaud 21/12/2012 4
II. La conception : A. Les paquetages : Afin de bien séparer les classes métiers des classes d application et des contrôleurs, nous avons décidé de diviser notre projet en trois paquetages : Shoal_dll Contient les classes métier Shoal_ctrl Contient les controles graphiques réutilisables Shoal Contient l application et les formulaires Organisation et relations entre les paquetages Les classes métiers sont autonomes et sont réunies dans le paquetage shoal_dll. Celles-ci sont utilisées par les contrôles utilisateurs qui sont rassemblés dans le paquetage shoal_ctrl. Le paquetage shoal représente quant à lui l application et s appuie donc sur les paquetages précédemment évoqués. B. Les classes métier Les classes métier regroupent les abstractions permettant de gérer les données du réseau social, ainsi que de celles permettant de gérer la communication réseau. Nous avons tout d abord dans la partie donnée du réseau social : - Profile, contenant les données de l utilisateur ainsi que ses listes de statuts, de news (équivalent à une liste de statut) et d ami. - Friend, contenant les données permettant d identifier un ami (mail, pseudo, ip, port d écoute), ainsi que la liste de ses statuts. - Status, contenant les donnée d un statut (auteur, date, message). Nous avons ensuite dans la partie gestion du réseau : - Server, permettant de rester à l écoute sur le port d écoute d un utilisateur donné. - Client, permettant d envoyer des requêtes sur le serveur d écoute d un ami donné. - Request, permettant de définir l ensemble des requêtes pouvant être demandées. Les classes InformationSystem permet de faire le lien entre le réseau et les objets du réseau social : elle gère les requêtes entrantes et sortantes, ainsi que la sauvegarde des données du profile. Tristan Braquelaire, Timothée Sollaud 21/12/2012 5
C. Diagramme simplifié des classes métier :Server PortListening ServerSocket :Client IP Port ClientSocket :Request +enumrequesttype Type Username Mail Port Content Fichier.profile :InformationSystem Username Mail Password Port : Profile LinkedList Friends LinkedList Status LinkedList News Autor Message : Statuts : Friend Username Mail IP Port LinkedList Status Légende : : Lien multiple : Lien unique : Lien temporaire Tristan Braquelaire, Timothée Sollaud 21/12/2012 6
III. Conclusion Ce projet était particulièrement intéressant car il nous a permis de mettre en pratique nos connaissances en programmation orientée objet et de découvrir la programmation réseau en java sur le sujet, très «à la mode», du réseau social. De plus, celui-ci était assez ouvert pour que nous puissions réaliser l application dans son intégralité. Nous avons donc fourni un travail d analyse complet, afin de concevoir l application dans son intégralité. Dans ces conditions, nous nous sommes rendu compte de la réalité des contraintes de temps. En effet, nous souhaitions implémenter davantage de fonctionnalités, telles que la suppression des amis, un chat privé entre amis, la possibilité de commenter les statuts de nos amis, ou encore le partage d autres type de statuts (photo commentée ou musique). Malheureusement, le temps nous a manqué pour implémenter tout cela. Tristan Braquelaire, Timothée Sollaud 21/12/2012 7
Annexes : Captures d e cran Onglet des News Onglet des statuts de l ami «Timothée» Onglet de son propre profile Tristan Braquelaire, Timothée Sollaud 21/12/2012 8