Skip to content

Conception

kmzx edited this page May 22, 2025 · 1 revision

🧩 Conception

Cette page décrit la structure interne de l'application TransNav, ainsi que ses principaux composants logiciels.

Elle est destinée à toute personne souhaitant comprendre l’architecture du projet, en vue de le modifier, l'étendre ou l'étudier.


🗂️ Architecture générale

📝 À compléter : présentation globale des différents modules et de leur rôle.

  • Présentation des couches (UI, logique métier, accès aux données…)
  • Schéma général du fonctionnement
  • Interaction entre composants

📦 Organisation des paquets

packages.drawio.svg


📊 Diagrammes UML

Diagramme de classes

Infrastructure

infra.drawio.svg

Domaine

Domain_a_jour.drawio.svg

Vue et Controlleurs

vue-controller.drawio.svg


Diagramme de cas d’utilisation

Diagramme de cas d’utilisation

Diagramme de cas d’utilisation des fonctionnalités principales de TransNav


📝 D’autres diagrammes peuvent être ajoutés : diagrammes de séquence, d’activités, etc.


🧠 Explications additionnelles

🔁 InternalFootConnection vs ExternalFootConnection

  • Les InternalFootConnection sont utilisées quand deux quais font partie de la même station.
  • Les ExternalFootConnection sont utilisées lors d’un changement de station (ex : Châtelet → Hôtel de Ville à pied).

🛤️ Platform vs Station

  • Une Platform (quai) est associée à une ligne, possède une position géographique et un emploi du temps. Ce sont les noeuds du graphe du réseau.
  • Une Station est un regroupement de quais, et une surcouche pouvant aider à simplifier le modèle pour une représentation visuelle.

🧮 Classe SubnetworkSelector

Cette classe a pour but de réduire la taille d'un réseau en ne sélectionnant qu'une partie d'un plus grand graphe selon des prédicats donnés. Son utilité relève surtout de l'optimisation, en réduisant l'effectif des données à passer en paramètre à un algorithme comme celui de Dijkstra. Par exemple, pour un trajet qui reste sur Paris intra-muros, il est probablement inutile de considérer les quais hors de la ville. Si certaines lignes sont bloquées pour une raison quelconque, l'on peut aussi les exclure avant de chercher un itinéraire.


🚀 Comment utiliser SubnetworkSelector pour optimiser le calcul d’un trajet

L'on peut proposer un algorithme pour délimiter une zone géographique au sein de laquelle limiter la sélection des quais à considérer à l'application de Dijkstra ; Etant donnés les coordonnées d'un quai de départ src et d'un quai de destination dst :

  • Calculer les points p1 et p2 tels que src p1 dst p2 soit un carré
    • Trouver le centre du segment [src dst] (on le nommera cntr)
    • Placer p1 et p2 tels que le segment [p1 p2] est orthogonal à [src dst] et de distance égale (on peut passer par une rotation de pi/2 de centre cntr appliquée à [src dst])
  • Agrandir le carré calculé par un certain facteur (par exemple, un agrandissement de 25% en relation à cntr)
  • Exporter ce carré en tant que prédicat déterminant si un quai est dans l'aire de ce carré
  • Sélectionner un sous-réseau selon ce prédicat
  • Faire tourner Dijkstra sur le sous-réseau sélectionné

🛠️ Cette page est en cours de rédaction. Les sections seront complétées au fur et à mesure de l’avancement du projet.

Clone this wiki locally