Explorar o código

Converted everything to work with polymorphism

Added "Grootheid" to act as a parent to all children classes, it allows
the main "Weerstation" to update them all better and with cleaner code.
Kenneth van Ewijk %!s(int64=11) %!d(string=hai) anos
pai
achega
a0c37c1a23
Modificáronse 13 ficheiros con 323 adicións e 759 borrados
  1. 29 91
      AvgWindspeed.java
  2. 0 81
      BinnenTemperatuur.java
  3. 0 86
      BuitenTemperatuur.java
  4. 30 89
      CloudHeight.java
  5. 86 0
      Grootheid.java
  6. 20 74
      InsideHum.java
  7. 32 0
      InsideTemp.java
  8. 20 75
      OutsideHum.java
  9. 32 0
      OutsideTemp.java
  10. 13 77
      RainRate.java
  11. 18 76
      UVLevel.java
  12. 14 25
      Weerstation.java
  13. 29 85
      WindChill.java

+ 29 - 91
AvgWindspeed.java

@@ -1,94 +1,32 @@
-package weerstation;
-
 import java.util.ArrayList;
 
-public class AvgWindspeed {
-	
-	//fields
-	private double currentWindSpeed;
-	private double maxWindSpeed;
-	private double minWindSpeed;
-	private double avgWindSpeed;
-	
-	//constructor
-	public AvgWindspeed(Measurement measurement1, ArrayList<Measurement> measurement2){
-		updateRecent(measurement1);
-		update24Hour(measurement2);
-	}
-	
-	//getters & setters
-	public double getCurrentWindSpeed() {
-		return currentWindSpeed;
-	}
-
-	public void setCurrentWindSpeed(double currentWindSpeed) {
-		if(currentWindSpeed >= 0){
-			this.currentWindSpeed = currentWindSpeed;
-		}
-	}
-
-	public double getMaxWindSpeed() {
-		return maxWindSpeed;
-	}
-
-	public void setMaxWindSpeed(double maxWindSpeed) {
-		if(maxWindSpeed >= 0){
-			this.maxWindSpeed = maxWindSpeed;
-		}
-	}
-
-	public double getMinWindSpeed() {
-		return minWindSpeed;
-	}
-
-	public void setMinWindSpeed(double minWindSpeed) {
-		if(minWindSpeed >= 0){
-			this.minWindSpeed = minWindSpeed;
-		}
-	}
-
-	public double getAvgWindSpeed() {
-		return avgWindSpeed;
-	}
-
-	public void setAvgWindSpeed(double avgWindSpeed) {
-		this.avgWindSpeed = Math.round(avgWindSpeed*100)/100;
-	}
-	
-	//Methods
-	private void calculateMaxMinAvgWindSpeed(ArrayList<Measurement> laatste24uur){
-		int max = 0;
-		int min = 1000;
-		float avg = 0;
-		for(Measurement minut :laatste24uur){
-			if(minut.getRawAvgWindSpeed() > max){
-				max = minut.getRawAvgWindSpeed();
-			}
-			if(minut.getRawAvgWindSpeed() <  min){
-				min = minut.getRawAvgWindSpeed();
-			}
-			avg += minut.getRawWindSpeed();
-		}
-		avg /= laatste24uur.size();
-		
-		setAvgWindSpeed(Calculator.windSnelheid((short)avg));
-		setMaxWindSpeed(Calculator.windSnelheid((short)max));
-		setMinWindSpeed(Calculator.windSnelheid((short)min));
-	}
-
-	
-	public void updateRecent(Measurement measurement1){
-		setCurrentWindSpeed(measurement1.getAvgWindSpeed());
-	}
-	public void update24Hour(ArrayList<Measurement> measurement2){
-		calculateMaxMinAvgWindSpeed(measurement2);
-	}
-	
-	public void display(){
-		GUIboard.writeUpperDigits(getCurrentWindSpeed());
-		GUIboard.writeLeftDigits(getMaxWindSpeed());
-		GUIboard.writeRightDigits(getMinWindSpeed());
-		GUIboard.writePageToMatrix("Windsnelheid in m/s", "Gemiddelde: " + avgWindSpeed, "");
-	}
-	
+public class AvgWindspeed extends Grootheid{
+    
+    //constructor
+    public AvgWindspeed(Measurement measurement1, ArrayList<Measurement> measurement2){
+        updateRecent(measurement1);
+        update24Hour(measurement2);
+    }
+    
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getAvgWindSpeed());
+    }
+    
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getAvgWindSpeed());
+        }
+        
+        calculateMaxMinAvg(list);
+    }
+    
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("Windsnelheid in m/s", "Gemiddelde: " + getAvg(), "");
+    }
+    
 }

