diff --git a/Alarm.java b/Alarm.java index 7ac8f98b6d1d2e89a9cfbb2798dbe9c316c19e51..c9a3f7afa197e8e495a56b15db6dffba546c1640 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 4be6633ee234535ea82887ffd5b3e80e8a070de5..23b2c56408c8db8d4f0d5e76f0cd1f98bbcfb48d 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 5fcde3ace1b5ae645ebbdd624bbf7c6793107b29..6d3d96b0f728677841b9607a2fc18aa4ef6f40c0 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 fb35a67fd7f27bfe17c6902a758e48c5422c6099..6d40e0e7822883ea8a7456319ad379573c94f0f8 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; }