Ethereal писал(а):
Развернул бы эту свою мысль
Из "заметок":
Я знаю три пути использования ООП:
Первый путь - классический. Представления мира, в котором живет программа, в виде строгой иерархии "объектов". Если один объект является частью другого, считается, что в реальном мире этому соответствует связь "part_of" - "крыло - часть птицы", если же объект наследуется от другого - "is_a" - "аист тоже птица" (и значит, у него тоже есть крылья). По идее, такой подход должен давать возможность программе свободно ориентироваться в сложном мире и писаться на естественном языке.
Но, ловушка здесь в прилагательном "строгая" в первой строке. Допустим, я построил эту самую иерархию и написал нужную мне программу. И тут, как обычно, мне понадобилось ее изменить. Фигушки!
Во-первых, т.к моя иерархия изначально "глубоко продуманная", то как я заставлю себя ее перекроить? Не то, чтобы жалко, но просто мозги так не повернуть, чтоб "систему мира" переделать.
Во-вторых, во всех существующих системах ООП, переделка "мира" вещь практически неосуществимая, вызывающая лавинообразный рост ошибок.
Поэтому первый путь, столь любимый классиками, в дикой природе практически не встречается.
Второй путь - быдлокодерский. Как "современный программист" решает задачу? Он ищет подходящую библиотеку. А для удобства применения сложных библиотек тупыми кодерами, первые естественно снабдить этой самой, описанной выше "иерархией".
"Найти в окне X кнопочку Y и запретить ее нажатие" == X.Y.ЗАПРЕТИТЬ().
"Сделать еще такую же кнопочку, но разместить левее" == Z-КЛАСС УНАСЛЕДОВАТЬ-ОТ Y-КЛАСС; Z-КЛАСС:РИСОВАТЬ()={ПРЕДОК.РИСОВАТЬ(); ПРЕДОК.СДВИНУТЬ-ВЛЕВО();}; Z=НОВЫЙ-ОБЪЕКТ Z-КЛАСС;"
Как-то так...
И многие "соврменные бейсики" этот механизм в себе имеют. Еще один стимул применения подобной схемы: вся привычная визуальная фигня - окошки, рамочки, кнопочки, прокрутки и менюшки - еще в 70-е годы прошлого века была создана объектно-ориентированной. И остается такой по настоящее время.
Третий путь - обфускационный - "чтоб как у людей". Просто группирование разнообразных данных, а, если поднапрячься, и кода, в одном месте. Чтоб было! Как это работает, см. -
http://gudleifr.forum2x2.ru/t18-topic. Доходит до смешного - "объектные программисты" утверждают, что правильные отступы в "елочках" (избыточно вложенных вариантах) и "матрешках" (избыточно вложенных циклах) позволяют им понимать программу не читая (!), а только бегло просматривая.