+ 0 - 81
BinnenTemperatuur.java

@@ -1,81 +0,0 @@
- 
-import java.io.*;
-import java.net.*;
-import java.util.ArrayList;
-
-public class BinnenTemperatuur
-{
-    private Measurement laatsteMeting;
-    Measurement meting;
-    ArrayList<Measurement> laatste24uur; //ArrayList om de Temperatuur in op te slaan
-    double temp;
-    double max;
-    double min;
-    double avg;
-    
-    public BinnenTemperatuur(Measurement measurement1, ArrayList<Measurement> measurement2)
-    {
-    	updateRecent(measurement1);
-		update24Hour(measurement2);
-    }
-    public double binnenTemperatuur()
-    {
-        meting.getInsideTemp();
-        return meting.getInsideTemp();
-    }
-    public double getMaximale()
-    {
-        short maximale = 0; // Maximale is iets boven de 100
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            if(laatste24uur.get(i).getRawInsideTemp() > maximale)
-            {
-                maximale = laatste24uur.get(i).getRawInsideTemp();
-            }
-        }
-        return(Calculator.temperatuur((maximale)));
-    }
-	public double getMinimale()
-    {
-        short minimale = 1000; // Minimale is iets onder de 100
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            if(laatste24uur.get(i).getRawInsideTemp() < minimale)
-            {
-                minimale = laatste24uur.get(i).getRawInsideTemp(); // Defineert average
-            }
-        }
-        
-        return(Calculator.temperatuur((minimale))); // Geeft minimale
-    }
-    public double getAverage()
-    {
-        float average = 0; // Average is nieuw
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            average += laatste24uur.get(i).getRawInsideTemp(); // Defineert average
-        }
-        average /= laatste24uur.size(); // Berekening average
-        return  (Math.round((Calculator.temperatuur(((short)average)))*1000))/1000  ; // Geeft average terug
-    }
-    
-    public void updateRecent(Measurement measurement1)
-    {
-        this.laatsteMeting = measurement1;
-        temp = laatsteMeting.getInsideTemp();
-    }
-    public void update24Hour(ArrayList<Measurement> measurement2)
-    {
-        this.laatste24uur = measurement2;
-        min = getMinimale();
-        max = getMaximale();
-        avg = getAverage();
-    }
-    public void display()
-    {
-        GUIboard.writeUpperDigits(temp);
-        GUIboard.writeLeftDigits(max);
-        GUIboard.writeRightDigits(min);
-        GUIboard.writePageToMatrix("Binnentemperatuur", "Gemiddelde: " + avg, "");
-    }
-}

+ 0 - 86
BuitenTemperatuur.java

@@ -1,86 +0,0 @@
- 
-import java.io.*;
-import java.net.*;
-import java.util.ArrayList;
-/**
-* Write a description of class OpdrachtDinges here.
-*
-* @author (your name)
-* @version (a version number or a date)
-*/
-public class BuitenTemperatuur
-{
-    private Measurement laatsteMeting;
-    Measurement meting;
-    ArrayList<Measurement> laatste24uur; //ArrayList om de Temperatuur in op te slaan
-    double temp;
-    double max;
-    double min;
-    double avg;
-    
-    public BuitenTemperatuur(Measurement measurement1, ArrayList<Measurement> measurement2)
-    {
-    	updateRecent(measurement1);
-		update24Hour(measurement2);
-    }
-    public double buitenTemperatuur()
-    {
-        meting.getOutsideTemp();
-        return meting.getOutsideTemp();
-    }
-    public double getMaximale()
-    {
-        short maximale = 0; // Maximale is iets boven de 100
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            if(laatste24uur.get(i).getRawOutsideTemp() > maximale)
-            {
-                maximale = laatste24uur.get(i).getRawOutsideTemp();
-            }
-        }
-        return(Calculator.temperatuur((maximale)));
-    }
-    public double getMinimale()
-    {
-        short minimale = 1000; // Minimale is iets onder de 100
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            if(laatste24uur.get(i).getRawOutsideTemp() < minimale)
-            {
-                minimale = laatste24uur.get(i).getRawOutsideTemp(); // Defineert average
-            }
-        }
-        
-        return(Calculator.temperatuur((minimale))); // Geeft minimale
-    }
-    public double getAverage()
-    {
-        float average = 0; // Average is nieuw
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            average += laatste24uur.get(i).getRawOutsideTemp(); // Defineert average
-        }
-        average /= laatste24uur.size(); // Berekening average
-        return  (Math.round((Calculator.temperatuur(((short)average)))*1000))/1000  ; // Geeft average terug
-    }
-    
-    public void updateRecent(Measurement measurement1)
-    {
-        this.laatsteMeting = measurement1;
-        temp = laatsteMeting.getOutsideTemp();
-    }
-    public void update24Hour(ArrayList<Measurement> measurement2)
-    {
-        this.laatste24uur = measurement2;
-        min = getMinimale();
-        max = getMaximale();
-        avg = getAverage();
-    }
-    public void display()
-    {
-        GUIboard.writeUpperDigits(temp);
-        GUIboard.writeLeftDigits(max);
-        GUIboard.writeRightDigits(min);
-        GUIboard.writePageToMatrix("Buitentemperatuur", "Gemiddelde: " + avg, "");
-    }
-}

