========== UML Syntax ========== Elements ======== component --------- .. UML:: elements-component component foo Syntax:: component foo package ------- .. UML:: elements-package package foo Syntax:: package foo interface --------- .. UML:: elements-interface interface foo Syntax:: interface foo bigpackage ---------- .. UML:: elements-bigpackage bigpackage foo --- foo.sw = (0, 0); foo.ne = (200,100); Syntax:: bigpackage foo --- foo.sw = (0, 0); foo.ne = (200,100); Proposal:: bigpackage foo elementfoo bar1 elementfoo bar2 elementfoo barn class ----- .. UML:: elements-class class foo "abstract" fields barfield1 barfield2 barfieldn methods barmethod1 barmethod2 barmethodn class bar bar1 "abstract" --- horizontally(50, hor_c, foo, bar); Syntax:: class foo "abstract" fields barfield1 barfield2 barfieldn methods barmethod1 barmethod2 barmethodn class bar bar1 --- horizontally(50, hor_c, foo, bar); Because MetaPost interprets specially integers within a variable name, class names containing integers must precede an additional variable name refering to that class in UML syntax. Note: "abstract" is additional. Connections =========== inherit ------- .. UML:: elements-inherit class foo inherit bar class bar --- horizontally(50, hor_c, foo, bar); Syntax:: class foo inherit bar class bar --- horizontally(50, hor_c, foo, bar); realize ------- .. UML:: elements-realize class foo realize bar class bar "abstract" --- horizontally(50, hor_c, foo, bar); Syntax:: class foo abstract bar class bar "abstract" --- horizontally(50, hor_c, foo, bar); dep --- .. UML:: elements-dep class foo dep bar "dependency" class bar --- horizontally(100, hor_c, foo, bar); Syntax:: class foo dep bar "dependency" class bar --- horizontally(100, hor_c, foo, bar); Note: "dependency" is obligatory use --- .. UML:: elements-use class foo use bar class bar --- horizontally(50, hor_c, foo, bar); Syntax:: class foo use bar class bar --- horizontally(50, hor_c, foo, bar); assoc ----- .. UML:: elements-assoc class fooA foo1 assoc - barA class fooB foo2 assoc role(foo) multi(1) - barB class fooC foo3 assoc compos - multi(*) barC class fooD foo4 assoc role(foo) multi(1) compos - multi(*) compos role(bar) barD class barA bar1 class barB bar2 class barC bar3 class barD bar4 --- horizontally(150, hor_cA, fooA, barA); horizontally(150, hor_cB, fooB, barB); horizontally(150, hor_cC, fooC, barC); horizontally(150, hor_cD, fooD, barD); vertically(50, ver_c, fooA, fooB, fooC, fooD); Syntax:: class fooA foo1 assoc - barA class fooB foo2 assoc role(foo) multi(1) - barB class fooC foo3 assoc compos - multi(*) barC class fooD foo4 assoc role(foo) multi(1) compos - multi(*) compos role(bar) barD class barA bar1 class barB bar2 class barC bar3 class barD bar4 --- horizontally(150, hor_cA, fooA, barA); horizontally(150, hor_cB, fooB, barB); horizontally(150, hor_cC, fooC, barC); horizontally(150, hor_cD, fooD, barD); vertically(50, ver_c, fooA, fooB, fooC, fooD); Proposal:: in class fooA foo1 assoc - barA "-" should be conditional naryassoc --------- .. UML:: elements-nary naryassoc nary class fooA foo1 assoc multi(1) - nary class barA bar1 assoc multi(*) - nary class barB bar2 assoc multi(*) - nary --- horizontally(150, hor_c, fooA, nary, barA); vertically(50, ver_c, barA, barB); Syntax:: naryassoc nary class fooA foo1 assoc multi(1) - nary class barA bar1 assoc multi(*) - nary class barB bar2 assoc multi(*) - nary --- horizontally(150, hor_c, fooA, nary, barA); vertically(50, ver_c, barA, barB); qual ---- .. UML:: elements-qual class foo qual q fields foobar assoc multi(*) compos - multi(1) bar class bar --- horizontally(150, hor_c, foo, bar); q.w = foo.e; Syntax:: class foo qual q fields foobar assoc multi(*) compos - multi(1) bar class bar --- horizontally(150, hor_c, foo, bar); q.w = foo.e; supply ------ .. UML:: elements-supply class foo supply bar class bar --- horizontally(50, hor_c, foo, bar); Syntax:: class foo supply bar class bar --- horizontally(50, hor_c, foo, bar); vobin ----- .. UML:: elements-vobin class foo vobin - bar class bar --- horizontally(50, hor_c, foo, bar); Syntax:: class foo vobin bar class bar --- horizontally(50, hor_c, foo, bar); Note: like assoc vobtransform ------------ .. UML:: elements-vobtransform class foo vobtransform - bar class bar --- horizontally(50, hor_c, foo, bar); Syntax:: class foo vobtransform - bar class bar --- horizontally(50, hor_c, foo, bar); Note: like assoc vobtransformsub --------------- .. UML:: elements-vobtransformsub class foo vobtransformsub - bar class bar --- horizontally(50, hor_c, foo, bar); Syntax:: class foo vobtransformsub - bar class bar --- horizontally(50, hor_c, foo, bar); Note: like assoc vobsubmatch ----------- .. UML:: elements-vobsubmatch class foo vobsubmatch bar class bar --- horizontally(50, hor_c, foo, bar); Syntax:: class foo vobsubmatch bar class bar --- horizontally(50, hor_c, foo, bar); seqobject --------- .. UML:: elements-seqobject seqobject foo seqobject bar --- horizontally(50, hor_c, foo, bar); Syntax:: seqobject foo seqobject bar --- horizontally(50, hor_c, foo, bar); sequence -------- .. UML:: elements-sequence seqobject foo seqobject bar sequence foobar call foo call bar "foobar" return return --- horizontally(50, hor_c, foo, bar); Syntax:: seqobject foo seqobject bar sequence foobar call foo call bar "foobar" return return --- horizontally(50, hor_c, foo, bar); Layout ====== horizontally ------------ .. UML:: elements-horizontally class fooA foo1 class fooB foo2 class fooC foo3 class fooD foo4 --- horizontally(50, hor_c, fooA, fooB, fooC, fooD); Syntax:: class fooA foo1 class fooB foo2 class fooC foo3 class fooD foo4 --- horizontally(50, hor_c, fooA, fooB, fooC, fooD); The first parameter ("50") the for space between objects. The second parameter("hor_c") is variable name for the layout's coordinate system. Proposal:: horizontally(50, fooA, fooB, fooC, fooD); Is name for CS could be optional. If not given, could use random name. vertically ---------- .. UML:: elements-vertically class fooA foo1 class fooB foo2 class fooC foo3 class fooD foo4 --- vertically(50, hor_c, fooA, fooB, fooC, fooD); Syntax:: class fooA foo1 class fooB foo2 class fooC foo3 class fooD foo4 --- vertically(50, ver_c, fooA, fooB, fooC, fooD); The first parameter ("50") the for space between objects. The second parameter("ver_c") is variable name for the layout's coordinate system. Proposal:: vertically(50, fooA, fooB, fooC, fooD); Is name for CS could be optional. If not given, could use random name. Linking ======= .. uml:: elements-linking page foo link syntax.gen.html page bar "Fenfire project" link fenfire projects.gen.html jlinkpackage org.fenfire.loom class View jlink jlinkpackage class LoomView jlink org.fenfire.loom.View clinkpackage Vob class Vob clink clinkpackage class CVob clink Vob.Vob --- horizontally(50, hor_c, foo, bar, View, LoomView, Vob, CVob); Syntax:: page foo link syntax.gen.html page bar "Fenfire project" link fenfire projects.gen.html jlinkpackage org.fenfire.loom class View jlink jlinkpackage class LoomView jlink org.fenfire.loom.View clinkpackage Vob class Vob clink clinkpackage class CVob clink Vob.Vob --- horizontally(50, hor_c, foo, bar, View, LoomView, Vob, CVob); Unknown ======= - left-of ? - right-of ? - above ? - under ?