3. Третій етап виконання курсової роботи - kubatska/ski-weather-project GitHub Wiki

Table of Contents

Опис абстрактних типів даних, необхідних для вирішення завдань дослідження

Для збереження даних я використовуватиму новий тип даних SkiWeather. При його ініціалізації необхідно задавати набір даних певної (тільки однієї) локації у форматі JSON, які отримають завдяки SKI WEATHER API. SkiWeather обробляє ці дані і повертає певні погодні чинники на даній території протягом певного періоду часу. Тобто використовуючи методи цього класу можна отримати прямий доступ до конкретних погодних даних.

Наявні методи:

  • self.if_error() перевіряє чи присутні погодні дані в отриманій інформації;
  • self.name() повертає назву локації;
  • self.get_request() self.get_weather() є проміжними методами, які допомагають доступитися до повних об'єктів;
  • self.totalSnowfall_cm() повертає загальну очікувану кількість снігопаду у конкретні дні;
  • self.chanceofsnow() повертає ймовірність снігопаду у конкретні дні;
  • self.hourly() повертає погодинну інформацію про погодні прогнози;
  • self.date() повертає дати;
  • self.bottom_min(), self.bottom_max(), self.mid_min(), self.mid_max(), self.top_min(), self.top_max() повертають найнижчі та найвищі очікувані температури (у С*) на певних висотах.
  • self.chanceoffog(), self.chanceofthunder(), self.chanceofwindy(), self.snowfall_cm(), self.visibility(), self.chanceofrain() повертають дані протягом певних часових проміжків (6 год);
  • self.whether() визначає чи погода оптимальна для лещетарства;
  • str(self) повертає рядок, який характеризує клас.
Варто зауважити, що погодний прогноз може бути даний не лише на один день, але й на певну кількість (до 14). Тому для зручності зберігання та обробляння даних методи методи self.totalSnowfall_cm(), self.chanceofsnow(), self.hourly(), self.hourly(), self.bottom_min(), self.bottom_max(), self.mid_min(), self.mid_max(), self.top_min(), self.top_max(), self.whether(), self.chanceoffog(), self.chanceofthunder(), self.chanceofwindy(), self.snowfall_cm(), self.visibility(), self.chanceofrain() повертають інформацію у вбудованому типі даних list.

Наприклад: dates = ['2019-04-20',] top_max = [4,] top_min = [8,]

SkiWeather спроектовано так, що за потреби можна легко модифікувати/додати нові методи, завдяки яким можна буде доступитися до потрібно кількості інформації.

Для зберігання екземплярів класу SkiWeather я використовуватиму структуру даних Array, яка містить наступні методи:

  • len(self) - повертає розмір масиву;
  • self[i] - отримує елемент масиву за індексом;
  • self.(value) - присвоює значення за індексом;
  • self.clear(value) - замінює всі елементи масиву конкретним значенням;
  • self.() - повертає ітератор масиву для обходу елементів;
  • str(self) - повертає рядок, який характеризує масив.

Діаграма класів для реалізації необхідної структури даних

![DiagramArray](https://user-images.githubusercontent.com/47230894/56461337-adf31780-63b9-11e9-87d6-b15f4220d747.png)

Діаграма класів для реалізації абстрактного типу даних

![SkiWeather](https://user-images.githubusercontent.com/47230894/57574112-b16b4300-743b-11e9-8e6a-8d7950074484.png)

⚠️ **GitHub.com Fallback** ⚠️