+ 30 - 89
CloudHeight.java

@@ -1,91 +1,32 @@
 import java.util.ArrayList;
-import java.net.*;
-/**
- * Write a description of class CloudHeight here.
- * 
- * @author (your name) 
- * @version (a version number or a date)
- */
-public class CloudHeight
-{
-   Measurement meting;
-   ArrayList<Measurement>laatste24uur;
-   double cloud;
-   private Measurement laatsteMeting;
-   double maxHeight;
-   double minHeight;
-   double avgHeight;
-   
-   public CloudHeight(Measurement measurement1, ArrayList<Measurement>measurement2)
-   {
-       updateRecent(measurement1);
-       update24Hour(measurement2);
-   }
-   
-   public double Height()
-   {
-       meting.getCloudHeight();
-       return meting.getCloudHeight();
-   }
-   
-   public double maximaleHeight()
-   {
-       double max = 0; 
-       for(int i = 0; i < laatste24uur.size(); i++)
-       {
-           if(laatste24uur.get(i).getCloudHeight() > max)
-           {
-               max = laatste24uur.get(i).getCloudHeight();
-           }
-       }
-       return(max);
-   }
-   
-   public double minimaleHeight()
-   {
-       double min = 100000;
-       
-       for(int i = 0; i < laatste24uur.size(); i++)
-       {
-           if(laatste24uur.get(i).getCloudHeight() < min)
-           {
-               min = laatste24uur.get(i).getCloudHeight();               
-           }
-       }
-       System.out.println(min);
-       return(min);
-   }
-   
-   public double AverageHeight()
-   {
-       float average =0;
-       for(int i = 0; i < laatste24uur.size(); i++)
-       {
-           average += laatste24uur.get(i).getCloudHeight();
-       }
-       average /=laatste24uur.size();
-       return(average);
-   }
-   
-   public void updateRecent(Measurement measurement1){
-		this.laatsteMeting = measurement1;
-		cloud = laatsteMeting.getCloudHeight();
-	}
-	
-	public void update24Hour(ArrayList<Measurement> measurement2){
-		this.laatste24uur = measurement2;
-		minHeight = minimaleHeight();
-		maxHeight = maximaleHeight();
-		avgHeight = AverageHeight();
-	}
-	
-	public void display(){
-		GUIboard.writeUpperDigits(cloud);
-		GUIboard.writePageToMatrix("Wolkhoogte", "Gemiddelde: " + avgHeight,"");
-		//GUIboard.writePageToMatrix( "min","min: " + minHeight, "");
-		//GUIboard.writePageToMatrix( "max","max: " + maxHeight, "");
-		System.out.println(maxHeight);
-		       System.out.println(minHeight);
-	}
-}
 
+public class CloudHeight extends Grootheid{
+    
+    //constructor
+    public CloudHeight(Measurement measurement1, ArrayList<Measurement> measurement2){
+        updateRecent(measurement1);
+        update24Hour(measurement2);
+    }
+
+    
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getCloudHeight());
+    }
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getCloudHeight());
+        }
+        
+        calculateMaxMinAvg(list);
+    }
+    
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("Wolkhoogte", "Gemiddelde: " + getAvg(), "");
+    }
+    
+}

+ 86 - 0
Grootheid.java

@@ -0,0 +1,86 @@
+import java.util.ArrayList;
+
+public class Grootheid
+{
+    // instance variables - replace the example below with your own
+    public double avg;
+    public double max;
+    public double min;
+    public double current;
+
+    //constructor
+    public Grootheid(){
+        avg = 0;
+        max = 0;
+        min = 0;
+        current = 0;
+    }
+    
+    //getters & setters
+    public double getCurrent() {
+        return current;
+    }
+
+    public void setCurrent(double current) {
+        this.current = current;
+    }
+
+    public double getMax() {
+        return max;
+    }
+
+    public void setMax(double max) {
+        this.max= max;
+    }
+
+    public double getMin() {
+        return min;
+    }
+
+    public void setMin(double min) {
+        this.min = min;
+    }
+
+    public double getAvg() {
+        return avg;
+    }
+
+    public void setAvg(double avg) {
+        this.avg = avg;
+    }
+    
+    //Methods
+    public void calculateMaxMinAvg(ArrayList<Double> laatste24uur){
+        double tempMax = 0;
+        double tempAvg = 0;
+        double tempMin = laatste24uur.get(0);
+        
+        for(double ms : laatste24uur){
+            if(ms > tempMax){
+                tempMax = ms;
+            }
+            if(ms <  tempMin){
+                tempMin = ms;
+            }
+            tempAvg += ms;
+        }
+        tempAvg /= laatste24uur.size();
+        
+        setMax(tempMax);
+        setMin(tempMin);
+        setAvg(tempAvg);
+    }
+
+    public void updateRecent(Measurement measurement1){
+
+    }
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+    }
+    
+    public void display(){
+        GUIboard.writeUpperDigits(getCurrent());
+        GUIboard.writeLeftDigits(getMax());
+        GUIboard.writeRightDigits(getMin());
+    }
+}

+ 20 - 74
InsideHum.java

@@ -1,86 +1,32 @@
-import java.net.*;
 import java.util.ArrayList;
-/**
- * Write a description of class OpdrachtDinges here.
- * 
- * @author (your name) 
- * @version (a version number or a date)
- */
-public class InsideHum
-{
-    Measurement meting; 
-    ArrayList<Measurement> laatste24uur; 
-    double vochtigheid;
-    private Measurement laatsteMeting;
-    double max;
-    double min;
-    double avg;
+
+public class InsideHum extends Grootheid{
     
-    public InsideHum(Measurement measurement1, ArrayList<Measurement> measurement2)
-    {
-    	updateRecent(measurement1);
-		update24Hour(measurement2);
+    //constructor
+    public InsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
+        updateRecent(measurement1);
+        update24Hour(measurement2);
     }
+
     
-    public double binnenLuchtvochtigheid()
-    {
-        meting.getInsideHum(); 
-        return meting.getInsideHum();
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getInsideHum());
     }
-    
-    public double berekenMaximale()
-    {
-        short maximale = 0;
-        for(int i=0; i < laatste24uur.size();i++) 
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
         {
-            if(laatste24uur.get(i).getRawInsideHum() > maximale) 
-            {
-                maximale = laatste24uur.get(i).getRawInsideHum();
-            }
+            list.add(ms.getInsideHum());
         }
-        return(maximale);
+        
+        calculateMaxMinAvg(list);
     }
     
-    public double berekenMinimale()
-    {
-        short minimale = 100;
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            if(laatste24uur.get(i).getRawInsideHum() < minimale)
-            {
-                minimale = laatste24uur.get(i).getRawInsideHum();
-            }
-        }
-        return(minimale);
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("Luchtv. Binnen", "Gemiddelde: " + getAvg(), "");
     }
     
