-
Notifications
You must be signed in to change notification settings - Fork 0
/
uml.drawio
226 lines (226 loc) · 22.9 KB
/
uml.drawio
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<mxfile host="65bd71144e">
<diagram id="qT5OGec3QdOGnVZmYam1" name="Page-1">
<mxGraphModel dx="2941" dy="1416" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="none" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="node5" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>ArabicWatch</b></p><hr size="1"/>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-140" y="1225" width="149" height="30" as="geometry"/>
</mxCell>
<mxCell id="26" style="edgeStyle=none;html=1;strokeColor=default;endArrow=none;endFill=0;" edge="1" parent="1" target="node8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="720" y="370" as="sourcePoint"/>
<mxPoint x="680" y="474" as="targetPoint"/>
<Array as="points">
<mxPoint x="720" y="474"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="node10" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>ControlPanelFrame</b></p><hr size="1"/>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="430" y="330" width="330" height="40" as="geometry"/>
</mxCell>
<mxCell id="node16" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>CountIncreaseTask</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ run(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="135" y="750" width="202" height="67" as="geometry"/>
</mxCell>
<mxCell id="node4" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;enumeration&gt;&gt;</i><br><b>DisplayMode</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">- name: String</p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">~ createWatch(StopWatch): Watch<br></p><p style="margin:0 0 0 4px;line-height:1.6;">+ getName(): String</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="424" y="730" width="258" height="140" as="geometry"/>
</mxCell>
<mxCell id="node7" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>GraphicWatch</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">- image : Image</p><p style="margin:0 0 0 4px;line-height:1.6;">- hourColor : Color</p><p style="margin:0 0 0 4px;line-height:1.6;">- minuteColor : Color</p><p style="margin:0 0 0 4px;line-height:1.6;">- secondColor : Color</p><hr size="1"><p style="margin: 0px 0px 0px 4px; line-height: 1.6;">- drawNeedle(Graphics2D, Color, double, double): void<br># paintComponent(Graphics): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-124" y="922" width="386" height="207" as="geometry"/>
</mxCell>
<mxCell id="node15" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>MouseActionListener</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ mouseClicked(MouseEvent): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-520" y="730" width="255" height="67" as="geometry"/>
</mxCell>
<mxCell id="node2" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>NumericWatch</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ update(): void</p><p style="margin:0 0 0 4px;line-height:1.6;">- getFormattedText() : String</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-370" y="922" width="200" height="100" as="geometry"/>
</mxCell>
<mxCell id="node0" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Observable</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ addObserver(Observer): void<br/># notifyObservers(): void<br/>+ removeObserver(Observer): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="110.5" y="201.5" width="251" height="117" as="geometry"/>
</mxCell>
<mxCell id="node14" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;interface&gt;&gt;</i><br><b>Observer</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ update(): void</p><p style="margin:0 0 0 4px;line-height:1.6;">+ dispose(): void<br></p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-188" y="210" width="136" height="100" as="geometry"/>
</mxCell>
<mxCell id="node12" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>RomanWatch</b></p><hr size="1"/>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="135" y="1225" width="153" height="30" as="geometry"/>
</mxCell>
<mxCell id="node6" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StopWatch</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">- id: int</p><p style="margin:0 0 0 4px;line-height:1.6;">- eventTimer : Timer</p><p style="margin:0 0 0 4px;line-height:1.6;">- count : long</p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;">+ start(): void<br>+ reset(): void<br>+ stop(): void</p><p style="margin:0 0 0 4px;line-height:1.6;">+ isRunning() : boolean</p><p style="margin:0 0 0 4px;line-height:1.6;">+ getId() : long</p><p style="margin:0 0 0 4px;line-height:1.6;">+ getDuration() : Duration</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="152" y="410" width="168" height="260" as="geometry"/>
</mxCell>
<mxCell id="node9" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StopWatchControlAll</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- showDialog(DisplayMode): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="430" y="572" width="246" height="67" as="geometry"/>
</mxCell>
<mxCell id="node8" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StopWatchControlRow</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- showDialog(DisplayMode): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="430" y="440" width="246" height="70" as="geometry"/>
</mxCell>
<mxCell id="node1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>StopWatchVisualizerFrame</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ dispose(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-525" y="420" width="260" height="67" as="geometry"/>
</mxCell>
<mxCell id="node13" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Watch</b></p><hr size="1"><p style="margin:0 0 0 4px;line-height:1.6;"><span style="background-color: initial;"># getStopWatchId() : long</span></p><p style="margin:0 0 0 4px;line-height:1.6;"><span style="background-color: initial;"># getHours() : int</span><br></p><p style="margin:0 0 0 4px;line-height:1.6;"># getMinutes() : int</p><p style="margin:0 0 0 4px;line-height:1.6;"># getSeconds() : int</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-220" y="438" width="200" height="210" as="geometry"/>
</mxCell>
<mxCell id="edge3" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;exitX=0.500;exitY=0.001;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;" parent="1" source="node5" target="node7" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-66" y="1172"/>
<mxPoint x="69" y="1172"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge9" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=circlePlus;startFill=0;endArrow=none;" parent="1" source="node16" target="node6" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="edge0" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;" parent="1" source="node7" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="80" y="882"/>
<mxPoint x="-120" y="882"/>
</Array>
<mxPoint x="80" y="922" as="sourcePoint"/>
<mxPoint x="-120" y="650" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="edge7" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=circlePlus;startFill=0;endArrow=none;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="1" source="node15" target="node13" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-170" y="754"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge4" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;" parent="1" source="node2" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-280" y="882"/>
<mxPoint x="-120" y="882"/>
</Array>
<mxPoint x="-120" y="650" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="edge8" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=circlePlus;startFill=0;endArrow=none;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="node14" target="node0" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="edge5" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;" parent="1" source="node12" target="node7" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="212" y="1172"/>
<mxPoint x="69" y="1172"/>
</Array>
<mxPoint x="166" y="1240" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="edge2" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;" parent="1" source="node6" target="node0" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="229" y="297"/>
<mxPoint x="225" y="297"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge6" value="" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=1;startArrow=none;endArrow=block;endSize=12;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="node13" target="node14" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="-120" y="330"/>
<mxPoint x="-120" y="330"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="node12" target="node12" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="9" value="" style="endArrow=none;html=1;rounded=0;exitX=0.997;exitY=0.488;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="node13" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="90" y="540" as="sourcePoint"/>
<mxPoint x="150" y="540" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="10" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="9" vertex="1" connectable="0">
<mxGeometry x="0.816" relative="1" as="geometry">
<mxPoint x="6" y="-12" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="15" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="9" vertex="1" connectable="0">
<mxGeometry x="-0.8457" relative="1" as="geometry">
<mxPoint y="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="16" value="" style="endArrow=none;html=1;rounded=0;" parent="1" target="node8" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="320" y="474" as="sourcePoint"/>
<mxPoint x="420" y="670" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="20" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="16" vertex="1" connectable="0">
<mxGeometry x="-0.7879" y="-1" relative="1" as="geometry">
<mxPoint y="-15" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="23" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="16" vertex="1" connectable="0">
<mxGeometry x="0.6546" relative="1" as="geometry">
<mxPoint x="8" y="12" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="17" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="node6" target="node9" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="350" y="615" as="sourcePoint"/>
<mxPoint x="430" y="610.003948497854" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="21" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="17" vertex="1" connectable="0">
<mxGeometry x="-0.7513" y="-3" relative="1" as="geometry">
<mxPoint x="3" y="-18" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="22" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="17" vertex="1" connectable="0">
<mxGeometry x="0.7635" y="2" relative="1" as="geometry">
<mxPoint y="18" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="27" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
<mxGeometry x="330.0041743672721" y="470.04904000120223" as="geometry">
<mxPoint x="358" y="-8" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="28" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
<mxGeometry x="730.0015432953562" y="390.00034997122464" as="geometry"/>
</mxCell>
<mxCell id="29" style="edgeStyle=none;html=1;exitX=0.867;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=default;endArrow=none;endFill=0;entryX=1.002;entryY=0.522;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="node9">
<mxGeometry relative="1" as="geometry">
<mxPoint x="720.0999999999999" y="370" as="sourcePoint"/>
<mxPoint x="676.0000000000005" y="474.2634730538923" as="targetPoint"/>
<Array as="points">
<mxPoint x="720" y="607"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="31" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
<mxGeometry x="330.0041743672721" y="605.4990400012023" as="geometry">
<mxPoint x="358" y="-8" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="32" style="edgeStyle=none;html=1;strokeColor=default;endArrow=none;endFill=0;entryX=0.003;entryY=0.529;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="node13">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-316" y="487" as="sourcePoint"/>
<mxPoint x="-360" y="591.2634730538923" as="targetPoint"/>
<Array as="points">
<mxPoint x="-316" y="550"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="33" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
<mxGeometry x="-305.9984567046438" y="507.00034997122464" as="geometry">
<mxPoint x="-1" y="-3" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="34" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
<mxGeometry x="-295.9984567046438" y="517.0003499712246" as="geometry">
<mxPoint x="55" y="17" as="offset"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>