Академический Документы
Профессиональный Документы
Культура Документы
abdelazziz Hibaoui, qui grce lui nous avons acquis de nouvelles comptences en programmation objet, dveloppement Java ; comptences indispensables lors de la conception de ce projet.
Dans le cadre de notre projet de fin de module : Programmation Orient Objet il nous a fallu dvelopper une application permettant de faire la simulation de l'excution d'un algorithme de construction d'un arbre couvrant . cette fin, Nous avons tout dabord ralis une application permettant de reprsenter un graphe laide doutils graphiques. Par la suite, nous avons recherchs plusieurs algorithmes sur internet afin de dterminer quel est lalgorithme le plus apte rpondre au problme de la construction un arbre dans un graphe. Dans un premier temps, nous prsenterons lanalyse du projet, les objectifs et le cahier des charges initial. Ensuite nous dfinirons comment nous avons organiss notre travail, et enfin nous prsentons lalgorithme que nous avons choisit
Diagramme de classe : Voici notre digramme de classe qui contient les classes principales utiliss dans ce projet (Graph, Vertex, Edge, ToGML, Dessiner).
Digramme dtats/Transition :
2. Organisation du projet :
2.1) Organisation du travail :
Llaboration de notre projet sest effectue suivant le schma suivant : Nous avons dans un premier temps procd une rflexion sur la faon de crer lapplication, par exemple de quelle faon nous devions modliser un graphe. Nous nous sommes galement documents sur les algorithmes de construction dun arbre couvrant qui pourraient nous aider rpondre la problmatique. Nous avons en parallle procd lanalyse du sujet afin de concevoir les diagrammes UML. Enfin nous avons commenc la programmation de notre application en nous aidant des diffrents concepts appris au concept appris au cours de notre formation concernant la programmation objet en java. Concernant la rpartition des taches, nous avons bien videmment essay de nous partager au mieux le travail. Cela sest concrtis tout dabord par une sparation intelligente des taches, que ce soit pendant la phase danalyse que pendant la phase de programmation, en faite la rpartition tait encore plus pousse : par exemple, un binme pouvaient travailler sur un algorithme pendant que les autres soccupaient de la programmation graphique et ainsi de suite .Cest de cette manire que nous avons optimis notre organisation, car chaque membre du groupe pouvait travailler sur un module sans bloquer ses camarades. En parallle, il tait important de nous concerter rgulirement afin de faire le point sur le travail accompli, et ainsi dassurer un maximum de cohsion. Nous avons en outre emprunt quelques principes dorganisation la mthode de travail appele extrme programming . Une Communication informelle permanente entre membre de lquipe. La mise en place de tests unitaires, symbolise par nos jeux dessais, qui ont pour objectif de vrifier la validit des algorithmes tout au long du processus de dveloppement.
Une appropriation collective du groupe : chaque dveloppeur peut faire des modifications dans toutes les portions du code, mme celles quil na pas crites.
lenvironnement de dveloppement intgr Netbeans qui permet de crer des projets en langage Java.
Lalgorithme de Kruskal est un algorithme de recherche darbre recouvrant de poids minimum(ARPM) ou arbre couvrant minimum(ACM) dans un graphe connexe non-orient.
w est une fonction qui associe chaque arte du graphe G une valeur qui est son poids. Les fonctions ENSEMBLE-REPRSENTATIF et UNION sont les deux oprations d'une structureUnion-Find (qui, respectivement, renvoie un lment reprsentatif d'un ensemble et fusionne deux ensembles). La complexit de l'algorithme est (A log S) avec A le nombre d'artes et S le nombre de sommets du graphe G. On remarquera que lors du droulement de l'algorithme, l'ACM n'est pas ncessairement connexe, il ne le sera qu' la fin.
si la liste ne contient plus d'lment, on a termin et l'algorithme s'arrte si les deux points de l'arc ont dj t visits, on ignore l'arc et on examine les arcs suivants
sinon, on ajoute l'arc l'arbre en construction, on ajoute les points de l'arc la liste des points visits et on examine les arcs suivants .
10
Llaboration de ce projet, autant que le rsultat final, est dans lensemble une russite. La problmatique du sujet a t compltement rsolue avec succs grce lalgorithme de Kruskal. Cependant, certains objectifs nont pas pus tre traits faute de temps. Au cours de lanalyse et de la programmation nous avons rgulirement remis en question nos travaux en nous demandant si les solutions trouves t optimales, et si elles ne pourraient pas tre amliores. Nous avons ainsi conu une application rpondant aux objectifs que nous nous tions fixs, et respectant les concepts de programmation vus durant le cours de la P.O.O Au final, ce projet fut un travail vraiment enrichissant, tant par lexprience quil nous a apport concernant la conduite dun projet, de la gestion du travail en groupe, que par les comptences nouvelles quil nous a apport en matire de programmation.
1)Webographie :
THEORIE DES GRAPHES
http://pcaboche.developpez.com/article/prolog/algo-graphes/?page=page_3#L4.1 Prsentation de lalgorithme de Kruskal http://www.techno-science.net/?onglet=glossaire&definition=6472 http://fr.wikipedia.org/wiki/Algorithme_de_kruskal#Description_du_probl.C3.A8me
11
Programmation Java http://raphaello.univ-fcomte.fr/Ig/Java2D/Java2D.htm Information sur la classe Graphics2D permettant de dessiner en Java http://java.sun.com/docs/books/tutorial/uiswing/index.html Exemples dutilisations des lments graphiques Swing http://java.developpez.com Communaut de dveloppeurs java Gnrique : http://www.wikipedia.com Encyclopdie collaborative en ligne 2) Capture dcran : Voici quelques captures dcran de lapplication : La Fentre daccueil de notre interface :
On choisit par exemple le menu Fichier, qui ouvre un menu droulant ceci nous donne la possibilit de choisir entre : Nouveau (crer un nouveau graphe) Ouvrir (importer un graphe en format GML)
12
13
14
On choisissant Ouvrir :
Enregistrer :
15
a donne a :
16
17