65 lines
2.5 KiB
Markdown
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'
|