Преимущества объектно-ориентированного программирования

Преимущества объектно-ориентированного программирования
Преимущества объектно-ориентированного программирования - laviperchik @ Unsplash

Примечание: этот вопрос представляет собой отредактированный отрывок из записи в блоге , которую я написал несколько месяцев назад. После размещения ссылки на блог в комментарии на Programmers.SE кто-то попросил меня разместить здесь вопрос, чтобы они могли на него ответить. Эта публикация является моей самой популярной, так как люди часто пишут в Google: «Я не понимаю объектно-ориентированное программирование». Не стесняйтесь отвечать здесь или в комментарии на Wordpress.

Что такое объектно-ориентированное программирование? Никто не дал мне удовлетворительного отвечать. я чувствую, что ты не получишь хорошее определение от того, кто ходит вокруг, говоря «объект» и «объектно-ориентированный» носом в воздух. Вы также не получите хорошего определение от того, кто сделал ничего, кроме объектно-ориентированного программирование. Никто, кто понимает как процедурные, так и объектно-ориентированные программирование когда-либо давало мне последовательное представление о том, что такое объектно-ориентированная программа на самом деле делает.

Может ли кто-нибудь дать мне свое представление о преимуществах объектно-ориентированного программирования?

Думайте о программном обеспечении как о машине или сборочной линии, которая существует внутри компьютера. Некоторое сырье и компоненты подаются в машину, и следует ряд процедур для их переработки в конечный продукт. Процедуры настроены на выполнение определенной операции с некоторым сырьем или компонентом с определенным набором параметров (например, время, температура, расстояние и т. д.) в определенном порядке. Если детали выполняемой операции были неверными, или датчики машины были неправильно откалиброваны, или если какое-либо сырье или компонент не соответствовали ожидаемым стандартам качества, это могло изменить результат операции, и продукт не получился. как и ожидалось.

Такая машина очень жесткая в работе и приемлемая. Машины не подвергают сомнению ни интеллект разработчиков, ни текущую рабочую среду. Он будет продолжать следовать процедурам, пока это предписано. Даже если изменение исходных материалов или компонентов может сильно повлиять на то, что произойдет в последующих операциях, машина все равно будет выполнять свои процедуры. Процесс необходимо будет пересмотреть, чтобы увидеть, какие изменения в процедурах необходимы для компенсации и получения желаемого результата. Изменение конструкции или конфигурации продукта может также потребовать существенного изменения выполняемых операций или их порядка. Хотя ответственные за производство быстро осознали важность максимально возможной изоляции операций, чтобы уменьшить нежелательные эффекты между ними, делается много предположений о состоянии компонентов во время их обработки; предположения, которые могут быть не обнаружены до тех пор, пока конечный продукт не окажется в руках пользователя в какой-либо другой операционной среде.

Вот что такое процедурное программирование.

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

Что касается преимуществ объектно-ориентированного программного обеспечения по сравнению с необъектно-ориентированным программным обеспечением:

  • поведение, зависящее от компонента - возложение ответственности за детали того, как обрабатывать конкретный компонент, на меньшую машину, специфичную для компонента, гарантирует, что каждый раз, когда этот компонент обрабатывается, его машина будет делать это надлежащим образом;
  • полиморфные выражения — поскольку машины, специфичные для компонентов, выполняют операции, адаптированные к конкретным компонентам, одно и то же сообщение, отправленное на разные машины, может действовать по-разному;
  • абстракция типов — часто имеет смысл для нескольких различных типов компонентов использовать один и тот же словарь для операций, выполняемых их машинами;
  • разделение задач - передача деталей, специфичных для компонентов, на их машины означает, что технологической машине нужно обрабатывать только более общие, более крупные задачи своего процесса и данные, необходимые для управления им; плюс, меньше вероятность того, что на него повлияют изменения в других компонентах;
  • адаптируемость - компоненты, ориентированные на область своей специализации, можно адаптировать для непредвиденного использования, просто изменив используемые компоненты или сделав их доступными для другой технологической машины;
  • повторное использование кода — компоненты с узкой направленностью и большей адаптируемостью могут использовать свои затраты на разработку за счет более частого использования.

LetsCodeIt, 19 мая 2023 г., 22:06