-    public double berekenAverage()
-    {
-        int average = 0;
-        for(int i=0; i < laatste24uur.size(); i ++)
-        {
-            average += laatste24uur.get(i).getRawInsideHum();
-        }
-        average /= laatste24uur.size();
-        return(average);
-    }
-    
-    public void updateRecent(Measurement measurement1){
-		this.laatsteMeting = measurement1;
-		vochtigheid = laatsteMeting.getInsideHum();
-	}
-	
-	public void update24Hour(ArrayList<Measurement> measurement2){
-		this.laatste24uur = measurement2;
-		min = berekenMinimale();
-		max = berekenMaximale();
-		avg = berekenAverage();
-	}
-	
-	public void display(){
-		GUIboard.writeUpperDigits(vochtigheid);
-		GUIboard.writeLeftDigits(max);
-		GUIboard.writeRightDigits(min);
-		GUIboard.writePageToMatrix("Luchtv. Binnen", "Gemiddelde: " + avg, "");
-	}
 }

+ 32 - 0
InsideTemp.java

@@ -0,0 +1,32 @@
+import java.util.ArrayList;
+
+public class InsideTemp extends Grootheid{
+    
+    //constructor
+    public InsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
+        updateRecent(measurement1);
+        update24Hour(measurement2);
+    }
+
+    
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getInsideTemp());
+    }
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getInsideTemp());
+        }
+        
+        calculateMaxMinAvg(list);
+    }
+    
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("Binnentemperatuur", "Gemiddelde: " + getAvg(), "");
+    }
+    
+}

+ 20 - 75
OutsideHum.java

@@ -1,87 +1,32 @@
-package weerstation;
-import java.net.*;
 import java.util.ArrayList;
-/**
- * Write a description of class OpdrachtDinges here.
- * 
- * @author (your name) 
- * @version (a version number or a date)
- */
-public class OutsideHum
-{
-    Measurement meting; //connectie maken met Measurement klasse
-    ArrayList<Measurement> laatste24uur; //ArrayList om de luchtvochtigheid op te slaan
-    double vochtigheid;
-    private Measurement laatsteMeting;
-    double max;
-    double min;
-    double avg;
+
+public class OutsideHum extends Grootheid{
     
-    public OutsideHum(Measurement measurement1, ArrayList<Measurement> measurement2)
-    {
-    	updateRecent(measurement1);
-		update24Hour(measurement2);
+    //constructor
+    public OutsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
+        updateRecent(measurement1);
+        update24Hour(measurement2);
     }
+
     
-    public double buitenLuchtvochtigheid()
-    {
-        meting.getOutsideHum(); //waardes van buitenluchtvochtigheid ophalen uit de meting klasse
-        return meting.getOutsideHum();
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getOutsideHum());
     }
-    
-    public double berekenMaximale()
-    {
-        short maximale = 0;
-        for(int i=0; i < laatste24uur.size();i++) //zolang i kleiner is dan de grootte van de ArrayList laatste24uur voert het de if-statement uit
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
         {
-            if(laatste24uur.get(i).getRawOutsideHum() > maximale) //plek (i) in de ArrayList laatste24uur vraag je de waarde RawOutsideHum van op. Als die groter is dan huidige maximale, vervang je maximale door dat getal.
-            {
-                maximale = laatste24uur.get(i).getRawOutsideHum();
-            }
+            list.add(ms.getOutsideHum());
         }
-        return(maximale);
+        
+        calculateMaxMinAvg(list);
     }
     
-    public double berekenMinimale()
-    {
-        short minimale = 100;
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            if(laatste24uur.get(i).getRawOutsideHum() < minimale)
-            {
-                minimale = laatste24uur.get(i).getRawOutsideHum();
-            }
-        }
-        return(minimale);
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("Luchtv. Buiten", "Gemiddelde: " + getAvg(), "");
     }
     
-    public double berekenAverage()
-    {
-        short average = 0;
-        for(int i=0; i < laatste24uur.size(); i ++)
-        {
-            average += laatste24uur.get(i).getRawOutsideHum();
-        }
-        average /= laatste24uur.size();
-        return(average);
-    }
-    
-    public void updateRecent(Measurement measurement1){
-		this.laatsteMeting = measurement1;
-		vochtigheid = laatsteMeting.getOutsideHum();
-	}
-	
-	public void update24Hour(ArrayList<Measurement> measurement2){
-		this.laatste24uur = measurement2;
-		min = berekenMinimale();
-		max = berekenMaximale();
-		avg = berekenAverage();
-	}
-	
-	public void display(){
-		GUIboard.writeUpperDigits(vochtigheid);
-		GUIboard.writeLeftDigits(max);
-		GUIboard.writeRightDigits(min);
-		GUIboard.writePageToMatrix("Luchtv. Buiten", "Gemiddelde: " + avg, "");
-	}
 }

