Описание тега setter

Setter - это общедоступный метод мутатора, используемый в объектно-ориентированном программировании, который дает новое значение частному члену класса.

В информатике метод мутатора - это метод, используемый для управления изменениями переменной. Они также широко известны как "сеттерные" методы. Часто сеттер сопровождается "геттером" (также известным как метод доступа), который возвращает значение частной переменной-члена.

Метод мутатора, иногда называемый "установщиком", чаще всего используется в объектно-ориентированном программировании в соответствии с принципом инкапсуляции. Согласно этому принципу, переменные-члены класса делаются закрытыми, чтобы скрыть и защитить их от другого кода, и могут быть изменены только с помощью общедоступной функции-члена (метод мутатора), которая принимает желаемое новое значение в качестве параметра, при необходимости проверяет он и изменяет частную переменную-член.

Методы мутатора также могут использоваться в не объектно-ориентированных средах. В этом случае ссылка на изменяемую переменную передается мутатору вместе с новым значением. В этом сценарии компилятор не может запретить коду обойти метод мутатора и напрямую изменить переменную. Ответственность за то, чтобы переменная изменялась только с помощью метода мутатора, не изменялась напрямую, ложится на разработчиков.

В языках программирования, которые их поддерживают, свойства предлагают удобную альтернативу без отказа от инкапсуляции.

Альтернативой определению методов мутатора и доступа или блоков свойств является предоставление переменной экземпляра некоторой видимости, отличной от частной, и доступ к ней напрямую извне объектов. Более точный контроль прав доступа можно определить с помощью мутаторов и средств доступа. Например, параметр можно сделать доступным только для чтения, просто определив метод доступа, но не мутатор. Видимость двух методов может быть разной; часто бывает полезно, чтобы метод доступа был общедоступным, в то время как мутатор оставался защищенным, закрытым для пакета или внутренним.

Блок, в котором определен мутатор, предоставляет возможность проверки или предварительной обработки входящих данных. Если гарантировано, что весь внешний доступ осуществляется через мутатор, то эти шаги нельзя обойти. Например, если дата представлена ​​отдельными частными переменными года, месяца и дня, тогда входящие даты могут быть разделены мутатором setDate, в то время как для согласованности те же частные переменные экземпляра доступны через setYear и setMonth. Во всех случаях значения месяцев за пределами 1–12 могут быть отклонены одним и тем же кодом.

Источник: http://en.wikipedia.org/wiki/Mutator_method