weather-aggregator/DESIGN.md
2024-11-29 14:52:18 +01:00

65 lines
2.5 KiB
Markdown

# Document de design
Ceci est le document de template pour décrire l'architecture de votre programme. Vous pouvez le modifier à votre guise, mais assurez-vous de répondre à toutes les questions posées.
***Suivant certaines architectures, certaines des questions peuvent ne pas être pertinentes. Dans ce cas, vous pouvez les ignorer.***
Vous pouvez utiliser autant de diagrammes que vous le souhaitez pour expliquer votre architecture.
Nous vous conseillons d'utiliser le logiciel PlantUML pour générer vos diagrammes.
## Schéma général
Décrivez ici le schéma général de votre programme. Quels sont les composants principaux et comment interagissent-ils ?
On a 2 principaux composants :
* WeatherDataAPI
* WeatherDisplay
WeatherDisplay contient un ensemble d'instances de WeatherDisplay. Chacune de ces instances retournent des données ayant l'interface WeatherData, ce qui permet au WeatherDisplay de les afficher.
## Utilisation du polymorphisme
Comment utilisez-vous le polymorphisme dans votre programme ?
Nous utilisons les interfaces suivantes servant à définir les parties publiques de nos Classes :
* WeatherDataAPI
* WeatherDisplay
## Utilisation de la délégation
Comment utilisez-vous la délégation dans votre programme ?
Nous avons essayé de mettre en oeuvre un maximum de forme de délégation dans le projet.
Voici les principales formes de délégations qui se trouvent dans le projet :
### JSONFetcher
Les requêtes HTTP(S) et la transformation de la réponse en JSONObject est abstraite grâce à la classe JSONFetcher
### City
Nous utilisons une classe City afin de stocker le nom d'une ville, et de faire le lien avec ses coordonnées.
Cela permet d'abstraire un appel à l'API api-adresse.data.gouv.fr pour obtenir les coordonnées depuis le nom de la ville.
## Utilisation de l'héritage
Comment utilisez-vous l'héritage dans votre programme ?
Nous avons limité au maximum l'héritage dans le projet et nous sommes concentrés sur des relations de composition.
Au final, pour permettre un système de cache, les trois classes WeatherAPI, OpenMeteo et OpenWeatherMap héritent d'une classe WeatherDataCachedAPI.
## Utilisation de la généricité
Comment utilisez-vous la généricité dans votre programme ?
Nous n'avons pas eu besoin de généricité dans notre programme.
## Utilisation des exceptions
Comment utilisez-vous les exceptions dans votre programme ?
Nous utilisons WeatherFetchingException qui est une Exception qui est envoyée lorsqu'