+ 32 - 0
OutsideTemp.java

@@ -0,0 +1,32 @@
+import java.util.ArrayList;
+
+public class OutsideTemp extends Grootheid{
+    
+    //constructor
+    public OutsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
+        updateRecent(measurement1);
+        update24Hour(measurement2);
+    }
+
+    
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getOutsideTemp());
+    }
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getOutsideTemp());
+        }
+        
+        calculateMaxMinAvg(list);
+    }
+    
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("Buitentemperatuur", "Gemiddelde: " + getAvg(), "");
+    }
+    
+}

+ 13 - 77
RainRate.java

@@ -1,96 +1,32 @@
-package weerstation;
 import java.util.ArrayList;
 
-public class RainRate {
-    
-    //fields
-    private Measurement laatsteMeting;
-    private ArrayList<Measurement> laatste24Uur;
-    private double currentRainRate;
-    private double maxRainRate;
-    private double minRainRate;
-    private double avgRainRate;
+public class RainRate extends Grootheid{
     
     //constructor
     public RainRate(Measurement measurement1, ArrayList<Measurement> measurement2){
         updateRecent(measurement1);
         update24Hour(measurement2);
     }
-    
-    //getters & setters
-    public double getCurrentRainRate() {
-        return currentRainRate;
-    }
-
-    public void setCurrentRainRate(double currentRainRate) {
-        if(currentRainRate >= 0){
-            this.currentRainRate = currentRainRate;
-        }
-    }
-
-    public double getMaxRainRate() {
-        return maxRainRate;
-    }
-
-    public void setMaxRainRate(double maxRainRate) {
-        if(maxRainRate >= 0){
-            this.maxRainRate = maxRainRate;
-        }
-    }
 
-    public double getMinRainRate() {
-        return minRainRate;
-    }
-
-    public void setMinRainRate(double minRainRate) {
-        if(minRainRate >= 0){
-            this.minRainRate = minRainRate;
-        }
-    }
-
-    public double getAvgRainRate() {
-        return avgRainRate;
-    }
-
-    public void setAvgRainRate(double avgRainRate) {
-        this.avgRainRate = avgRainRate;
-    }
-    
-    //Methods
-    public void calculateMaxMinAvgRainRate(){
-        int max = 0;
-        int min = 0;
-        float avg = 0;
-        for(Measurement minut : laatste24Uur){
-            if(minut.getRawRainRate() > max){
-                max = minut.getRawRainRate();
-            }
-            if(minut.getRawRainRate() <  min){
-                min = minut.getRawRainRate();
-            }
-            avg += minut.getRawRainRate();
-        }
-        avg /= laatste24Uur.size();
-        
-        setAvgRainRate(Calculator.regenmeter((short)avg));
-        setMaxRainRate(Calculator.regenmeter((short)max));
-        setMinRainRate(Calculator.regenmeter((short)min));
-    }
     
     public void updateRecent(Measurement measurement1){
-        this.laatsteMeting = measurement1;
-        setCurrentRainRate(laatsteMeting.getRainRate());
+        setCurrent(measurement1.getRainRate());
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
-        this.laatste24Uur = measurement2;
-        calculateMaxMinAvgRainRate();
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getRainRate());
+        }
+        
+        calculateMaxMinAvg(list);
     }
     
     public void display(){
-        GUIboard.writeUpperDigits(getCurrentRainRate());
-        GUIboard.writeLeftDigits(getMaxRainRate());
-        GUIboard.writeRightDigits(getMinRainRate());
-        GUIboard.writePageToMatrix("Regenval in mm/h", "Gemiddelde: " + avgRainRate, "");
+        super.display();
+        GUIboard.writePageToMatrix("Regenval in mm/h", "Gemiddelde: " + getAvg(), "");
     }
     
 }

+ 18 - 76
UVLevel.java

@@ -1,90 +1,32 @@
-import java.io.*;
-import java.net.*;
 import java.util.ArrayList;
