![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Инкапсуляция и интерфейсы в Delphi: как сохранить принципы при их определенииDelphi , Технологии , Объектно-ориентированное программированиеИнкапсуляция – это один из ключевых принципов объектно-ориентированного программирования, который заключается в скрытии внутреннего устройства объекта и предоставлении внешнего интерфейса для взаимодействия с ним. В языке программирования Delphi, когда мы создаем класс, обычно мы имеем приватные поля, приватные методы сеттеров и геттеров, и публичное свойство, через которое осуществляется доступ к данным объекта. Таким образом, свойство инкапсулирует методы сеттера и геттера, которые, в свою очередь, инкапсулируют приватные поля класса. Однако, когда мы определяем интерфейс в Delphi, мы вынуждены экспонировать методы геттера и сеттера, что может показаться нарушением принципа инкапсуляции:
При реализации класса, который поддерживает данный интерфейс, мы также определяем свойство с теми же геттером и сеттером:
Использование класса через интерфейс:
Вопрос заключается в том, не нарушает ли инкапсуляция тот факт, что методы геттера и сеттера, которые являются внутренними для конкретного класса, экспонируются через интерфейс? Подтвержденный ответ заключается в том, что методы являются основным способом взаимодействия с интерфейсом, и свойства в интерфейсах – это лишь синтаксический сахар для облегчения работы с методами. В интерфейсах методы по определению публичные, и они не инкапсулируются свойствами. Вы не раскрываете никаких деталей реализации, показывая, что свойство поддерживается методами, потому что в интерфейсах свойства всегда поддерживаются методами, и методы всегда публичные. Инкапсуляция не может быть нарушена, если она никогда не существовала. Таким образом, при определении интерфейсов в Delphi важно помнить, что методы, которые он экспонирует, являются публичными, и через них пользователи интерфейса будут взаимодействовать с объектом. Свойства в интерфейсах служат в основном для удобства, но они не изменяют публичный характер методов. Инкапсуляция в контексте объектно-ориентированного программирования и использования интерфейсов в Delphi подразумевает, что публичные методы геттера и сеттера, экспонируемые через интерфейс, являются основным способом взаимодействия с объектом, а свойств Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Объектно-ориентированное программирование ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |