Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
0
0124 FireProtectionSystem
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Mattias.Nordahl
0124 FireProtectionSystem
Commits
aa9ce373
There was an error fetching the commit references. Please try again later.
Commit
aa9ce373
authored
2 years ago
by
Torstein Strømme
Browse files
Options
Downloads
Patches
Plain Diff
La til noe forklarende kommentarer til koden fra forelesning 24.01
parent
4228225f
No related branches found
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
Alarm.java
+11
-2
11 additions, 2 deletions
Alarm.java
FireProtectionSystem.java
+27
-0
27 additions, 0 deletions
FireProtectionSystem.java
Main.java
+15
-5
15 additions, 5 deletions
Main.java
Sensor.java
+14
-2
14 additions, 2 deletions
Sensor.java
with
67 additions
and
9 deletions
Alarm.java
+
11
−
2
View file @
aa9ce373
/**
* 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
);
...
...
This diff is collapsed.
Click to expand it.
FireProtectionSystem.java
+
27
−
0
View file @
aa9ce373
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
)
{
...
...
This diff is collapsed.
Click to expand it.
Main.java
+
15
−
5
View file @
aa9ce373
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
This diff is collapsed.
Click to expand it.
Sensor.java
+
14
−
2
View file @
aa9ce373
/**
* 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
;
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment