Что сделало объектно-ориентированное программирование успешным?

Что сделало объектно-ориентированное программирование успешным?
Что сделало объектно-ориентированное программирование успешным? - nicknight @ Unsplash

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

Человеческий мозг может одновременно удерживать только столько концепций - на ум приходит часто цитируемый предел запоминания 7+/-2 независимых элементов.

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

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

Все важные концепции ОО предоставляют способы управления сложностью.

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

Абстракция - позволяет мне сосредоточиться на существенных характеристиках и игнорировать то, что не имеет значения.

Композиция - позволяет мне повторно использовать уже созданные компоненты в новых комбинациях.

Полиморфизм - позволяет мне запрашивать услугу, не беспокоясь о том, что разные объекты могут предоставлять ее по-разному.

Наследование - позволяет мне повторно использовать интерфейс или реализацию, предоставляя только те части, которые отличаются от предыдущих.

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

Принцип замещения Лискова - давайте не будем ставить друг другу ловушки, вводя странные зависимости.

Принцип открытости/закрытости - давайте разрешим расширение и модификацию таким образом, чтобы не рисковать сломать существующий код.

Инъекция зависимостей - давайте выведем композицию на новый уровень и соберем компоненты вместе гораздо позже.

Интерфейсно-ориентированная разработка - давайте выведем абстракцию на новый уровень и будем зависеть только от абстракции, никогда от конкретной реализации.

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - Вся суть объектно-ориентированного программирования

Прикрепленное видео 2 - Объектно ориентированное программирование


LetsCodeIt, 24 мая 2023 г., 08:46