UFR de Mathématiques et d'Informatique |
IUP 1, DEUG 2, 2002/2003 |
Programmation orientée objet |
Travaux dirigés |
Séances 8 et 9, avril |
BigLyumineBrother
et son graphe de connaissances
BigLyumineBrother souhaite enrichir sa base de données
BigLyumineBrother souhaite être au courant
de qui connaît qui parmi les Lyumines.
En conséquence, il vous demande de lui écrire,
pour utilisation dans son département
de gestion des données sur les Lyumines,
une classe GrapheDesConnaissances.
En particulier, la méthode toString
lui permettra d'obtenir une description ``texte''
du réseau de connaissances des Lyumines.
Un exemple de test est le suivant :
public class TestGrapheDesConnaissances {
/* test de la classe GrapheDesConnaissances : */
public static void main (String args []) {
GrapheDesConnaissances graphe = new GrapheDesConnaissances() ;
graphe.ajouterNoeud("LyuminePapa") ;
graphe.ajouterNoeud("LyumineMama") ;
System.out.println(graphe.contient("LyuminePapa")) ;
System.out.println(graphe.contient("LyumineMama")) ;
System.out.println(graphe.contient("Igor")) ;
graphe.ajouterConnaissance("LyuminePapa", "LyumineMama") ;
System.out.println(graphe.connaissance("LyuminePapa", "LyumineMama")) ;
System.out.println(graphe.connaissance("LyuminePapa", "Igor")) ;
System.out.println(graphe) ;
}
}
Réalisation
Il s'agit donc d'écrire une classe GrapheDesConnaissances
avec pour méthodes publiques :
- GrapheDesConnaissances () : construit un graphe vide.
- void ajouterNoeud(String nom)
- boolean contient(String nom) :
teste si le graphe contient un noeud de label nom.
- void ajouterConnaissance(String from, String to) :
ajoute un arc du noeud de label from vers le noeud
de label to.
- boolean connaissance(String from, String to)
teste si le graphe contient un arc de from vers to.
- String toString() : description du graphe sous forme
de chaine de caractères.
Pour l'implantation de cette classe,
vous choisissez de représenter le graphe
sous la forme d'une liste de noeuds,
où chaque noeud contient :
-
le nom d'un Lyumine ;
- une liste des noms de ses connaissances.
Cela implique donc de définir la classe Noeud.
Indication :
pour simplifier l'écriture de la classe,
on pourra définir une méthode privée
Noeud chercherNoeud(String nom)
,
qui retournera le noeud de label nom,
si nom est contenu dans le graphe,
et une référence nulle sinon.
This document was translated from LATEX by
HEVEA.