Bläddra i källkod

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 11 år sedan
förälder
incheckning
a0c37c1a23
13 ändrade filer med 323 tillägg och 759 borttagningar
  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(), "");
+    }
+    
 }