Думайте о программном обеспечении как о машине или сборочной линии, которая существует внутри компьютера. Некоторое сырье и компоненты подаются в машину, и следует ряд процедур для их переработки в конечный продукт. Процедуры настроены на выполнение определенной операции с некоторым сырьем или компонентом с определенным набором параметров (например, время, температура, расстояние и т. д.) в определенном порядке. Если детали выполняемой операции были неверными, или датчики машины были неправильно откалиброваны, или если какое-либо сырье или компонент не соответствовали ожидаемым стандартам качества, это могло изменить результат операции, и продукт не получился. как и ожидалось.
Такая машина очень жесткая в работе и приемлемая. Машины не подвергают сомнению ни интеллект разработчиков, ни текущую рабочую среду. Он будет продолжать следовать процедурам, пока это предписано. Даже если изменение исходных материалов или компонентов может сильно повлиять на то, что произойдет в последующих операциях, машина все равно будет выполнять свои процедуры. Процесс необходимо будет пересмотреть, чтобы увидеть, какие изменения в процедурах необходимы для компенсации и получения желаемого результата. Изменение конструкции или конфигурации продукта может также потребовать существенного изменения выполняемых операций или их порядка. Хотя ответственные за производство быстро осознали важность максимально возможной изоляции операций, чтобы уменьшить нежелательные эффекты между ними, делается много предположений о состоянии компонентов во время их обработки; предположения, которые могут быть не обнаружены до тех пор, пока конечный продукт не окажется в руках пользователя в какой-либо другой операционной среде.
Вот что такое процедурное программирование.
Что дает объектная ориентация, так это способ избавиться от предположений о состоянии компонентов; таким образом, операции, которые необходимо выполнить с этим компонентом, и способы его интеграции в конечный продукт. Другими словами, ООП — это как взять детали процесса для работы с каким-то конкретным компонентом и передать их на меньшую машину. Более крупная машина, отвечающая за процесс, сообщает машине, специфичной для компонента, какую операцию она ожидает выполнить, но оставляет детали для шагов для обработки машины, специфичной для компонента.
Что касается преимуществ объектно-ориентированного программного обеспечения по сравнению с необъектно-ориентированным программным обеспечением:
Рекомендую посмотреть эти видео для лучшего погружения в вопрос: