To work with objects, either getting some information or changing it, we should use methods as it might not be a good idea to directly change objects fields.
Getters and setters avoid directly accessing or modifying attributes from outside of the class. They provide an opportunity to perform validation when setting attributes, or programmatically calculate values when getting attributes.
An example of this principle is hunger - you should not change person's hunger level directly, but feed them instead. Since it is common to set or get these values, we use getters and setters in OOP.
Consider a `Vehicle` that has `batteryVoltage` attribute. It is better that the `lowBattery` attribute is calculated based on the `batteryVoltage`, instead of being set directly.
In Dart, when you specify getters and setters, you must treat them as **fields**.
In Dart, when you specify getters and setters, you must treat them as attributes.