From aa9ce373d550e722491f951f0f1a48ae3dafd865 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Torstein=20Str=C3=B8mme?= <torstein.stromme@uib.no>
Date: Mon, 24 Jan 2022 19:35:01 +0100
Subject: [PATCH] La til noe forklarende kommentarer til koden fra forelesning
 24.01

---
 Alarm.java                | 13 +++++++++++--
 FireProtectionSystem.java | 27 +++++++++++++++++++++++++++
 Main.java                 | 20 +++++++++++++++-----
 Sensor.java               | 16 ++++++++++++++--
 4 files changed, 67 insertions(+), 9 deletions(-)

diff --git a/Alarm.java b/Alarm.java
index 7ac8f98..c9a3f7a 100644
--- a/Alarm.java
+++ b/Alarm.java
@@ -1,8 +1,17 @@
-
-
+/**
+ * En abstraksjon av en fysisk alarm. Er ansvarlig for kommunikasjon
+ * med en eventuell fysisk alarm; men i vårt eksempel skriver den bare
+ * ut beskjeder til output.
+ * 
+ * @author Torstein Strømme
+ */
 public class Alarm {
     boolean isActive;
 
+    /**
+     * Sett alarmen av (<code>false</code>) eller på (<code>true</code>)
+     * @param value <code>true</code> slår alarmen på, <code>false</code> slår den av.
+     */
     void setActive(boolean value) {
         isActive = value;
         System.out.println("Set alarm to active: "+value);
diff --git a/FireProtectionSystem.java b/FireProtectionSystem.java
index 4be6633..23b2c56 100644
--- a/FireProtectionSystem.java
+++ b/FireProtectionSystem.java
@@ -1,9 +1,21 @@
 import java.util.HashSet;
 
+/**
+ * Et FireProctectionSystem -objekt har til hensikt å koordinere
+ * sensorer og alarmer, slik at alle alarmer er aktivert dersom én
+ * eller flere sensorer detekterer røyk.
+ * 
+ * @author Torstein Strømme
+ */
 class FireProtectionSystem {
+    // Feltvariabler (én kopi av hver av disse for hvert objekt)
     HashSet<Sensor> sensors = new HashSet<>();
     HashSet<Alarm> alarms = new HashSet<>();
 
+    /**
+     * Installer en eller flere sensorer i systemet.
+     * @param mySensors en sensor som skal installerse
+     */
     public void installSensor(Sensor... mySensors) {
         for (Sensor sensor : mySensors) {
             this.sensors.add(sensor);
@@ -11,16 +23,26 @@ class FireProtectionSystem {
         }
     }
 
+    /**
+     * Installer en alarm i systemet.
+     * @param myAlarm
+     */
     public void installAlarm(Alarm myAlarm) {
         this.alarms.add(myAlarm);
     }
     
+    /**
+     * Gir beskejed til systemet at røyk er oppdaget
+     */
     void smokeDetected() {
         for (Alarm alarm : alarms) {
             alarm.setActive(true);
         }
     }
 
+    /**
+     * Gir beskjed til systemet at en sensor har sluttet å detektere røyk
+     */
     void stoppedDetectingSmoke() {
         if (allSensorsAreOff()) {
             for (Alarm alarm : alarms) {
@@ -29,6 +51,11 @@ class FireProtectionSystem {
         }
     }
 
+    /**
+     * Sjekker om alle sensorer er av (ikke detekterer røyk).
+     * @return <code>true</code> dersom ingen installerte sensorer detekterer røyk,
+     * <code>false</code> hvis én eller flere sensorer detekterer røyk.
+     */
     private boolean allSensorsAreOff() {
         for (Sensor sensor : this.sensors) {
             if (sensor.smokeDetected) {
diff --git a/Main.java b/Main.java
index 5fcde3a..6d3d96b 100644
--- a/Main.java
+++ b/Main.java
@@ -1,18 +1,27 @@
 class Main {
     
+    /**
+     * Main -metode for å teste FireProtectionSystem -classen
+     * Det som foregår her simulerer alle "input" til
+     * systemet.
+     * 
+     * @param args
+     */
     public static void main(String[] args) {
-        
+        // Oppretter et nytt objekt
         FireProtectionSystem system = new FireProtectionSystem();
 
-        // Installere sensorere
-        Sensor[] mySensors = new Sensor[4];
+        // Installere sensorer
+        // Lager en array { null, null, null, null }
+        Sensor[] mySensors = new Sensor[4]; 
         for (int i = 0; i < mySensors.length; i++) {
+            // Oppretter nytt Sensor -objekter og putter det inn i arrayen
             mySensors[i] = new Sensor();
         }
         system.installSensor(mySensors);
 
         // Installere alarmer
-        Alarm myAlarm = new Alarm();
+        Alarm myAlarm = new Alarm();  // Oppretter et nytt Alarm -objekt
         system.installAlarm(myAlarm);
 
         // Oppdag røyk
@@ -20,6 +29,7 @@ class Main {
         mySensors[1].setSmokeDetected(true);
 
         // Fjern røyk
-        mySensors[0].setSmokeDetected(false);
+        mySensors[0].setSmokeDetected(false); // Alarmen skal ikke gå av enda, men
+        mySensors[1].setSmokeDetected(false); // Nåå forventer vi at alarmen går av
     }
 }
\ No newline at end of file
diff --git a/Sensor.java b/Sensor.java
index fb35a67..6d40e0e 100644
--- a/Sensor.java
+++ b/Sensor.java
@@ -1,9 +1,16 @@
-
-
+/**
+ * En abstraksjon av en fysisk sensor. Er ansvarlig for kommunikasjon
+ * med en eventuell fysisk sensor; i vårt tilfelle gjør vi istedet
+ * tilgjengelig en metode <code>setSmokeDetected</code> for testing.
+ */
 public class Sensor {
     boolean smokeDetected;
     FireProtectionSystem system;
 
+    /**
+     * Setter hvorvidt røyk er oppdaget.
+     * @param smokeDetected
+     */
     public void setSmokeDetected(boolean smokeDetected) {
         this.smokeDetected = smokeDetected;
         if (smokeDetected) {
@@ -14,6 +21,11 @@ public class Sensor {
         }
     }
 
+    /**
+     * Installer et brannvarslingssystem denne sensoren rapporterer til
+     * når den oppdager røyk.
+     * @param system
+     */
     void installSystem(FireProtectionSystem system) {
         this.system = system;
     }
-- 
GitLab