Первый принцип: сервис инкапсуляции C#

Первый принцип: сервис инкапсуляции C#

Понятие инкапсуляции отражает общее правило, согласно которому поля данных объекта не должны быть непосредственно доступны из открытого интерфейса. Если пользователь объекта желает изменить состояние объекта, то он должен делать это косвенно, с помощью методов чтения (get) и модификации (set). В C# инкапсуляция "навязывается" на уровне синтаксиса с помощью ключевых слов public, private, protected и protected internal, как было показано в главе 3. Чтобы проиллюстрировать необходимость инкапсуляции, предположим, что у нас есть следующее определение класса.

// Класс с одним общедоступным полем.

public class Book {

 public int numberOfPages;

}

Проблема общедоступных полей данных заключается в том, что такие элементы не имеют никакой возможности "понять", является ли их текущее значение действительным с точки зрения "бизнес-правил" данной системы. Вы знаете, что верхняя граница диапазона допустимых значений для int в C# очень велика (она равна 2147483647). Поэтому компилятор не запрещает следующий вариант присваивания.

// М-м-м-да…

static void Main(stting[] args) {

 Book miniNovel = new Book();

 miniNovel.numberOfPages = 30000000;

}

Здесь нет перехода за границы допустимости для данных целочисленного типа, но должно быть ясно, что miniNovel ("мини-роман") со значением 30000000 для numberOfPages (число страниц) является просто невероятным с практической точки зрения. Как видите, открытые поля не обеспечивают проверку адекватности данных. Если система предполагает правило, по которому мини-роман должен содержать от 1 до 200 страниц, будет трудно реализовать это правило программными средствами. В этой связи открытые поля обычно не находят места на уровне определений классов, применяемых для решения реальных задач (исключением являются открытые поля, доступные только для чтения).

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

• Определение пары традиционных методов чтения и модификации данных.

• Определение именованного свойства.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Степень инкапсуляции

Из книги Как функции, не являющиеся методами, улучшают инкапсуляцию автора Мейерс Скотт

Степень инкапсуляции Класс, рассмотренный выше, не полностью инкапсулирует свою реализацию. Если реализация изменяется, то еще имеется код, который может быть изменен. В частности, методы класса могут оказаться нарушенными. По всей видимости, они зависят от особенностей


Меню Сервис

Из книги Реестр Windows автора Климов Александр

Меню Сервис Почта и новостиДля блокировки пункта Почта и новости используйте параметр типа DWORD ·RestGoMenu· со значением, равным 1 в разделе HKCUSoftwarePoliciesMicrosoftInternet ExplorerRestrictionsWindows UpdateВ меню Сервис присутствует строка Windows Update. Вы можете изменить данную строку на свою. Для этого


Меню Сервис

Из книги КОМПАС-3D V10 на 100 % автора Кидрук Максим Иванович

Меню Сервис Команды этого меню служат для управления состоянием текущего документа, а также для изменения некоторых параметров его оформления и отображения. С помощью меню Сервис вызываются диалоговые окна системных настроек, параметров отдельных документов, настроек


41 Сервис

Из книги Человеческий фактор в программировании автора Константин Ларри Л


Сервис Depositfiles.com

Из книги Как найти и скачать в Интернете любые файлы автора Райтман М. А.

Сервис Depositfiles.com Сервис Depositfiles.com позволяет воспользоваться как бесплатными, так и платными услугами по скачиванию файлов. Ссылка на файл, размещенный на данном файлообменном сервисе, имеет вид http://depositfiles.com/ files/3ifesf5sc. После перехода по подобной ссылке вы увидите веб-сайт


Сервис Dump.ru

Из книги С компьютером на ты. Самое необходимое автора Егоров А. А.

Сервис Dump.ru Сервис Dump.ru интересен тем, что совершенно бесплатен и не требует обязательной регистрации. Впрочем, если вы намерены постоянно пользоваться этим ресурсом, смысл в бесплатной регистрации есть — вы сможете загружать на сервер файлы с максимальным размером не в


Сервис Filefactory.com

Из книги Быстрые деньги в Интернете [50 способов заработать, сидя дома у компьютера] автора Парабеллум Андрей Алексеевич

Сервис Filefactory.com Сервис Filefactory.com, аналогично и предыдущему рассмотренному файлообменному сервису, ограничивает возможность бесплатного скачивания файлов лимитом в 150 Мбайт/час. Кроме того, "бесплатным" пользователям ограничивается скорость загрузки, заблокирована


Сервис Ifolder.ru

Из книги автора

Сервис Ifolder.ru В свое время российский файлообменный сервис IFolder.ru был очень популярным среди активных интернет-пользователей благодаря возможности загружать файлы без каких-либо ограничений. В настоящее время ситуация изменилась, и сайт буквально нашпигован рекламными


Сервис Ipicture.ru

Из книги автора

Сервис Ipicture.ru Сервис Ipicture.ru — не совсем обычный файлообменный сервис, потому что на данном хостинге допустимы к размещению только графические файлы с расширениями gif, jpg, jpeg, png, bmp. При этом размер файла не ограничен, а лимиты значений ширины и высоты должны находиться в


Сервис Letitbit.net

Из книги автора

Сервис Letitbit.net Сервис Letitbit.net позиционируется как совершенно бесплатный хостинг, не имеющий ограничений по скорости передачи данных, размеру и времени хранения файлов. На деле все прозаичнее: бесплатным пользователям скорость ограничивается, разрешается скачивание в


Сервис Megaupload.com

Из книги автора

Сервис Megaupload.com Файлообменный сервис Megaupload.com представляет собой весьма удобное средство хранения данных с приличной скоростью скачивания. За 200 долларов вы можете заиметь пожизненное членство в элитном Mega-клубе или же совершенно бесплатно скачивать некоторое


Сервис Openfile.ru

Из книги автора

Сервис Openfile.ru Ссылка на файл, размещенный на данном файлообменном сервисе, имеет вид http://openfile.ru/367934/. После перехода по подобной ссылке вы увидите веб-сайт сервиса (рис. 4.16). Страница, приведенная на рис. 4.16, в реальности будет отличаться, т. к. смонтирована для удобства


Сервис Rapidshare.com

Из книги автора

Сервис Rapidshare.com Ссылка на файл, размещенный на данном файлообменном сервисе, имеет вид http://rapidshare.com/files/267601212/12345zz.rar.html. После перехода по подобной ссылке вы увидите веб-сайт сервиса (рис. 4.17). На странице размещены изображения двух спидометров, а также кнопки, позволяющие


2.4.5. Меню Сервис

Из книги автора

2.4.5. Меню Сервис Меню Сервис предлагает несколько интересных возможностей. Первая из них — это функция подключения/отключения сетевого диска. Если ваш компьютер подключен к локальной сети, вы можете выбрать любую открытую папку, и ваш компьютер будет видеть ее как


6.3.5. Меню Сервис

Из книги автора

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