Защита полей от вмешательства извне

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002124.docx

 Защита полей от вмешательства извне

Поля, запрещенные для доступа извне, объявляются закрытыми. Методов доступа к ним не существует. Никаким способо изменить или получить значение невозмонжо. Как вариант, поле закрывается, открывается метод доступа по чтению.

 

Пример

Определить класс Точка, описывающий точки, расположенные на луче, выходящем из начала координат. Координаты точки полярны как для разработчика, так и для пользователя.

Объект должен иметь возможность передвигаться по лучу и выдавать информацию о своем теккущем положении.


 

class Точка

{

private double fi, d;

 

public Точка(double fi)

{ this.fi = fi; }

 

public void Установить(double d)

{ this.d=d;}

 

public double ВычислитьFI()

{return fi;}


public double ВыдатьD()

{ return d; }

}

 

class Program

{

public static void Main()

{

Точка t; double fi;

t = new Точка(Math.PI/2); t.Установить(5.0); fi=t.ВычислитьFI();

}

}

}

 

Альтернативой инкапсуляции с точки зрения защитных полей являются открытые поля доступные для чтения. Поле, открытое для чтения, может быть установлено конструктором. Дальнейшие изменения запрещены.

Пример аналогичен предыдущему, реализован через открытые поля для чтения.

 

class Точка

{

public readonly fi; private double d;

 

public Точка(double fi)

{ this.fi = fi; }

 

public void Установить(double d)

{ this.d=d;}

 

public double ВычислитьFI()

{return fi;}

 

public double ВыдатьD()

{ return d; }

}

 

class Program

{

public static void Main()

{

Точка t; double fi;

t = new Точка(Math.PI/2); t.Установить(5.0);

fi=t.fi; //45 градусов

}

}

}


Возможно использование открытых статических полей только для чтения. Такие поля должны иметь инициализатор. Значение поля устанавливается до создания объекта и изменение его (даже с помощью конструктора) невозможно.