<diagram program="umletino" version="14.3.0"><zoom_level>10</zoom_level><element><id>UMLClass</id><coordinates><x>440</x><y>99</y><w>110</w><h>160</h></coordinates><panel_attributes>Animation -- run_one_cycle() start() -- cycle_ms balls</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>450</x><y>9</y><w>70</w><h>30</h></coordinates><panel_attributes>main </panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>710</x><y>99</y><w>110</w><h>160</h></coordinates><panel_attributes>Ball -- run_one_cycle() -- diameter colors color id</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>300</x><y>339</y><w>200</w><h>220</h></coordinates><panel_attributes>Canvas (a tkinter class) -- create_XXX(position, options) : id move(id, x, y) coords(id, position) itemconfigure(id, XXX=YYY) -- width height</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>140</x><y>59</y><w>150</w><h>210</h></coordinates><panel_attributes>GUI -- make_canvas() : Canvas start() animation_loop() -- root frame canvas </panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>470</x><y>30</y><w>80</w><h>90</h></coordinates><panel_attributes>lt=<- m2=constructs m1=calls start</panel_attributes><additional_attributes>10;70;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>540</x><y>120</y><w>190</w><h>50</h></coordinates><panel_attributes>lt=<- m1=1..* m2=1 constructs</panel_attributes><additional_attributes>170;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>280</x><y>110</y><w>180</w><h>50</h></coordinates><panel_attributes>lt=<- m1=1 m2=1 constructs</panel_attributes><additional_attributes>10;20;160;20</additional_attributes></element><element><id>Relation</id><coordinates><x>200</x><y>260</y><w>120</w><h>100</h></coordinates><panel_attributes>lt=<- constructs m1=1 m2=1</panel_attributes><additional_attributes>100;80;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>490</x><y>250</y><w>240</w><h>110</h></coordinates><panel_attributes>lt=<- m1=1 m2=1 m1pos=5,0 m2pos=15,0 </panel_attributes><additional_attributes>10;90;220;10</additional_attributes></element><element><id>Relation</id><coordinates><x>280</x><y>160</y><w>180</w><h>40</h></coordinates><panel_attributes>lt=<- calls run_one_cycle</panel_attributes><additional_attributes>160;20;10;20</additional_attributes></element><element><id>UMLNote</id><coordinates><x>30</x><y>90</y><w>110</w><h>170</h></coordinates><panel_attributes>Note.. bg=green root repeatedly calls animation_loop using the Tk after method</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLNote</id><coordinates><x>500</x><y>370</y><w>340</w><h>150</h></coordinates><panel_attributes>Note.. bg=green create_oval puts the Ball on the Canvas move. moves the Ball BY a random small amount coords. moves the Ball TO a random position itemconfigure. changes the Ball's fill color</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>540</x><y>170</y><w>190</w><h>40</h></coordinates><panel_attributes>lt=<- calls run_one_cycle</panel_attributes><additional_attributes>170;20;10;20</additional_attributes></element></diagram>