menu
{$Head.Title}}

Übung JavaScript Meteo Data

Übung JavaScript Meteo Data

Ausgangslage

Bisher wurden die Meteo Temperaturen über ein Array fix definiert und der Klasse Meteo zugewiesen.

Neu sollen diese Daten von der Art der Quelle entkoppelt werden, das folgende Script zeigt die neue Anwendung:

import Meteo from './Meteo.js';
import MeteoDataArray from './MeteoDataArray.js';
import MeteoDataJSON from './MeteoDataJSON.js';

console.log('Start Meteo Data ...');

function MeteoRun(meteoData) {
    const wetterfeh = new Meteo(meteoData);
    console.log("min = ", wetterfeh.getMin());
    console.log("max = ", wetterfeh.getMax());
    console.log("med = ", wetterfeh.getMed().toFixed(2), "\n");
    if (wetterfeh.isWuestenTag()) {
        console.log("Wüstentag");
    }

    if (wetterfeh.isHeisserTag()) {
        console.log("Heisser Tag");
    }

    if (wetterfeh.isSommertag()) {
        console.log("Sommertag");
    }

    if (wetterfeh.isTropennacht()) {
        console.log("Tropennacht");
    }

    if (wetterfeh.isHeiztag()) {
        console.log("Heiztag");
    }
    
    if (wetterfeh.isVegetationstag()) {
      console.log("Vegetationstag");
    }

    if (wetterfeh.isFrosttag()) {
        console.log("Frosttag");
    }

    if (wetterfeh.isEistag()) {
        console.log("Eistag");
    }
}

MeteoRun(new MeteoDataArray([ 19, 25, 28, 29, 24, 21, 20, 18, 23 ]));

const jsonData = `[
    {
        "time": "00:00",
        "value": 19.0
    },
    {
        "time": "03:00",
        "value": 14.0
    },
    {
        "time": "06:00",
        "value": 16.0
    },
    {
        "time": "09:00",
        "value": 20.0
    },
    {
        "time": "12:00",
        "value": 25.0
    },
    {
        "time": "15:00",
        "value": 27.0
    },
    {
        "time": "18:00",
        "value": 24.0
    },
    {
        "time": "21:00",
        "value": 21.0
    }
]`;

MeteoRun(new MeteoDataJSON(jsonData));

Die Klasse Meteo übernimmt im Konstruktor eine Instanz der Klasse MeteoData:

export default class MeteoData {
    getMin() {
        return this.min;
    }

    getMax() {
        return this.max;
    }

    getMed() {
        return this.med;
    }
}

Das Lesen der Variante Temperatur Array erfolgt über die Klasse MeteoDataArray:

import MeteoData from './MeteoData.js';

export default class MeteoDataArray extends MeteoData {
    constructor(ta) {
        super();
        // TODO
    }
}

Das Lesen der Variante Temperatur JSON erfolgt über die Klasse MeteoDataJSON:


import MeteoData from './MeteoData.js';

export default class MeteoDataJSON extends MeteoData {
    constructor(jsonData) {
        super();
        // TODO
    }
}
Vorgehen

Lösen Sie bitte die Aufgabe wie folgt:

  1. Kopieren Sie die Lösung Meteo OO um in ein neues Verzeichnis.
  2. Erstellen Sie die Datei MeteoData.js gemäss dem obigen Programmgerüst MeteoData.
  3. Erstellen Sie die Datei MeteoDataArray.js gemäss dem obigen Programmgerüst MeteoDataArray und programmieren Sie die fehlende //TODO Sequenz aus.
  4. Erstellen Sie die Datei MeteoDataJSON.js gemäss dem obigen Programmgerüst MeteoDataArray und programmieren Sie die fehlende //TODO Sequenz aus.
  5. Passen Sie die Klasse Meteo so an, dass solche die Daten via MeteoData Instanz liest. Die Klimatage sind anhand der MeteoDaten zu berechnen.
  6. Passen Sie das Hauptprogramm (z.B. main.js) gemäss dem obigen Script mit der Variante JSON an.
  7. Testen Sie das Resultat.
  8. Testen Sie die Variante mit einer MeteoDataArray Instanz mit den gleiche Werten. Das Resultat sollte identisch sein.
Lösung

Eine mögliche Lösung finden Sie hier