ma2business.ru
Главная »

ООП (объектно-ориентированное программирование): что это такое

Законы и прочие темы

Структура ООП

Объекты и классы

Для упрощения кода программа разбита на самостоятельные блоки - объекты. В реальной жизни это может быть стол, чашка, человек, книга, здание и многое другое. В программировании объекты — это структуры данных: пользователь, кнопка, сообщение. Они, как и настоящие объекты, могут иметь свойства: цвет, содержимое или имя пользователя. А для объединения объектов со схожими свойствами существуют классы.

Класс — это «шаблон» для объекта, который описывает его свойства. Несколько объектов, похожих друг на друга, например, профили разных пользователей, будут иметь одинаковую структуру и, следовательно, принадлежат к одному классу. Каждый объект является экземпляром некоторого класса.

Понять, что такое ООП, поможет аналогия.

Атрибуты и методы

Объект — это набор переменных и функций, как и в традиционном функциональном программировании. Переменные и функции являются его свойствами.

Объект, класс, атрибуты и методы в ООП на примере

Принципы ООП

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

Абстракция

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

Пример: объекту класса "программист" вряд ли понадобятся свойства "кулинарные способности" или "любимый цвет". Они не влияют на его возможности как программиста. Но «основной язык программирования» и «рабочие навыки» — важные свойства, без которых нельзя описать программиста.

Доступный извне набор атрибутов и методов действует как интерфейс для доступа к объекту. Через них к нему могут обращаться другие структуры данных, и им не нужно знать, как именно устроен объект внутри.

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

Каждый объект является независимой структурой. Все, что ему нужно для работы, уже есть внутри него. Если он использует какую-то переменную, она будет описана в теле объекта, а не снаружи в коде. Это делает объекты более гибкими. Даже если внешний код будет переписан, логика работы не изменится.

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

Внутренняя структура одного объекта закрыта от других: снаружи «видны» только значения атрибутов и результаты выполнения методов.

Наследование

Вы можете создавать классы и объекты, похожие друг на друга, но немного отличающиеся — у них есть дополнительные атрибуты и методы. Более общее понятие в этом случае становится «родителем», а более конкретное и детальное – «наследником».

Упомянутый программист Иван — человек. Но «человек» — это более общее определение, не описывающее свойства, важные конкретно для программиста. Можно сказать, что класс «программист» наследуется от класса «человек»: программист тоже человек, но у него есть дополнительные свойства.

В этом случае разработчик Иван будет и человеком, и программистом одновременно. Он будет иметь наборы свойств из обоих классов.

У одного «родителя» может быть несколько дочерних структур. Например, от «человека» можно унаследовать не только «программист», но и «директор».

Одиночное и множественное наследие

Наследование позволяет реализовать сложные схемы с четкой иерархией «от общего к частному». Это делает код более понятным и масштабируемым. Нет необходимости многократно переписывать одни и те же свойства в разных объектах. Достаточно наследовать эти объекты от одного «родителя», и свойства «родителя» будут применены автоматически.

Полиморфизм

Одни и те же методы разных объектов могут выполнять задачи по-разному. Например, у «человека» есть метод «работать». Для «программиста» реализация этого метода будет означать написание кода, а для «директора» — рассмотрение вопросов управления. Но глобально оба будут работать.

Здесь важен единый подход и договоренности между специалистами. Если метод называется delete, то он должен что-то удалить. Как именно — зависит от объекта, но такой метод должен заниматься удалением. Более того: если оговорено, что «удаляющий» метод называется delete, то не обязательно вызывать его remove для какого-то объекта или как-то иначе. Это путает код.

Преимущества ООП

Модульность

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

Гибкость

Код ООП легко разрабатывать, дополнять и изменять. Это обеспечивает независимую модульную структуру. Взаимодействие с объектами, а не с логикой, упрощает понимание кода. Модификация не требует от вас погружения в то, как построено программное обеспечение. Благодаря полиморфизму можно быстро адаптировать код под требования задачи без описания новых объектов и функций.

Сохранение времени

Благодаря абстракции, полиморфизму и наследованию вам не нужно снова и снова писать один и тот же код. Это ускоряет разработку нового программного обеспечения. Интерфейсы и классы в ООП можно легко преобразовать в библиотеки, которые можно повторно использовать в новых проектах. ООП также экономит время при обслуживании и доработке приложения.

Безопасность

Программу сложно взломать, потому что инкапсулированный код недоступен извне.

Недостатки ООП

Трудный старт

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

Снижение производительности

Объектно-ориентированный подход несколько снижает производительность кода в целом. Программы работают немного медленнее из-за особенностей доступа к данным и большого количества сущностей.

Большой размер программы

Код, написанный с использованием ООП, обычно длиннее и занимает больше места на диске, чем «процедурный» код. Происходит это потому, что в такой программе хранится больше конструкций, чем в обычном процедурном скрипте.

Структура ООП Принципы ООП Преимущества ООП

Вам также может понравиться
Рубрики
Популярное