module observer.request.statiscticdisplay; import observer.request.displayelement; import observer.request.observer; import observer.request.weatherdata; import std.stdio : writeln; import std.format : format; class StatisticsDisplay : Observer, DisplayElement { private: float maxTemp = 0.0f; float minTemp = 200; float tempSum= 0.0f; int numReadings; WeatherData weatherData; public: this(WeatherData weatherData) { this.weatherData = weatherData; weatherData.registerObserver(this); } override void update() { tempSum += weatherData.getTemperature; numReadings++; if (weatherData.getTemperature > maxTemp) { maxTemp = weatherData.getTemperature; } if (weatherData.getTemperature < minTemp) { minTemp = weatherData.getTemperature; } display(); } override void display() { writeln("Avg/Max/Min temperature = ", (tempSum / numReadings), '/', maxTemp, '/', minTemp); // writeln("Avg/Max/Min temperature = ".format(temperature), "F degrees and %3.1f%% humidity".format(humidity)); } }