draft: first DESIGN.md

This commit is contained in:
Nemo D'ACREMONT 2024-11-29 14:52:18 +01:00
parent d446f4c446
commit 4d96191d6a
No known key found for this signature in database
GPG Key ID: 6E5BCE8022FA8276

View File

@ -9,22 +9,56 @@ Nous vous conseillons d'utiliser le logiciel PlantUML pour générer vos diagram
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 ?
## Utilisation de la déléguation
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'