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
Last revision Both sides next revision
2017_2018:s3:concprogobjet:td:td6 [2017/11/12 09:49]
blay [Présentation générale]
2017_2018:s3:concprogobjet:td:td6 [2017/11/12 19:12]
blay
Line 44: Line 44:
 ===== Réutilisation par composition et héritage ===== ===== Réutilisation par composition et héritage =====
  
-  - Construire ​un réseau social :  +  - 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 66: Line 66:
  
 {{ :​2015_2016:​s3:​concprogobjet:​td:​graphex.jpg?​link&​300 |}} {{ :​2015_2016:​s3:​concprogobjet:​td:​graphex.jpg?​link&​300 |}}
 +<note warning>​Cette partie du TD doit être terminée lors de la 1e séance. Si ce n'est pas le cas, vous devez travailler en dehors des heures du TD.</​note>​
 ===== Réutilisation par adaptation ===== ===== Réutilisation par adaptation =====
  
-  - On veut intégrer dans notre réseau social, des membres du réseau ''​facebookGhost'' ​dont vous avez déjà récupéré un "​bouchon/​proxy" ​en récupérant ​les tests+  - 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 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; +        * 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 "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.  +        * 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));  
-        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 :  +             ​* ​le nom du "​user"​ dans le reseau facebookGhost (name) devient le nom du membre dans notre réseau (nom)  
-             ​* Hercule est connu du réseau FG et se déclare comme membre de notre réseau (''​addMember("​Hercule",​ true)''​) +             ​* ​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))  ​
-                  * On récupère du réseau FG son nom. +             ​* 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 sa famille (Zeus, Alcmène) et ses amis (Admète) +                 ​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 :  
-                  * Seuls Zeus et Admete sont connus de notre réseau; la relation de Hercule vers Zeus est ajoutée avec une force de 2, celle entre Hercule et Admete est ajoutée avec une force de 3; nous mettons également à jour les relations inverses.+       ​Exemple :  ​Hercule est connu du réseau FG et se déclare comme membre de notre réseau (''​addMember("​Hercule",​ true)''​) 
 +                    * 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.txt · Last modified: 2017/11/13 08:30 by blay