Инвариант в ООП
Не совсем понимаю концепцую инварианта. В вики написано:
Инвариант класса — инвариант, используемый для ограничения объектов класса. Методы класса должны сохранять инвариант. Во время создания классов устанавливаются их инварианты, которые постоянно поддерживаются между вызовами публичных методов.
Допустим у нас есть какой-то класс:
public class Sensor {
private int temperature;
public void setTemperature(int temp) {
if (temp > 0) {
this.temperature = temp;
} else {
throw new Something();
}
}
}
Здесь класс вроде как является инвариантным, посколько изменение свойства невозможно, но с другой стороны, мне не совсем понятно, где здесь устанавливается инвариант, это нужно прописывать в комментариях? А если нет свойств(stateless), то класс инвариантен(Ведь изменений нет)?