summaryrefslogtreecommitdiff
path: root/docs/diagrams/units-class-diagram.plantuml.txt
blob: 7baf168501156c598ab2ac652b6151fd89502da3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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