Author: Christian.Queinnec@lip6.fr

## Introduction

Les applications de ce chapitre cherchent à illustrer les nombreux concepts de programmation présentés dans cette partie.
La première application est la construction d'une bibliothèque de composants graphiques, appelée `Upi` (Une Petite Interface). On l'appliquera à la réalisation d'un convertisseur Francs/Euros. Les composants décrits ici réagissent aux interactions d'un utilisateur en déclenchant des fonctions de traitement. Bien que la difficulté algorithmique de cette application reste simple, son intérêt est de montrer la communication entre composants grâce aux fermetures. En effet les différentes fonctions de traitement partagent certaines valeurs dans leur environnement. Il est nécessaire de connaître la bibliothèque de base `Graphics` pour apprécier la construction de la bibliothèque `Upi` (voir chapitre 5, page ??).
La deuxième application est une recherche du chemin de moindre coût dans un graphe orienté. Elle suit l'algorithme de Dijkstra qui calcule tous les chemins de moindre coût d'un sommet source vers tous les autres sommets atteignables à partir de cette source. Pour accélérer les recherches demandées, on implante un mécanisme de cache qui conserve les recherches déjà effectuées en utilisant un tableau de pointeurs faibles (voir page ??). Le GC peut libérer des éléments de ce tableau, mais ils sont toujours recalculables en cas de besoin. La visualisation d'un graphe utilise les boutons simples de la bibliothèque `Upi` pour la sélection des sommets origine et destination du parcours demandé. On compare l'efficacité d'exécution entre les versions avec et sans cache. Pour faciliter les mesures de temps de ces différentes versions, on passe en argument de l'application le fichier de description du graphe ainsi que l'origine et la destination du parcours recherché. On dotera le programme de recherche d'<< une petite interface graphique >>.