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