% Part of the MetaUML manual. % Copyright (C) 2005 Ovidiu Gheorghies % % This program is free software; you can redistribute it and/or % modify it under the terms of the GNU General Public License % as published by the Free Software Foundation; either version 2 % of the License, or (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. input metauml; beginfig(1); save A, B; Class.A("A")("foo:int")("bar()"); Class.B("B")()(); A.nw = (0,0); B.s = A.ne + (30,30); Class_draw.A; Class_draw.B; drawRelation(aggregationUni) (A.n ..(30,30)..B.w); path cool; cool := A.e .. A.e+(20,10) .. B.s+(20,-40) .. B.s+(-10,-30) -- B.s; drawRelation(inheritance)(cool); endfig; beginfig(2); save A, B; Class.A("A")()(); Class.B("B")()(); A.nw = (0,0); B.sw = A.ne + (10,10); Class_draw.A; Class_draw.B; drawRelation(aggregationUni) (pathManhattanX(A.e, B.s)); drawRelation(inheritance) (pathManhattanY(A.n, B.w)); endfig; beginfig(3); save A, B; Class.A("A")()(); Class.B("B")()(); A.nw = (0,0); B.sw = A.ne + (10,10); Class_draw.A; Class_draw.B; stepX:=60; drawRelation(aggregationUni) (pathStepX(A.e, B.e, stepX)); stepY:=20; drawRelation(inheritance) (pathStepY(B.n, A.n, stepY)); pair X,Y; X := A.se + (0,-30); Y := X + (stepX, 0); draw A.se -- X dashed evenly; draw (xpart Y, ypart A.e) -- Y dashed evenly; drawdblarrow X + (0,15) -- Y + (0,15); label.top(btex stepX etex, .5[X,Y]); pair X,Y; X := B.n + (-70,-0); Y := X + (0, stepY); draw B.n -- X dashed evenly; draw B.n + (0,stepY) -- Y dashed evenly; drawdblarrow X + (15,0) -- Y + (15,0); label.lft(btex stepY etex, .5[X,Y]); endfig; beginfig(4); save A, B; Class.A("A")()(); Class.B("B")("a")(); A.nw = (0,0); B.sw = A.se + (30,5); Class_draw.A; Class_draw.B; untilX := B.left; drawRelation(association) (pathHorizontal(A.e, untilX)); draw B.nw -- B.sw + (0,-10) dashed evenly; label.bot(btex untilX etex, B.sw + (0,-10)); endfig; beginfig(5); save A, B; Class.A("A")()(); Class.B("B")("a")("foo()"); A.nw = (0,0); B.sw = A.ne + (-20,20); Class_draw.A; Class_draw.B; untilY:= B.bottom; drawRelation(association) (pathVertical(A.n, untilY)); draw B.sw -- B.sw + (-20,0) dashed evenly; label.lft(btex untilY etex, B.sw + (-20,-0)); endfig; beginfig(6); save A,B; Class.A("A")()(); Class.B("B")()(); B.nw = A.ne + (40,30); drawObjects(A,B); link(inheritance)(pathCut(A,B)(A.c -- B.c)); endfig; end