This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
2015_2016:s3:concprogobjet:td:td4 [2015/10/26 08:59] blay [TD Réutilisation] |
2015_2016:s3:concprogobjet:td:td4 [2015/10/27 09:14] blay [TD Réutilisation] |
||
---|---|---|---|
Line 8: | Line 8: | ||
A la fin du TD, se trouvent des ressources (codes entre autre) indispensables à la réalisation de ce TD. | A la fin du TD, se trouvent des ressources (codes entre autre) indispensables à la réalisation de ce TD. | ||
- | **Une classe de Tests vous ai donnée avec les interfaces associées que vous devez implémenter pour passer le test.** | + | |
<note important>Ce TD est un peu moins guidé que les précédents. Peu à peu vous devez pouvoir lire un énoncé et construire seul votre solution. | <note important>Ce TD est un peu moins guidé que les précédents. Peu à peu vous devez pouvoir lire un énoncé et construire seul votre solution. | ||
Line 14: | Line 14: | ||
+ | <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 "//ReseauSocial//" qui implémente //ReseauSocialInterface//. | ||
+ | |||
+ | {{:2015_2016:s3:concprogobjet:td:pourlestests.zip|Archive contenant la classe de test et les interfaces à implémenter pour faire passer les tests. | ||
+ | |||
+ | Vous n'avez que deux interfaces à implémenter : ''ReseauSocialInterface'' et ''MembreInterface''. | ||
+ | Ce qui suit est là pour vous aider. }} | ||
+ | </box> | ||
+ | |||
+ | La figure suivante visualise les interfaces et classes fournies pour les tests. | ||
+ | |||
+ | {{ :2015_2016:s3:concprogobjet:td:reseausocialcore.jpg?direct&300 |}} | ||
===== Réutilisation par composition et héritage ===== | ===== Réutilisation par composition et héritage ===== | ||
- | <note tip>Un réseau social peut être vu comme un graphe. | + | |
- | Rechercher des relations entre ses membres, revient à parcourir le graphe.</note> | + | |
Line 24: | Line 36: | ||
* un membre a un nom et un age et une description; | * un membre a un nom et un age 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. | + | * 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 : ''membresEnRelationAuRang(MembreInterface de, int rang)'') |
- | * une relation est soit familiale soit professionnelle soit amicale | + | |
- | * On veut savoir toutes les personnes qui font partie de notre cercle familial, professionnel ou amical : b est dans le cercle familiale de a s'il existe un chemin de relations familiales entre a et b. | + | |
* On veut pouvoir calculer la distance entre 2 personnes, en choisissant la plus courte distance : | * On veut pouvoir calculer la distance entre 2 personnes, en choisissant la plus courte distance : | ||
- | * a --1-> b --5-> c et a --2-> d --5-> c : la distance est de 6 entre a et c; | + | * a --1-> b --5-> c et a --2-> d --5-> c : la distance est de 6 entre a et c;(Méthode : ''distance(MembreInterface de, MembreInterface a)'') |
+ | |||
+ | D'autres méthodes doivent être définies, il suffit de lire l'interface "Reseau Social". | ||
+ | |||
+ | |||
+ | <note tip>Un réseau social peut être vu comme un graphe. | ||
+ | Rechercher des relations entre ses membres, revient à parcourir le graphe. | ||
+ | |||
+ | Pour vous aider (et c'est aussi obligatoire ;-) ) vous utiliserez les classes suivantes,{{:2015_2016:s3:concprogobjet:td:pourlesgraphes.zip| classes pour traiter des graphes.}}, en particulier la classe ''GrapheSimple'' et la classe ''ParcoursSimple'' pour calculer des chemins. Ces codes sont basés dans le packahe GrapheX sur des codes fournis par Polytechnique. | ||
+ | |||
+ | La figure suivante visualise une part de ces codes. | ||
+ | {{ :2015_2016:s3:concprogobjet:td:graphessimple.jpg?direct&300 |}} | ||
+ | |||
+ | |||
+ | </note> | ||
+ | {{ :2015_2016:s3:concprogobjet:td:graphex.jpg?link&300 |}} | ||
===== Réutilisation par adaptation ===== | ===== Réutilisation par adaptation ===== | ||