Первый принцип: сервис инкапсуляции 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 страниц, будет трудно реализовать это правило программными средствами. В этой связи открытые поля обычно не находят места на уровне определений классов, применяемых для решения реальных задач (исключением являются открытые поля, доступные только для чтения).
Инкапсуляция обеспечивает возможность сохранения целостности данных для состояния объекта. Вместо определения открытых полей (с помощью которых очень просто прийти к нарушению целостности данных), вашей привычкой должно стать определение частных полей данных, которые обрабатываются вызывающей стороной косвенно, с использованием одного из двух главных подходов.
• Определение пары традиционных методов чтения и модификации данных.
• Определение именованного свойства.
Суть любого их этих подходов заключается в том, что хорошо инкапсулированный класс должен скрыть от "любопытных глаз внешнего мира" необработанные данные и детали того, как выполняются соответствующие действия. Часто такой подход называют программированием "черного ящика". Красота этого подхода в том, что создатель класса имеет возможность изменить особенности реализации любого из своих методов, так сказать, "за кулисами", и нет никакой нужды отменять использование уже существующего программного кода (при условии, что имя метода остается прежним).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Сервис Depositfiles.com
Сервис Depositfiles.com Сервис Depositfiles.com позволяет воспользоваться как бесплатными, так и платными услугами по скачиванию файлов. Ссылка на файл, размещенный на данном файлообменном сервисе, имеет вид http://depositfiles.com/ files/3ifesf5sc. После перехода по подобной ссылке вы увидите веб-сайт
Сервис Dump.ru
Сервис Dump.ru Сервис Dump.ru интересен тем, что совершенно бесплатен и не требует обязательной регистрации. Впрочем, если вы намерены постоянно пользоваться этим ресурсом, смысл в бесплатной регистрации есть — вы сможете загружать на сервер файлы с максимальным размером не в
Сервис Filefactory.com
Сервис 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). На странице размещены изображения двух спидометров, а также кнопки, позволяющие
Меню Сервис
Меню Сервис Почта и новостиДля блокировки пункта Почта и новости используйте параметр типа DWORD ·RestGoMenu· со значением, равным 1 в разделе HKCUSoftwarePoliciesMicrosoftInternet ExplorerRestrictionsWindows UpdateВ меню Сервис присутствует строка Windows Update. Вы можете изменить данную строку на свою. Для этого
Меню Сервис
Меню Сервис Команды этого меню служат для управления состоянием текущего документа, а также для изменения некоторых параметров его оформления и отображения. С помощью меню Сервис вызываются диалоговые окна системных настроек, параметров отдельных документов, настроек
Степень инкапсуляции
Степень инкапсуляции Класс, рассмотренный выше, не полностью инкапсулирует свою реализацию. Если реализация изменяется, то еще имеется код, который может быть изменен. В частности, методы класса могут оказаться нарушенными. По всей видимости, они зависят от особенностей
2.4.5. Меню Сервис
2.4.5. Меню Сервис Меню Сервис предлагает несколько интересных возможностей. Первая из них — это функция подключения/отключения сетевого диска. Если ваш компьютер подключен к локальной сети, вы можете выбрать любую открытую папку, и ваш компьютер будет видеть ее как
6.3.5. Меню Сервис
6.3.5. Меню Сервис Меню Сервис содержит опции, с помощью которых можно удалять файлы cookie, журнал обозревателя, а также настраивать защиту от фишинга (подробнее об этом чуть позже) и блокировать всплывающие окна. Рассмотрим каждую опцию более подробно.? Удалить журнал