-/**
- * Write a description of class OpdrachtDinges here.
- * 
- * @author (Tim van Lieshout) 
- * @version (a version number or a date)
- */
-public class UVLevel
-{
-    Weerstation weerstation;
-    Measurement meting;
-    ArrayList<Measurement> laatste24uur;
-    private Measurement laatsteMeting;
-    double max;
-    double min;
-    double avg;
-    double level;
+
+public class UVLevel extends Grootheid{
     
-    public UVLevel(Measurement measurement1, ArrayList<Measurement> measurement2)
-    {
+    //constructor
+    public UVLevel(Measurement measurement1, ArrayList<Measurement> measurement2){
         updateRecent(measurement1);
         update24Hour(measurement2);
     }
+
     
-    public double buitenLuchtvochtigheid()
-    {
-        meting.getUVLevel();
-        return meting.getUVLevel();
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getUVLevel());
     }
-    
-    public double berekenMaximale()
-    {
-        double maximale = 0;
-        for(int i=0; i < laatste24uur.size();i++)
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
         {
-            if(laatste24uur.get(i).getRawUVLevel() > maximale) 
-            {
-                maximale = laatste24uur.get(i).getUVLevel();
-            }
+            list.add(ms.getUVLevel());
         }
-        return(maximale);
+        
+        calculateMaxMinAvg(list);
     }
     
-    public double berekenMinimale()
-    {
-        double minimale = 100;
-        for(int i=0; i < laatste24uur.size();i++)
-        {
-            if(laatste24uur.get(i).getRawOutsideHum() < minimale)
-            {
-                minimale = laatste24uur.get(i).getUVLevel();
-            }
-        }
-        return(minimale);
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("UV Level", "Gemiddelde: " + getAvg(), "");
     }
     
-    public double berekenAverage()
-    {
-        int average = 0;
-        for(int i=0; i < laatste24uur.size(); i ++)
-        {
-            average += laatste24uur.get(i).getUVLevel();
-        }
-        average /= laatste24uur.size();
-        return(average);
-    }
-    
-    public void updateRecent(Measurement measurement1){
-		this.laatsteMeting = measurement1;
-		level = laatsteMeting.getOutsideHum();
-	}
-	
-	public void update24Hour(ArrayList<Measurement> measurement2){
-		this.laatste24uur = measurement2;
-		min = berekenMinimale();
-		max = berekenMaximale();
-		avg = berekenAverage();
-	}
-	
-	public void display(){
-		GUIboard.writeUpperDigits(level);
-		GUIboard.writeLeftDigits(max);
-		GUIboard.writeRightDigits(min);
-		GUIboard.writePageToMatrix("UVLevel Buiten", "Gemiddelde: " + avg, "");
-	}
-	
-	
 }

+ 14 - 25
Weerstation.java

@@ -1,4 +1,4 @@
-package weerstation;
+ 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.List;
@@ -23,13 +23,16 @@ public class Weerstation {
 
 		//All the different screen classes
 	
-		final List<Object> lstScreens = new ArrayList<Object>();
+		final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
 		lstScreens.add(new AvgWindspeed(meting1, meting2));
 		lstScreens.add(new RainRate(meting1, meting2));
-		lstScreens.add(new BinnenTemperatuur(meting1, meting2));
-		lstScreens.add(new BuitenTemperatuur(meting1, meting2));
-		lstScreens.add(new InsideHum(meting1, meting2));
+		lstScreens.add(new OutsideTemp(meting1, meting2));
+		lstScreens.add(new InsideTemp(meting1, meting2));
 		lstScreens.add(new OutsideHum(meting1, meting2));
+		lstScreens.add(new InsideHum(meting1, meting2));
+		lstScreens.add(new CloudHeight(meting1, meting2));
+		lstScreens.add(new WindChill(meting1, meting2));
+		lstScreens.add(new UVLevel(meting1, meting2));
 		
 		
 		//Screen switcher
@@ -41,14 +44,8 @@ public class Weerstation {
 	        	if(currentScreen == lstScreens.size()){
 	        		currentScreen = 0;
 	        	}
-	        	Object obj = lstScreens.get(currentScreen);
-	        	try {
-					obj.getClass().getMethod("display").invoke(obj);
-				} catch (IllegalAccessException | IllegalArgumentException
-						| InvocationTargetException | NoSuchMethodException
-						| SecurityException e) {
-					e.printStackTrace();
-				}        	
+	        	Grootheid obj = lstScreens.get(currentScreen);
+	        	obj.display();   	
 	        }
 	    }, 0, 5*1000);
 		
