summaryrefslogtreecommitdiff
path: root/docs/diagrams
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2021-08-26 11:26:02 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2021-08-26 11:26:02 -0500
commit208c56b56940e58fae1253a8d38e9e56249eb0cb (patch)
treec096d3a38089eeb2c3376440a95dcb1f13a1aed8 /docs/diagrams
parent3eab1082f65687085b04f59605673696353d5ede (diff)
Finished initial draft of design document
Diffstat (limited to 'docs/diagrams')
-rw-r--r--docs/diagrams/units-class-diagram.plantuml.pngbin0 -> 94248 bytes
-rw-r--r--docs/diagrams/units-class-diagram.plantuml.txt72
2 files changed, 72 insertions, 0 deletions
diff --git a/docs/diagrams/units-class-diagram.plantuml.png b/docs/diagrams/units-class-diagram.plantuml.png
new file mode 100644
index 0000000..7c68ab5
--- /dev/null
+++ b/docs/diagrams/units-class-diagram.plantuml.png
Binary files differ
diff --git a/docs/diagrams/units-class-diagram.plantuml.txt b/docs/diagrams/units-class-diagram.plantuml.txt
new file mode 100644
index 0000000..7baf168
--- /dev/null
+++ b/docs/diagrams/units-class-diagram.plantuml.txt
@@ -0,0 +1,72 @@
+@startuml
+abstract class Unit {
+ -unitBase : ObjectProduct<BaseUnit>
+ -nameSymbol : NameSymbol
+ -dimension : ObjectProduct<BaseDimension>
+ +{static} fromConversionFunctions(ObjectProduct<BaseUnit>, DoubleUnaryOperator, DoubleUnaryOperator) : Unit
+ #Unit(ObjectProduct<BaseUnit>, NameSymbol) : Unit
+ ~Unit(NameSymbol) : Unit
+ +canConvertTo(Unit) : boolean
+ +convertTo(Unit, double) : double
+ #convertFromBase(double) : double
+ #convertToBase(double) : double
+ +isMetric() : boolean
+ +withName(NameSymbol) : Unit
+}
+class BaseUnit {
+ -dimension : BaseDimension
+ -BaseUnit(BaseDimension, String, String, Set<String) : BaseUnit
+ +asLinearUnit() : LinearUnit
+}
+class LinearUnit {
+ -conversionFactor : double
+ +{static} valueOf(ObjectProduct<BaseUnit>, double) : LinearUnit
+ -LinearUnit(ObjectProduct<BaseUnit>, double, NameSymbol) : LinearUnit
+ +convertTo(LinearUnit, UncertainDouble) : UncertainDouble
+ +plus(LinearUnit) : LinearUnit
+ +minus(LinearUnit) : LinearUnit
+ +times(LinearUnit) : LinearUnit
+ +dividedBy(LinearUnit) : LinearUnit
+ +times(double) : LinearUnit
+ +dividedBy(double) : LinearUnit
+ +toExponent(int) : LinearUnit
+ +withPrefix(UnitPrefix) : LinearUnit
+ +withName(NameSymbol) : LinearUnit
+}
+class UnitPrefix {
+ -multiplier : double
+ +times(double) : UnitPrefix
+ +dividedBy(double) : UnitPrefix
+}
+class UnitDatabase {
+ -prefixlessUnits : Map<String, Unit>
+ -units : Map<String, Unit>
+ -prefixes : Map<String, UnitPrefix>
+ -dimensions : Map<String, ObjectProduct<BaseDimension>>
+ -unitExpressionParser : ExpressionParser<LinearUnit>
+ +loadUnitsFile(Path)
+ -addUnitOrPrefixFromLine(String, long)
+ +addUnit(String, Unit)
+ +containsUnitName(String) : boolean
+ +evaluateUnitExpression(String) : LinearUnitValue
+ +getUnit(String) : Unit
+}
+class UnitValue {
+ -unit : Unit
+ -value : double
+ +canConvertTo(Unit) : boolean
+ +convertTo(Unit) : UnitValue
+ +convertToLinear(LinearUnit) : LinearUnitValue
+}
+
+Unit <|-- BaseUnit
+Unit --* BaseUnit
+BaseDimension -o BaseUnit
+Unit <|-- LinearUnit
+Unit *- SI
+UnitValue --o Unit
+UnitDatabase --* Unit
+UnitDatabase --* UnitPrefix
+UnitDatabase --* BaseDimension
+UnitDatabase -* "4" ExpressionParser
+@enduml