From e7e0deb5bbc879715f979d5e1fa40230e612b950 Mon Sep 17 00:00:00 2001 From: jhugunin Date: Thu, 28 Aug 2003 17:34:09 +0000 Subject: [PATCH] UML diagram built with Argo UML (http://argouml.tigris.org) --- docs/teaching/exercises/figures.zargo | Bin 0 -> 21599 bytes docs/teaching/exercises/figures_classes.gif | Bin 0 -> 14202 bytes docs/teaching/exercises/figures_classes.svg | 298 ++++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 docs/teaching/exercises/figures.zargo create mode 100644 docs/teaching/exercises/figures_classes.gif create mode 100644 docs/teaching/exercises/figures_classes.svg diff --git a/docs/teaching/exercises/figures.zargo b/docs/teaching/exercises/figures.zargo new file mode 100644 index 0000000000000000000000000000000000000000..c042c5969c3918a86f7c4238498c5c7355caa75c GIT binary patch literal 21599 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 U)JVw)-;(1$lK>(jdu_t)f4}aXumAu6 literal 0 HcmV?d00001 diff --git a/docs/teaching/exercises/figures_classes.gif b/docs/teaching/exercises/figures_classes.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5952fb9ebb974df7b5f26bb2c6c6cb93c9190a4 GIT binary patch literal 14202 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 + + + + + + + + + +<<Interface>> + + + +FigureElement + + + + + +move(dx: int,dy: int) : void + +getBounds() : Rectangle + +contains(p: Point2D) : boolean + +paint(g2: Graphics2D) : void + + + + + + + +ShapeFigureElement + + + + + +move(dx: int,dy: int) : void + +getShape() : Shape + +getBounds() : Rectangle + +contains(p: Point2D) : boolean + +getLineColor() : Color + +getFillColor() : Color + +paint(g2: Graphics2D) : void + + + + + + + +Group + + + +<<create>> Group(first: FigureElement) + +add(fe: FigureElement) : void + +members() : Iterator + +move(dx: int,dy: int) : void + +setIdentifier(identifier: String) : void + +toString() : String + +getBounds() : Rectangle + +contains(p: Point2D) : boolean + +paint(g2: Graphics2D) : void + +size() : int + + + + + + + +Point + + + +<<create>> Point(x: int,y: int) + +getX() : int + +getY() : int + +setX(x: int) : void + +setY(y: int) : void + +move(dx: int,dy: int) : void + +toString() : String + +getShape() : Shape + + + + + + + +Line + + + +<<create>> Line(p1: Point,p2: Point) + +getP1() : Point + +getP2() : Point + +move(dx: int,dy: int) : void + +toString() : String + +contains(p: Point2D) : boolean + +getLine2D() : Line2D + +getShape() : Shape + + + + + + + +Box + + + +<<create>> Box(x0: int,y0: int,width: int,height: int) + +getP0() : Point + +getP1() : Point + +getP2() : Point + +getP3() : Point + +move(dx: int,dy: int) : void + +checkBoxness() : void + +toString() : String + +getShape() : Shape + + + + + + + +SlothfulPoint + + + +<<create>> SlothfulPoint(x: int,y: int) + +getX() : int + +getY() : int + +setX(x: int) : void + +setY(y: int) : void + +move(dx: int,dy: int) : void + +toString() : String + +getShape() : Shape + + + + + + + +Log + + + + +data : List + + + + +traceObject(o: Object) : void + + +log(s: String) : void + + +getData() : List + + +clear() : void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +* + + + + + + +2 + + + + + + +4 + -- 2.39.5