Vous êtes sur la page 1sur 15

Nous remercions notre professeur du module : Programmation Orient Objet M.

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

1. Etude et Analyse du Projet :


1.1) Objectifs initiaux :
Lobjectif initial de notre projet consiste concevoir une application permettant de construire un arbre couvrant dans un graphe en se basant sur un algorithme quelconque. Le point capital dans la ralisation de ce projet concerne la partie algorithmique. Notre application devra implmenter un algorithme capable de rpondre la problmatique, en optimisant au maximum ses performances (nombres de messages envoys, la dure de construction). Enfin, il sera ncessaire de concevoir une application permettant de crer un graphe, en plus elle devra proposer une interface simple et intuitive, ainsi quune aide interactive pour guider les utilisateurs novices.

1.2) Analyse UML :


Lanalyse UML nous a permis de dterminer les diffrents modules concevoir et les diffrentes fonctionnalits mettre en place. De plus, dfinir lavance le comportement de lapplication lors de lutilisation de telle ou telle fonctionnalit permet une programmation mieux organise. Diagramme de cas dutilisation : Reprsentation du systme Editeur de graphe :

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 :

1.3) Approche ergonomique :


Au cours de ltude du projet, nous avons pens que dfinir lavance les contraintes concernant lergonomie de lapplication permettrait de mieux orienter notre programmation. En effet il nous fallait dvelopper une interface graphique la fois complte et la plus intuitive possible pour lutilisateur.

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.

2.2) Choix des outils de travail :


Voici les diffrents logicielles ou sites internet que nous avons utilis durant la ralisation de ce projet. Utilisation du langage de programmation objet Java, qui est un langage qui convient parfaitement llaboration du projet. Afin de programmer cette application avec le langage Java , nous avons choisi

lenvironnement de dveloppement intgr Netbeans qui permet de crer des projets en langage Java.

3. Prsentation De lalgorithme tudi :


3.1) Algorithme De Kruskal :
Definition :

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.

3.2) Prsentation de lAlgorithme :


KRUSKAL (G,w) 1 E := 2 pour chaque sommet v de G 3 faire CRER-ENSEMBLE (v) 4 trier les artes de G par ordre croissant de poids w 5 pour chaque arte (u,v) de G prise par ordre de poids croissant 6 faire si ENSEMBLE-REPRSENTATIF (u) ENSEMBLE-REPRSENTATIF (v) 7 alors ajouter l'arte (u,v) l'ensemble E 8 UNION (u,v) 9 retourner E

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.

3.3) Principe de lalgorithme de Kruskal :


Lalgorithme de Kruskal fonctionne de la faon suivante : 1. On part d'un graphe vide G' 2. On dresse la liste des arcs de G, tris par poids croissant 3. On parcourt ensuite la liste trie :

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 .

3.4) Exemple Explicatif :


La stratgie de cet algorithme consiste construire larbre en question comme suit : on part dune solution vide. On choisit, chaque fois, une arte de G de poids minimum et qui ne cre pas de cycle. Soit E l'ensemble des sommets de G. On utilisera un ensemble d'artes T qui sera en sortie l'arbre couvrant minimal et un ensemble d'artes F qui reprsentera les artes qui peuvent tre choisies. T = { }; F=E; tant que |T| < n - 1 faire trouver une arte e de F de poids minimal F=F-e si T + e est acyclique alors T = T + e finsi fin tant que Exemple :

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

Enregistrer (sauvegarde) Et bien sur quitter (pour sortir de lapplication)

Si on choisit Nouveau cette fentre apparait :

13

Bien sur aprs la cration de notre graphe on choisit le poids :

a donne ce graphe par exemple :

14

On choisissant Ouvrir :

Enregistrer :

Pour la suppression dun sommet ou dun vertex :

15

a donne a :

16

17