@@ -57,12 +54,8 @@ public class Weerstation {
 	        public void run() {
 	        	
 	    		meting1 = weerstation1.getMostRecentMeasurement();
-	    		for(Object obj : lstScreens){
-	    			try {
-						obj.getClass().getMethod("updateRecent", Measurement.class).invoke(obj, meting1 );
-					} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
-						e.printStackTrace();
-					}
+	    		for(Grootheid obj : lstScreens){
+	    			obj.updateRecent(meting1);
 	    		}
 	        }
 	    }, 60*1000, 60*1000);
@@ -72,12 +65,8 @@ public class Weerstation {
 		timer.scheduleAtFixedRate(new TimerTask() {
 	        public void run() {
 	        	meting2 = weerstation1.getAllMeasurementsLast24h();
-	    		for(Object obj : lstScreens){
-	    			try {
-						obj.getClass().getMethod("update24Hour", ArrayList.class).invoke(obj, meting2 );
-					} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
-						e.printStackTrace();
-					}
+	    		for(Grootheid obj : lstScreens){
+	    			obj.update24Hour(meting2);
 	    		}
 	        }
 	    }, 10*60*1000, 10*60*1000);

+ 29 - 85
WindChill.java

@@ -1,88 +1,32 @@
-package weerstation;
-
 import java.util.ArrayList;
 
-public class WindChill {
-	
-	//fields
-	private double currentWindChill;
-	private double maxWindChill;
-	private double minWindChill;
-	private double avgWindChill;
-	
-	//constructor
-	public WindChill(Measurement measurement1, ArrayList<Measurement> measurement2){
-		updateRecent(measurement1);
-		update24Hour(measurement2);
-	}
-	
-	//getters & setters
-	public double getCurrentWindChill() {
-		return currentWindChill;
-	}
-
-	public void setCurrentWindChill(double currentWindChill) {
-		this.currentWindChill = currentWindChill;
-	}
-
-	public double getMaxWindChill() {
-		return maxWindChill;
-	}
-
-	public void setMaxWindChill(double maxWindChill) {
-		this.maxWindChill = maxWindChill;
-	}
-
-	public double getMinWindChill() {
-		return minWindChill;
-	}
-
-	public void setMinWindChill(double minWindChill) {
-		this.minWindChill = minWindChill;
-	}
-
-	public double getAvgWindChill() {
-		return avgWindChill;
-	}
-
-	public void setAvgWindChill(double avgWindChill) {
-		this.avgWindChill = Math.round(avgWindChill*100)/100;
-	}
-	
-	//Methods
-	private void calculateMaxMinAvgWindChill(ArrayList<Measurement> laatste24uur){
-		double max = 0;
-		double min = 1000;
-		float avg = 0;
-		for(Measurement minut :laatste24uur){
-			if(minut.getWindChill() > max){
-				max = minut.getWindChill();
-			}
-			if(minut.getWindChill() <  min){
-				min = minut.getWindChill();
-			}
-			avg += minut.getWindChill();
-		}
-		avg /= laatste24uur.size();
-		
-		setAvgWindChill(avg);
-		setMaxWindChill(max);
-		setMinWindChill(min);
-	}
-
-	
-	public void updateRecent(Measurement measurement1){
-		setCurrentWindChill(measurement1.getWindChill());
-	}
-	public void update24Hour(ArrayList<Measurement> measurement2){
-		calculateMaxMinAvgWindChill(measurement2);
-	}
-	
-	public void display(){
-		GUIboard.writeUpperDigits(getCurrentWindChill());
-		GUIboard.writeLeftDigits(getMaxWindChill());
-		GUIboard.writeRightDigits(getMinWindChill());
-		GUIboard.writePageToMatrix("Gevoelstemp in C", "Gemiddelde: " + avgWindChill, "");
-	}
-	
+public class WindChill extends Grootheid{
+    
+    //constructor
+    public WindChill(Measurement measurement1, ArrayList<Measurement> measurement2){
+        updateRecent(measurement1);
+        update24Hour(measurement2);
+    }
+
+    
+    public void updateRecent(Measurement measurement1){
+        setCurrent(measurement1.getWindChill());
+    }
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        
+        ArrayList<Double> list = new ArrayList<Double>();
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getWindChill());
+        }
+        
+        calculateMaxMinAvg(list);
+    }
+    
+    public void display(){
+        super.display();
+        GUIboard.writePageToMatrix("Gevoelstemperatuur", "Gemiddelde: " + getAvg(), "");
+    }
+    
 }