igosja пишет:Мысль такова - ООП это дальнейшие шаги к абстракции; если бы программирование не двигалось в сторону абстракции, мы бы до сих пор программировали единицами и ноликами.
Нет ничего более абстрактного чем единицы и нолики. Найдите перфоркарту и расскажите о чем вам ее дырки поведали.
Для тех кто начинает изучать. Не все так сложно когда понимаешь и все очень сложно когда не понимаешь. Это общее правило изучения предмета? Это общее правило изучения любого предмета. Нет другого пути как создать в голове структуру ответственную за понимание этого предмета - понятие. Нейронно именно так все и происходит. Чтобы понять как устроен объект или явление - надо организовать определенным образом связи в мозгах. Пока эти связи не установлены - вы не понимаете. Устанавливаются - начинаете понимать, установились более-менее - поняли. Затем только наращивание мощности. Мощность потребляет ресурсы, требует приложения силы. Поэтому дело не в сложности - а в трудности. Хотите что-то понять - не бойтесь трудностей.
В программировании нет разницы из чего растут объекты. Это не реализация, а принцип. В процедуре вы имеете дело с набором типов данных. Целое, строка, с точкой, дата и тп. В объекте - со структурой. Структура описывается в классе. Затем нетрудно воткнуть в эту структуру ссылки на точки вызова функций и выложив по известным смещениям параметры - вот вам и методы. Которые в пределах выделенной памяти под подведомственную им структуру могут ей оперировать. Таким образом у процедуры нет интерфейса - у объекта он есть. Процедура может взаимодействовать с другими процедурами повинуясь коду процедуры main (грубо говоря, внепроцедурному коду). Обхект взаимодействует с другими объектами согласно плану - классу - через свой интерфейс.
Интерфейс это станция пересадки. Например я сейчас использую веб-интерфейс доступа к объекту БД этого форума. Поедая колбасу вы используете как интерфейс системы питания - рот и желудок.
Короче, если не понятно - смотрите первый абзац. Нельзя ничего понять не понимая.
(Добавление)
Много метафор для ООП, типа вот чертеж, вот здание. Это значит класс и объект. Прикольно, тогда инъекция объекта будет означать проникновение через окно, а статический объект - жизнь на чертеже. Типа на ночь дом собирают, на день разбирают.
Так вот, я еще одну придумал. Процедуры плавают в питательном бульоне пока их не соединят в объекты - в молекулы способные реплицироваться. Репликация обусловлена наличием интерфейса, того самого. Объект может взять и сам себя скопировать. А функция - не может. У нее нет плана постройки самой себя, у нее нет ДНК. У объекта - есть такой план - это класс. Поэтому ООП это жизнь, а ПП - не жизнь. Что не умаляет, конечно.
Кстати, жизнь с точки зрения ООП - абсолютно абстрактна. Способна появляться в любых достаточных для репликации условиях. Напишите такой класс, попробуйте.
(Добавление)
UPD, у процедуры есть интерфейс, но примерно такого метафорического порядка как если вас подключить не к колбасе с хлебом, а к аппарату закачивающему в вены все необходимые питательные вещества.