-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGantt-Observer.uml
64 lines (52 loc) · 1.39 KB
/
Gantt-Observer.uml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@startuml Gantt-Observer.png
class Observer {
void receiveEvent()
}
class Subscription {
void addObserver(Observer o)
void delObserver(Observer o)
void notifyObservers()
}
class Task implements Observer {
DateTime start_time
DateTime end_time
DateTime::Duration duration
ArrayRef[task] dependents
ArrayRef[task] depends_on
void calculateStart()
void calculateEnd()
void calculateDuration()
void addDependent(Task t)
void addDependsOn(Task t)
void receiveEvent()
void notifyStartChange()
void notifyEndChange()
void display()
}
class Task implements Subscription
@enduml
@startuml Gantt-Observer-seq.png
[-> task1 : start_time(12:00)
[-> task1 : duration(0:30)
[-> task2 : addDependsOn(task1)
task2 -> task1 : end_time
return end_time1
task2 -> task2 : start_time(end_time1)
task2 -> task1 : addObserver(task2)
[-> task1 : addDependent(task2)
[-> task2 : duration(0:30)
task2 -> task2 : calculateEnd()
[-> task1 : display()
[-> task2 : display()
[-> task1 : duration(0:45)
task1 -> task1 : calculateEnd()
task1 -> task1 : notifyEndChange()
task1 -> task1 : notifyObservers()
task1 -> task2 : receiveEvent()
task2 -> task1 : end_time
return end_time1
task2 -> task2 : start_time(end_time1)
task2 -> task2 : calculateEnd()
[-> task1 : display()
[-> task2 : display()
@enduml