Эту проблему можно решить несколькими способами.
1. Использование специализированных методов, соответствующих содержательным действиям в предметной области. Например, метод Grow в классе Person может реализовать естественный рост человека на протяжении некоторого периода:
public void Grow(int days)
{ . . . }
Реализация такого метода может быть достаточно реалистичной, учитывая возраст человека.
2. Реализацией ограничений в методах доступа:
public void SetHeight (double newHeight)
{
if ((newHeight>0)&&( newHeight<230)&& (newHeight>height))
height=newHeight;
}
3. Реализацией методов-свойств. О свойствах подробнее будет рассказано ниже.
Обратим внимание на важные следствия такого подхода. Класс с его методами и переменными становится в достаточной степени черным ящиком. Пользователю класса не известны ни особенности реализации методов класса, ни даже информационная структура класса. Это позволяет разделить программный проект на разные по роли фрагменты, которые часто взаимодействуют по принципу клиент-сервер. Клиент использует класс, зная его открытый интерфейс. Примером клиента является метод Main, использующий встроенные и пользовательские классы для решения конкретной задачи. Сервер – это класс, предоставляющий свои услуги. Разработчик серверного класса может изменять (совершенствовать) детали его устройства и функционирования, пока это не влияет на открытый интерфейс класса.
Контрольные вопросы:
1.Что такое инкапсуляция?
2.Что является базовым элементом инкапсуляции?
3.
Тема 5. Перегрузка операторов и функций
Лекция 15. Модификатор доступа переменных и функций
План:
1.Модификаторы доступа
2.Примеры использования модификаторов доступа
Основные понятия
Все члены класса - поля, методы, свойства - все они имеют модификаторы доступа. Модификаторы доступа позволяют задать допустимую область видимости для членов класса. То есть контекст, в котором можно употреблять данную переменную или метод.
В C# применяются модификаторы доступа представленные в приложении 10.
Основными из них являются:
public: публичный, общедоступный класс или член класса. Такой член класса доступен из любого места в коде, а также из других программ и сборок.
private: закрытый класс или член класса. Представляет полную противоположность модификатору public. Такой закрытый класс или член класса доступен только из кода в том же классе или контексте.
protected: такой член класса доступен из любого места в текущем классе или в производных классах.
internal: класс и члены класса с подобным модификатором доступны из любого места кода в той же сборке, однако он недоступен для других программ и сборок (как в случае с модификатором public).
protected internal: совмещает функционал двух модификаторов. Классы и члены класса с таким модификатором доступны из текущей сборки и из производных классов.
Объявление полей класса без модификатора доступа равнозначно их объявлению с модификатором private. Классы, объявленные без модификатора, по умолчанию имеют доступ internal.
Дата добавления: 2015-10-26; просмотров: 944;