Сеттер (программирование)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Пример на Java:

 public class ScheduleTask {
     
     private int hours;
     
     public void setHours(int hours) {
         if ((hours >= 0) && (hours < 24))
             this.hours = hours;
     }
 }

Здесь для изменения скрытого поля hours нужно использовать сеттер setHours, который будет следить за тем, чтобы оно принимало только допустимые значения.

В C# благодаря синтаксическим возможностям (контекстные ключевые слова set и value — использующееся только в сеттере) чаще применяется другая методика:

  public class ScheduleTask
  {
    private int hours;
    public int Hours
    {
      set
      {
         if ( (value >= 0) && (value < 24) )
         {
           hours = value;
         }
      }
    }
  }

При этом возможно использование и через публичный метод, так как фактически конструкцию set { ... } компилятор C# преобразует в метод класса.

Сеттер в VB.NET обязан иметь модификатор WriteOnly, если не будет реализован геттер:

Public Class Foo
    Private m_Data As Integer 'Закрытое поле с данными
    Public Property Message As Integer 'Автореализуемое свойство, начиная с VB 10.0

    Public WriteOnly Property Data  As Integer 'Открытое свойство только для записи
        Set(Value As Integer)
            m_Data = Value
        End Set
    End Property
End Class