Инкапсуляция в Delphi

Очень красивое слово — инкапсуляция. Честно сказать, я не очень люблю кра­сивые слова, по которым сложно понять, что именно они означают. И несмотря на то что на первых порах вы не очень много внимания будете уделять структуре и качеству объектов, я постараюсь убедить вас в том, что эта тема очень важна.

 

Инкапсуляция — это свойство, благодаря которому разработчику, использую­щему определенный строительный блок (код), не нужно знать, как он на самом де­ле реализован и работает для корректного использования этого строительного бло­ка. Что это значит? Когда вы садитесь за руль автомобиля, вы знаете, как устроен его двигатель или коробка передач? Лично я понятия не имею. Нет, я в курсе, что двигатель ворочает коробку передач, а та передает свои усилия на колеса, и этого мне вполне достаточно, чтобы повернуть ключ, воткнуть первую передачу и начать движение.

 

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

Разрабатывая классы, вы можете объявлять его методы и свойства с различными правами доступа. Забегая вперед, скажу, что их немного: public, private, protected и published. Что имеется в виду под доступом? Открытые методы и классы видны другим классам.

 

Если я пишу программу и хочу добавить возможность шифрования, то я создаю экземпляр класса шифрования и смогу получить доступ только к ее открытым ме­тодам и свойствам. Мне абсолютно не важно, как класс шифрует, какой там алго­ритм и т. д. Для меня важно, чтобы он делал это качественно и надежно. Еще мне важно иметь возможность указать ключ и текст, с помощью которых будет проис­ходить шифрование, и возможность получить результат. Именно эти три возмож­ности обязательно должны быть открыты, а все остальное должно быть сокрыто от моих глаз и воздействия, чтобы я не смог испортить работу класса.

 

Сразу же дам совет — никогда не делайте открытыми переменные класса. Они должны быть закрыты, а если нужно иметь возможность воздействия на перемен­ные, то для этого лучше использовать методы или свойства (property). То есть для чтения и для изменения переменной должны использоваться только методы, без возможности прямого воздействия.

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

 

dle

Помоги проекту! Расскажи друзьям об этом сайте: