From 54831ea869e7e9da3e7b911f57de5949067c0bc5 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Sat, 5 Oct 2024 17:23:20 +0200 Subject: more design thoncc --- docs/class-diag.puml | 105 +++++++++++++++++++++++++----------------------- docs/hide-details.ipuml | 2 + 2 files changed, 57 insertions(+), 50 deletions(-) (limited to 'docs') diff --git a/docs/class-diag.puml b/docs/class-diag.puml index eef4cf2..96a57f2 100644 --- a/docs/class-diag.puml +++ b/docs/class-diag.puml @@ -21,7 +21,7 @@ exception Exception { # va_format(va_list args, const char* fmt) } -rectangle "File reading" <> { +rectangle Group_FileReading as "File reading" <> { class FileReader <> { +open(url) : File& } @@ -53,42 +53,46 @@ rectangle "File reading" <> { CPR.Response - CPR.Url } -rectangle "Parsing & deserialization" <> { - interface Parser { - + parse(File) +rectangle Group_ParsingDeserialization as "Parsing & deserialization" <> { + interface ParserStrategy { + + parse(File, Deserializer) + heuristic(File) : unsigned int } - File <.. Parser + ParserStrategy ..> File class CSVParser class XMLParser class TXTParser - Parser <|-- CSVParser - Parser <|-- TXTParser - Parser <|-- XMLParser + CSVParser ..|> ParserStrategy + TXTParser ..|> ParserStrategy + XMLParser ..|> ParserStrategy - class Deserializer + class Deserializer { + + set_target(Museum &) + } class PeopleDeserializer { - + set_target(People &) - -- - + add_artist(float, float, float, float) + + add_artist(uniq) } class CanvasDeserializer { - + set_target(Canvas &) - -- + set_rows(unsigned int) - + set_meta_cols(unsigned int) - + add_meta_type(string, Color, unsigned int) - + add_tile(unsigned int, unsigned int, string) + + set_cols(unsigned int) + + add_type(string, Color, unsigned int) + + add_tile(unsigned int x, unsigned int y, uniq) } - Deserializer <|-- PeopleDeserializer - Deserializer <|-- CanvasDeserializer + PeopleDeserializer -up-|> Deserializer + CanvasDeserializer -up-|> Deserializer + + CSVParser -up-> PeopleDeserializer + XMLParser -up-> CanvasDeserializer + TXTParser -up-> CanvasDeserializer + + ' ParserStrategy ..> Deserializer } -rectangle "Model" <> { +rectangle Group_Model as "Model" <> { class Canvas { + get_tile(x, y) + set_tile(x, y) @@ -96,6 +100,7 @@ rectangle "Model" <> { - tiles : Tile[] } class People { + + add_artist(uniq) : void - artists : Artist[] } class Museum { @@ -154,36 +159,36 @@ rectangle "Visualization" <> { View --> SDL2 } -class TileAppearance { - + color : Color -} - -class TileBehavior - -class GrayTileBehavior -class RedTileBehavior -class BlueTileBehavior -class YellowTileBehavior - -struct Color { - red : unsigned int - green : unsigned int - blue : unsigned int -} - -PeopleDeserializer <... People -CanvasDeserializer <... Canvas -Deserializer <... Museum - -TileBehavior <|-- GrayTileBehavior -TileBehavior <|-- RedTileBehavior -TileBehavior <|-- BlueTileBehavior -TileBehavior <|-- YellowTileBehavior - -TileAppearance .r Color - -' LAYOUT -PeopleDeserializer -r[hidden] CanvasDeserializer +' class TileBehavior +' +' class GrayTileBehavior +' class RedTileBehavior +' class BlueTileBehavior +' class YellowTileBehavior +' +' TileBehavior <|-- GrayTileBehavior +' TileBehavior <|-- RedTileBehavior +' TileBehavior <|-- BlueTileBehavior +' TileBehavior <|-- YellowTileBehavior + +' struct Color { +' red : unsigned int +' green : unsigned int +' blue : unsigned int +' } + +' PeopleDeserializer <... People +' CanvasDeserializer <... Canvas +' Deserializer <... Museum + +' class TileAppearance { +' + color : Color +' } +' +' TileAppearance .r Color + +' Museum .> Deserializer : friend +Deserializer .> Museum @enduml diff --git a/docs/hide-details.ipuml b/docs/hide-details.ipuml index c67758e..e2d926b 100644 --- a/docs/hide-details.ipuml +++ b/docs/hide-details.ipuml @@ -1,2 +1,4 @@ ' vim:ft=plantuml hide members +skinparam Nodesep 40 +skinparam Ranksep 40 -- cgit v1.2.3