diff --git a/DESIGN.md b/DESIGN.md index 9388859..c09b412 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -7,24 +7,58 @@ Nous vous conseillons d'utiliser le logiciel PlantUML pour générer vos diagram ## 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? +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? +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 : -Comment utilisez-vous la délégation dans votre programme? +* 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? +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? +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? \ No newline at end of file +Comment utilisez-vous les exceptions dans votre programme ? + +Nous utilisons WeatherFetchingException qui est une Exception qui est envoyée lorsqu'