Описание тега setter
В информатике метод мутатора - это метод, используемый для управления изменениями переменной. Они также широко известны как "сеттерные" методы. Часто сеттер сопровождается "геттером" (также известным как метод доступа), который возвращает значение частной переменной-члена.
Метод мутатора, иногда называемый "установщиком", чаще всего используется в объектно-ориентированном программировании в соответствии с принципом инкапсуляции. Согласно этому принципу, переменные-члены класса делаются закрытыми, чтобы скрыть и защитить их от другого кода, и могут быть изменены только с помощью общедоступной функции-члена (метод мутатора), которая принимает желаемое новое значение в качестве параметра, при необходимости проверяет он и изменяет частную переменную-член.
Методы мутатора также могут использоваться в не объектно-ориентированных средах. В этом случае ссылка на изменяемую переменную передается мутатору вместе с новым значением. В этом сценарии компилятор не может запретить коду обойти метод мутатора и напрямую изменить переменную. Ответственность за то, чтобы переменная изменялась только с помощью метода мутатора, не изменялась напрямую, ложится на разработчиков.
В языках программирования, которые их поддерживают, свойства предлагают удобную альтернативу без отказа от инкапсуляции.
Альтернативой определению методов мутатора и доступа или блоков свойств является предоставление переменной экземпляра некоторой видимости, отличной от частной, и доступ к ней напрямую извне объектов. Более точный контроль прав доступа можно определить с помощью мутаторов и средств доступа. Например, параметр можно сделать доступным только для чтения, просто определив метод доступа, но не мутатор. Видимость двух методов может быть разной; часто бывает полезно, чтобы метод доступа был общедоступным, в то время как мутатор оставался защищенным, закрытым для пакета или внутренним.
Блок, в котором определен мутатор, предоставляет возможность проверки или предварительной обработки входящих данных. Если гарантировано, что весь внешний доступ осуществляется через мутатор, то эти шаги нельзя обойти. Например, если дата представлена отдельными частными переменными года, месяца и дня, тогда входящие даты могут быть разделены мутатором setDate, в то время как для согласованности те же частные переменные экземпляра доступны через setYear и setMonth. Во всех случаях значения месяцев за пределами 1–12 могут быть отклонены одним и тем же кодом.