-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUML_Nodes
More file actions
119 lines (82 loc) · 2.44 KB
/
UML_Nodes
File metadata and controls
119 lines (82 loc) · 2.44 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
@startuml
' TODO
' --------
' ==== < CONFIGURATION > ====
hide empty members
hide <<function>> circle
' ==== END of < CONFIGURATION > ====
package "Storage" {
interface IPackageStockpile <<interface>> {
}
interface IPackageQueue <<interface>> {
}
IPackageQueue ..|> IPackageStockpile
}
' == END of package "Storage"
package "Nodes" {
interface IPackageReceiver <<interface>> {
+ {abstract} receive_package(p: Package&&) : void
+ {abstract} get_receiver_type(void) : ReceiverType {query}
+ {abstract} get_id(void) : ElementID {query}
}
enum ReceiverType <<enumeration>> {
}
IPackageReceiver ..> ReceiverType : <<uses>>
class ReceiverPreferences {
+ add_receiver(r: IPackageReceiver*) : void
+ remove_receiver(r: IPackageReceiver*) : void
+ choose_receiver(void) : IPackageReceiver*
}
class PackageSender {
+ receiver_preferences_: ReceiverPreferences
+ send_package(void) : void
+ get_sending_buffer(void) : std::optional<Package> {query}
# push_package(Package) : void
}
PackageSender *-- ReceiverPreferences
class Ramp {
+ Ramp(id: ElementID, di: TimeOffset) : void
+ deliver_goods(t: Time) : void
+ get_delivery_interval(void) : TimeOffset {query}
+ get_id(void) : ElementID {query}
}
Ramp --|> PackageSender
class Worker {
+ Worker(id: ElementID, pd: TimeOffset, q: std::unique_ptr<PackageQueue>) : void
+ do_work(t: Time) : void
+ get_processing_duration(void) : TimeOffset {query}
+ get_package_processing_start_time(void) : Time {query}
}
Worker --|> PackageSender
Worker ..|> IPackageReceiver
IPackageQueue --o Worker
class Storehouse {
+ Storehouse(id: ElementID, d: std::unique_ptr<IPackageStockpile>)
}
Storehouse ..|> IPackageReceiver
IPackageStockpile --o Storehouse
Ramp -[hidden]> Worker
Worker -[hidden]> Storehouse
' == POSITIONING ==
PackageSender -[hidden]> IPackageReceiver
' == END of POSITIONING ==
}
' == END of package "Nodes"
' .. HELPERS ----
' .. DATA TYPES --
together {
class Time << (T,orchid) primitive>>
class TimeOffset << (T,orchid) primitive>>
class ElementID << (T,orchid) primitive>>
class ProbabilityGenerator << (T,orchid) primitive>>
Time -[hidden] TimeOffset
TimeOffset -[hidden] ElementID
ElementID -[hidden] ProbabilityGenerator
}
' == END of together
' ==== < POSITIONING > ====
ReceiverPreferences <-[hidden]- IPackageStockpile
IPackageStockpile -[hidden]-> Storehouse
IPackageQueue -[hidden] Time
' ==== END of < POSITIONING > ====
@enduml