@startuml
title <size: 30> US10 Class Diagram

interface Sensor {
    + getName() : String
    + getUnit() : String
    + getLog() : ArrayList<String>
}

interface Value<T> {
    + getValue() : T
    + getValueAsString() : String
}

class SimHardware {
     + getValue() : String
     + getValue(initialDate : String, finalDate : String) : String
}

class TemperatureSensor {
    - sensorName : String
    - TYPE : String
    - simHardware : SimHardware
    - unit : String
    - ArrayList<Value<Double>> : log

    + getName() : String
    + getReading() : Value<Double>
    + getLog() : ArrayList<String>
    - addValueToLog(value : Value<Integer>) : void
    + getUnit() : String
    + getType() : String
}

class TemperatureValue {
    - primitiveValue : double

    + getValue() : Double
    + getValueAsString() : String
    - isReadingValid(reading : String) : boolean
}

Value <|.. TemperatureValue
Sensor <|.. TemperatureSensor
TemperatureSensor .right.> TemperatureValue
TemperatureSensor .left.> SimHardware

@enduml