From 600215599c81539455ce8139c4b9ee9b76bfe9d9 Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Sun, 19 Jul 2015 14:02:41 +0300 Subject: [PATCH] #90 Added class diagram --- front-controller/etc/front-controller.png | Bin 0 -> 27672 bytes front-controller/etc/front-controller.ucls | 135 +++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 front-controller/etc/front-controller.png create mode 100644 front-controller/etc/front-controller.ucls diff --git a/front-controller/etc/front-controller.png b/front-controller/etc/front-controller.png new file mode 100644 index 0000000000000000000000000000000000000000..77c14ef019cc2864c159a9600095e7117c479916 GIT binary patch literal 27672 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file