User Tools

Site Tools


2017_2018:s3:concprogobjet:td:td6

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2017_2018:s3:concprogobjet:td:td6 [2017/11/12 12:17]
blay [Réutilisation par adaptation]
2017_2018:s3:concprogobjet:td:td6 [2017/11/13 08:30] (current)
blay [Présentation générale]
Line 20: Line 20:
 <box round rgb(135,​206,​250) rgb(0,​191,​255) 75%|**Votre défi** >  <box round rgb(135,​206,​250) rgb(0,​191,​255) 75%|**Votre défi** > 
  
-Faire passer ​le test avec un code propre et sans le modifier si ce n'est la référence à la classe "//​SocialNetwork//"​ qui implémente //​SocialNetworkInterface//​.+Faire passer ​les tests sans les modifier si ce n'est la référence à la classe "//​SocialNetwork//"​ qui implémente //​SocialNetworkInterface// ​et en développant un code propre.
  
 Voici les archives : //((Tips : Prenez chaque archive, déposer la sous Eclipse, dezipper, refresh))// Voici les archives : //((Tips : Prenez chaque archive, déposer la sous Eclipse, dezipper, refresh))//
Line 45: Line 45:
  
   - Vous devez construire un réseau social dont les spécifications sont les suivantes (cf. Interface //​SocialNetworkInterface//​): ​   - Vous devez construire un réseau social dont les spécifications sont les suivantes (cf. Interface //​SocialNetworkInterface//​): ​
-       * un membre a un nom, un age et une description;​+       * un membre a un nom, un âge et une description;​
        * Un membre a est en relation avec membre b avec une force entre 1 et 5 : 5 faible, 1 très forte. a peut se considérer en relation avec b à la force 1 et b ne pas se considérer en relation avec a!        * Un membre a est en relation avec membre b avec une force entre 1 et 5 : 5 faible, 1 très forte. a peut se considérer en relation avec b à la force 1 et b ne pas se considérer en relation avec a!
        * On veut pouvoir savoir quels sont les membres en relation avec un membre au rang X : exemple : a -> b -> c -> a : a est en relation avec b au rang 1; a est en relation avec c au rang 2; c est relation avec a au rang 1; etc. (Méthode : ''​relateToRank(MemberInterface member, int rank)''​) ​        * On veut pouvoir savoir quels sont les membres en relation avec un membre au rang X : exemple : a -> b -> c -> a : a est en relation avec b au rang 1; a est en relation avec c au rang 2; c est relation avec a au rang 1; etc. (Méthode : ''​relateToRank(MemberInterface member, int rank)''​) ​
Line 71: Line 71:
   - On veut intégrer dans notre réseau social, des membres du réseau ''​facebookGhost''​. Lisez bien toute la suite avant de commencer.   - On veut intégrer dans notre réseau social, des membres du réseau ''​facebookGhost''​. Lisez bien toute la suite avant de commencer.
         * Vous avez déjà récupéré un "​bouchon/​proxy"​. En effet, les classes du package //​facebookGhost//​ s'​inspirent très fortement de l'​interface fournie par Facebook. En cela, elles se comportent comme un "​proxy"​ simplifié qui pourrait être remplacé par le véritable reseau Facebook à terme((Pour cela, il faudrait quand même mettre à jour ce code avec les dernières évolutions de l'​interface et le compléter... donc il reste "un peu" de travail)). ).         * Vous avez déjà récupéré un "​bouchon/​proxy"​. En effet, les classes du package //​facebookGhost//​ s'​inspirent très fortement de l'​interface fournie par Facebook. En cela, elles se comportent comme un "​proxy"​ simplifié qui pourrait être remplacé par le véritable reseau Facebook à terme((Pour cela, il faudrait quand même mettre à jour ce code avec les dernières évolutions de l'​interface et le compléter... donc il reste "un peu" de travail)). ).
-        * on veut ajouter dans notre réseau des membres qui correspondent à des "​users"​ du reseau ​ facebookGhost (FG); le nom du "​user"​ dans le reseau facebookGhost (name) devient le nom du membre dans notre réseau (nom) et on garde la référence sur le "​User"​ pour avoir toujours une description à jour qui correspond au profil; +        * On veut ajouter dans notre réseau des membres qui correspondent à des "​users"​ du reseau ​ facebookGhost (FG). Pour cela, il suffit de créer le membre en déclarant qu'il existe dans un autre réseau((Comme vous le feriez en vous demandant à vous connecter par votre compte facebook par exemple));  
-        * on veut "récupérer" dans notre réseau, les relations qui correspondent soit à des relations familiales, soit à des relations d'​amitiés dans le réseau FG lorsque les Users ciblés sont connus de notre réseau, c'est à dire que nous avons déjà un membre de même nom. Par défaut, une relation de famille correspond à une relation de force 2 dans notre réseau et celle d'​amitié ont une force 3.  +             ​* ​le nom du "​user"​ dans le reseau facebookGhost (name) devient le nom du membre dans notre réseau (nom)  
-        quand on ajoute dans notre réseau un membre correspondant au reseau ​FG, on recherche parmi ses relations directes dans FG s'il existe des users connus de notre propre réseau et on lui ajoute les relations si elles n'​existaient pas, exemples :  +             ​* ​on garde la référence sur le "​User"​ pour avoir toujours une description à jour qui correspond au profil, ainsi notre réseau ne contient pas la description du membre mais à la demande de description,​ on va la chercher dans le réseau FG ((En résumé, si vous modifiez votre profil dans facebook, vous n'avez pas besoin de de mettre à jour celle-ci dans l'​autre réseau))  ​
-             ​* Hercule est connu du réseau FG et se déclare comme membre de notre réseau (''​addMember("​Hercule",​ true)''​) +             ​* on "récupère" dans notre réseau, les relations qui correspondent soit à des relations familiales, soit à des relations d'​amitiés dans le réseau FG **lorsque les users ciblés sont connus de notre réseau**, c'est à dire que nous avons déjà un membre de même nom. Par défaut, une relation de famille correspond à une relation de force 2 dans notre réseau et celle d'​amitié ont une force 3.  
-                  * On récupère du réseau FG son nom. +                 ​Quand on ajoute dans notre réseau un membre correspondant au réseau ​FG, on recherche parmi ses relations directes dans FG s'il existe des users connus de notre propre réseau et on lui ajoute les relations si elles n'​existaient pas, exemples :  
-                  * On récupère sa famille (Zeus, Alcmène) et ses amis (Admète) +       ​Exemple :  ​Hercule est connu du réseau FG et se déclare comme membre de notre réseau (''​addMember("​Hercule",​ true)''​) 
-                  * Seuls Zeus et Admete sont connus de notre réseau; la relation de Hercule vers Zeus est ajoutée avec une force de 2 (lien de famille), celle entre Hercule et Admete est ajoutée avec une force de 3 (lien d'​amitié);​ nous mettons également à jour les relations inverses avec la même force.+                    * On récupère du réseau FG son nom. 
 +                    * On récupère sa famille (Zeus, Alcmène) et ses amis (Admète) 
 +                    * Seuls Zeus et Admete sont connus de notre réseau; la relation de Hercule vers Zeus est ajoutée avec une force de 2 (lien de famille), celle entre Hercule et Admete est ajoutée avec une force de 3 (lien d'​amitié);​ nous mettons également à jour les relations inverses avec la même force.
  
 ===== Réutilisation par observation ===== ===== Réutilisation par observation =====
  
-Chaque fois qu'une nouvelle relation est ajoutée dans FGon vérifie ​si les "​users"​ mis en relation existent dans notre réseau et si c'est le cas on crée les relations correspondantes dans notre réseau. ​+Le réseau FG évolue. De nouvelles relations sont régulièrement créées et notre propre réseau peut alors devenir obsolète si les membres impliqués font partie de notre réseau et que nous n'​enregistrons pas ces changements de relations. ​ Mais bien sûr, il est impossible de modifier les codes du réseau FG.... 
 +  
 +Heureusement,​ le réseau FG est observable. On peut donc demander à être notifiés des modifications du réseau FG!  
 +Chaque fois qu'une nouvelle relation est ajoutée dans FG on veut vérifier ​si les "​users"​ mis en relation existent dans notre réseau et si c'est le cas on crée les relations correspondantes dans notre réseau. ​
  
-Pour cela nous utilisons le fait qu'un réseau FG est observable. ​Il suffit donc de déclarer notre réseau comme Observer du réseau FG et à chaque notification d'​ajout d'une relation, de mettre à jour notre propre réseau.+Il suffit donc de déclarer notre réseau comme Observer du réseau FG et à chaque notification d'​ajout d'une relation, de mettre à jour notre propre réseau ​si c'est nécessaire.
  
 <​html>​ <​html>​
2017_2018/s3/concprogobjet/td/td6.1510485475.txt.gz · Last modified: 2017/11/12 12:17 by blay